DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00275_AAD_S_000015_PKG

Source


1 PACKAGE BODY XLA_00275_AAD_S_000015_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_000015_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Federal Projects AAD                                   |
14 |      Code    : FV_PROJECTS_AAD                                        |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 06-11-2008 at 02:11:22 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_000015_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_000015_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_000015_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
263 
260          ,p_module   => l_log_module);
261 
262     END IF;
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(
361                                                      p_source_code
362                                                    , p_source_type_code
363                                                    , p_source_application_id
364                                                      )
365                         ,p_token_4                 => 'PRODUCT_NAME'
366                         ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
367                         ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
368                         ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
369                         ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
370         );
371       IF (C_LEVEL_ERROR >= g_log_level) THEN
372                          trace
373                             (p_msg      => 'ERROR: XLA_AP_FLEX_VALUE_MEANING'
374                             ,p_level    => C_LEVEL_ERROR
375                             ,p_module   => l_log_module);
376      END IF;
377  END CASE;
378 --
379 END IF;
380 --
381 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
382 
383       trace
384          (p_msg      => 'return value. meaning = '||l_meaning_meaning
385          ,p_level    => C_LEVEL_PROCEDURE
386          ,p_module   => l_log_module);
387 
388       trace
389          (p_msg      => 'END of GetMeaning'
390          ,p_level    => C_LEVEL_PROCEDURE
391          ,p_module   => l_log_module);
392 END IF;
393 --
394 xla_ae_sources_pkg.g_array_meaning := l_array_meaning ;
395 --
396 RETURN l_meaning_meaning ;
397 --
398 EXCEPTION
399 WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN
400  --
401       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
405                 ,p_token_1                 => 'VALUE_SET_NAME'
402       xla_accounting_err_pkg.build_message
403                 (p_appli_s_name            => 'XLA'
404                 ,p_msg_name                => 'XLA_AP_FLEX_VALUE_MEANING'
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_000015_PKG.GetMeaning');
435 END GetMeaning;
436 --
437 
438 ---------------------------------------
439 --
440 -- PRIVATE FUNCTION
441 --         AcctDerRule_1
442 --
443 ---------------------------------------
444 FUNCTION AcctDerRule_1 (
445   p_application_id              IN NUMBER
446 , p_ae_header_id                IN NUMBER
447 , p_side                        IN VARCHAR2 
448 --Event Revenue CCID
449  , p_source_1            IN NUMBER
450 , x_transaction_coa_id         OUT NOCOPY NUMBER
451 , x_accounting_coa_id          OUT NOCOPY NUMBER
452 , x_value_type_code            OUT NOCOPY VARCHAR2
453 )
454 RETURN NUMBER
455 IS
456 l_component_type       VARCHAR2(80)  ;
457 l_component_code       VARCHAR2(30)  ;
458 l_component_type_code  VARCHAR2(1)   ;
459 l_component_appl_id    INTEGER       ;
460 l_amb_context_code     VARCHAR2(30)  ;
461 l_log_module           VARCHAR2(240) ;
462 l_output_value         NUMBER        ;
463 BEGIN
464 IF g_log_enabled THEN
465       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_1';
466 END IF;
467 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
468       trace
469          (p_msg      => 'BEGIN of AcctDerRule_1'
470          ,p_level    => C_LEVEL_PROCEDURE
471          ,p_module   => l_log_module);
472 END IF;
473 --
474 l_component_type         := 'AMB_ADR';
475 l_component_code         := 'EVENT_REVENUE_RULE';
476 l_component_type_code    := 'S';
477 l_component_appl_id      :=  275;
478 l_amb_context_code       := 'DEFAULT';
479 x_transaction_coa_id     :=  null;
480 x_accounting_coa_id      :=  null;
481 --
482 
483  --
484   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
485       trace
486          (p_msg      => 'END of AcctDerRule_1'
487          ,p_level    => C_LEVEL_PROCEDURE
488          ,p_module   => l_log_module);
489   END IF;
490   x_value_type_code := 'S';
491   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_1));
492   RETURN l_output_value;
493 
494 --
495 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
496       trace
497          (p_msg      => 'END of AcctDerRule_1(invalid)'
498          ,p_level    => C_LEVEL_PROCEDURE
499          ,p_module   => l_log_module);
500 END IF;
501 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
502 x_value_type_code := null;
503 l_output_value    := null;
504 xla_accounting_err_pkg.build_message
505                  (p_appli_s_name            => 'XLA'
506                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
507                  ,p_token_1                 => 'COMPONENT_NAME'
508                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
509                                                             l_component_type
510                                                           , l_component_code
511                                                           , l_component_type_code
512                                                           , l_component_appl_id
513                                                           , l_amb_context_code
514                                                           )
515                  ,p_token_2                 => 'OWNER'
516                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
517                                                         'XLA_OWNER_TYPE'
518                                                         ,l_component_type_code
519                                                         )
520                  ,p_token_3                 => 'PAD_NAME'
521                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
522                  ,p_token_4                 => 'PAD_OWNER'
523                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
524                                                         'XLA_OWNER_TYPE'
525                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
529                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
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
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_000015_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 , p_override_seg_flag          IN VARCHAR2  
553 , x_transaction_coa_id         OUT NOCOPY NUMBER
554 , x_accounting_coa_id          OUT NOCOPY NUMBER
555 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
556 , x_flex_value_set_id          OUT NOCOPY NUMBER
557 , x_value_type_code            OUT NOCOPY VARCHAR2
558 , x_value_combination_id       OUT NOCOPY NUMBER
559 , x_value_segment_code         OUT NOCOPY VARCHAR2
560 )
561 RETURN VARCHAR2
562 IS
563 l_component_type       VARCHAR2(80)  ;
564 l_component_code       VARCHAR2(30)  ;
565 l_component_type_code  VARCHAR2(1)   ;
566 l_component_appl_id    INTEGER       ;
567 l_amb_context_code     VARCHAR2(30)  ;
568 l_log_module           VARCHAR2(240) ;
569 l_output_value         VARCHAR2(30)  ;
570 BEGIN
571 IF g_log_enabled THEN
572       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_2';
573 END IF;
574 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
575 
576       trace
577          (p_msg      => 'BEGIN of AcctDerRule_2'
578          ,p_level    => C_LEVEL_PROCEDURE
579          ,p_module   => l_log_module);
580 
581 END IF;
582 
583 l_component_type         := 'AMB_ADR';
584 l_component_code         := 'FV_422X01_PROJECTS';
585 l_component_type_code    := 'S';
586 l_component_appl_id      :=  275;
587 l_amb_context_code       := 'DEFAULT';
588 x_transaction_coa_id     :=  null;
589 x_accounting_coa_id      :=  null;
590 x_flexfield_segment_code :=  null;
591 x_flex_value_set_id      := 1009988 ;
592 
593 
594 --
595   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
596 
597       trace
598          (p_msg      => 'END of AcctDerRule_2'
599          ,p_level    => C_LEVEL_PROCEDURE
600          ,p_module   => l_log_module);
601 
602   END IF;
603   x_value_combination_id  :=  null ;
604   x_value_segment_code    :=  null ;
605   x_value_type_code       := 'C';
606   l_output_value          := '422101';
607   RETURN l_output_value;
608 
609 --
610   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
611 
612       trace
613          (p_msg      => 'END of AcctDerRule_2'
614          ,p_level    => C_LEVEL_PROCEDURE
615          ,p_module   => l_log_module);
616 
617   END IF;
618   x_value_combination_id  :=  null ;
619   x_value_segment_code    :=  null ;
620   x_value_type_code       := 'C';
621   l_output_value          := '422201';
622   RETURN l_output_value;
623 
624 
625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
626 
627       trace
628          (p_msg      => 'END of AcctDerRule_2(invalid)'
629          ,p_level    => C_LEVEL_PROCEDURE
630          ,p_module   => l_log_module);
631 
632 END IF;
633 
634 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
635 x_value_combination_id  := null;
636 x_value_segment_code    := null;
637 x_value_type_code       := null;
638 l_output_value          := null;
639 xla_accounting_err_pkg.build_message
640                  (p_appli_s_name            => 'XLA'
641                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
642                  ,p_token_1                 => 'COMPONENT_NAME'
643                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
644                                                             l_component_type
645                                                           , l_component_code
646                                                           , l_component_type_code
647                                                           , l_component_appl_id
648                                                           , l_amb_context_code
649                                                           )
650                  ,p_token_2                 => 'OWNER'
651                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
652                                                         'XLA_OWNER_TYPE'
653                                                         ,l_component_type_code
654                                                         )
655                  ,p_token_3                 => 'PAD_NAME'
656                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
657                  ,p_token_4                 => 'PAD_OWNER'
658                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
659                                                         'XLA_OWNER_TYPE'
660                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
661                                                         )
662                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
666 );
663                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
664                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
665                  ,p_ae_header_id            => NULL
667 RETURN l_output_value;
668 EXCEPTION
669   WHEN xla_exceptions_pkg.application_exception THEN
670       RAISE;
671   WHEN OTHERS THEN
672        xla_exceptions_pkg.raise_message
673            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_2');
674 END AcctDerRule_2;
675 --
676 
677 ---------------------------------------
678 --
679 -- PRIVATE FUNCTION
680 --         AcctDerRule_3
681 --
682 ---------------------------------------
683 FUNCTION AcctDerRule_3 (
684   p_application_id             IN NUMBER
685 , p_ae_header_id               IN NUMBER
686 , p_side                       IN VARCHAR2
687 , p_override_seg_flag          IN VARCHAR2  
688 , x_transaction_coa_id         OUT NOCOPY NUMBER
689 , x_accounting_coa_id          OUT NOCOPY NUMBER
690 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
691 , x_flex_value_set_id          OUT NOCOPY NUMBER
692 , x_value_type_code            OUT NOCOPY VARCHAR2
693 , x_value_combination_id       OUT NOCOPY NUMBER
694 , x_value_segment_code         OUT NOCOPY VARCHAR2
695 )
696 RETURN VARCHAR2
697 IS
698 l_component_type       VARCHAR2(80)  ;
699 l_component_code       VARCHAR2(30)  ;
700 l_component_type_code  VARCHAR2(1)   ;
701 l_component_appl_id    INTEGER       ;
702 l_amb_context_code     VARCHAR2(30)  ;
703 l_log_module           VARCHAR2(240) ;
704 l_output_value         VARCHAR2(30)  ;
705 BEGIN
706 IF g_log_enabled THEN
707       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_3';
708 END IF;
709 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
710 
711       trace
712          (p_msg      => 'BEGIN of AcctDerRule_3'
713          ,p_level    => C_LEVEL_PROCEDURE
714          ,p_module   => l_log_module);
715 
716 END IF;
717 
718 l_component_type         := 'AMB_ADR';
719 l_component_code         := 'FV_425X01_PROJECTS';
720 l_component_type_code    := 'S';
721 l_component_appl_id      :=  275;
722 l_amb_context_code       := 'DEFAULT';
723 x_transaction_coa_id     :=  null;
724 x_accounting_coa_id      :=  null;
725 x_flexfield_segment_code :=  null;
726 x_flex_value_set_id      := 1009988 ;
727 
728 
729 --
730   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
731 
732       trace
733          (p_msg      => 'END of AcctDerRule_3'
734          ,p_level    => C_LEVEL_PROCEDURE
735          ,p_module   => l_log_module);
736 
737   END IF;
738   x_value_combination_id  :=  null ;
739   x_value_segment_code    :=  null ;
740   x_value_type_code       := 'C';
741   l_output_value          := '425101';
742   RETURN l_output_value;
743 
744 --
745   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
746 
747       trace
748          (p_msg      => 'END of AcctDerRule_3'
749          ,p_level    => C_LEVEL_PROCEDURE
750          ,p_module   => l_log_module);
751 
752   END IF;
753   x_value_combination_id  :=  null ;
754   x_value_segment_code    :=  null ;
755   x_value_type_code       := 'C';
756   l_output_value          := '425201';
757   RETURN l_output_value;
758 
759 
760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
761 
762       trace
763          (p_msg      => 'END of AcctDerRule_3(invalid)'
764          ,p_level    => C_LEVEL_PROCEDURE
765          ,p_module   => l_log_module);
766 
767 END IF;
768 
769 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
770 x_value_combination_id  := null;
771 x_value_segment_code    := null;
772 x_value_type_code       := null;
773 l_output_value          := null;
774 xla_accounting_err_pkg.build_message
775                  (p_appli_s_name            => 'XLA'
776                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
777                  ,p_token_1                 => 'COMPONENT_NAME'
778                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
779                                                             l_component_type
780                                                           , l_component_code
781                                                           , l_component_type_code
782                                                           , l_component_appl_id
783                                                           , l_amb_context_code
784                                                           )
785                  ,p_token_2                 => 'OWNER'
786                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
787                                                         'XLA_OWNER_TYPE'
788                                                         ,l_component_type_code
789                                                         )
790                  ,p_token_3                 => 'PAD_NAME'
791                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
792                  ,p_token_4                 => 'PAD_OWNER'
793                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
794                                                         'XLA_OWNER_TYPE'
795                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
796                                                         )
797                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
798                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
799                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
803 EXCEPTION
800                  ,p_ae_header_id            => NULL
801 );
802 RETURN l_output_value;
804   WHEN xla_exceptions_pkg.application_exception THEN
805       RAISE;
806   WHEN OTHERS THEN
807        xla_exceptions_pkg.raise_message
808            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_3');
809 END AcctDerRule_3;
810 --
811 
812 ---------------------------------------
813 --
814 -- PRIVATE FUNCTION
815 --         AcctDerRule_4
816 --
817 ---------------------------------------
818 FUNCTION AcctDerRule_4 (
819   p_application_id             IN NUMBER
820 , p_ae_header_id               IN NUMBER
821 , p_side                       IN VARCHAR2
822 , p_override_seg_flag          IN VARCHAR2  
823 , x_transaction_coa_id         OUT NOCOPY NUMBER
824 , x_accounting_coa_id          OUT NOCOPY NUMBER
825 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
826 , x_flex_value_set_id          OUT NOCOPY NUMBER
827 , x_value_type_code            OUT NOCOPY VARCHAR2
828 , x_value_combination_id       OUT NOCOPY NUMBER
829 , x_value_segment_code         OUT NOCOPY VARCHAR2
830 )
831 RETURN VARCHAR2
832 IS
833 l_component_type       VARCHAR2(80)  ;
834 l_component_code       VARCHAR2(30)  ;
835 l_component_type_code  VARCHAR2(1)   ;
836 l_component_appl_id    INTEGER       ;
837 l_amb_context_code     VARCHAR2(30)  ;
838 l_log_module           VARCHAR2(240) ;
839 l_output_value         VARCHAR2(30)  ;
840 BEGIN
841 IF g_log_enabled THEN
842       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_4';
843 END IF;
844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
845 
846       trace
847          (p_msg      => 'BEGIN of AcctDerRule_4'
848          ,p_level    => C_LEVEL_PROCEDURE
849          ,p_module   => l_log_module);
850 
851 END IF;
852 
853 l_component_type         := 'AMB_ADR';
854 l_component_code         := 'FV_461001_PROJECTS';
855 l_component_type_code    := 'S';
856 l_component_appl_id      :=  275;
857 l_amb_context_code       := 'DEFAULT';
858 x_transaction_coa_id     :=  null;
859 x_accounting_coa_id      :=  null;
860 x_flexfield_segment_code :=  null;
861 x_flex_value_set_id      := 1009988 ;
862 
863 
864 --
865   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
866 
867       trace
868          (p_msg      => 'END of AcctDerRule_4'
869          ,p_level    => C_LEVEL_PROCEDURE
870          ,p_module   => l_log_module);
871 
872   END IF;
873   x_value_combination_id  :=  null ;
874   x_value_segment_code    :=  null ;
875   x_value_type_code       := 'C';
876   l_output_value          := '461002';
877   RETURN l_output_value;
878 
879 
880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
881 
882       trace
883          (p_msg      => 'END of AcctDerRule_4(invalid)'
884          ,p_level    => C_LEVEL_PROCEDURE
885          ,p_module   => l_log_module);
886 
887 END IF;
888 
889 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
890 x_value_combination_id  := null;
891 x_value_segment_code    := null;
892 x_value_type_code       := null;
893 l_output_value          := null;
894 xla_accounting_err_pkg.build_message
895                  (p_appli_s_name            => 'XLA'
896                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
897                  ,p_token_1                 => 'COMPONENT_NAME'
898                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
899                                                             l_component_type
900                                                           , l_component_code
901                                                           , l_component_type_code
902                                                           , l_component_appl_id
903                                                           , l_amb_context_code
904                                                           )
905                  ,p_token_2                 => 'OWNER'
906                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
907                                                         'XLA_OWNER_TYPE'
908                                                         ,l_component_type_code
909                                                         )
910                  ,p_token_3                 => 'PAD_NAME'
911                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
912                  ,p_token_4                 => 'PAD_OWNER'
913                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
914                                                         'XLA_OWNER_TYPE'
915                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
916                                                         )
917                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
918                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
919                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
920                  ,p_ae_header_id            => NULL
921 );
922 RETURN l_output_value;
923 EXCEPTION
924   WHEN xla_exceptions_pkg.application_exception THEN
925       RAISE;
926   WHEN OTHERS THEN
927        xla_exceptions_pkg.raise_message
928            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_4');
929 END AcctDerRule_4;
930 --
931 
932 ---------------------------------------
933 --
934 -- PRIVATE FUNCTION
935 --         AcctDerRule_5
936 --
937 ---------------------------------------
938 FUNCTION AcctDerRule_5 (
939   p_application_id             IN NUMBER
943 , x_transaction_coa_id         OUT NOCOPY NUMBER
940 , p_ae_header_id               IN NUMBER
941 , p_side                       IN VARCHAR2
942 , p_override_seg_flag          IN VARCHAR2  
944 , x_accounting_coa_id          OUT NOCOPY NUMBER
945 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
946 , x_flex_value_set_id          OUT NOCOPY NUMBER
947 , x_value_type_code            OUT NOCOPY VARCHAR2
948 , x_value_combination_id       OUT NOCOPY NUMBER
949 , x_value_segment_code         OUT NOCOPY VARCHAR2
950 )
951 RETURN VARCHAR2
952 IS
953 l_component_type       VARCHAR2(80)  ;
954 l_component_code       VARCHAR2(30)  ;
955 l_component_type_code  VARCHAR2(1)   ;
956 l_component_appl_id    INTEGER       ;
957 l_amb_context_code     VARCHAR2(30)  ;
958 l_log_module           VARCHAR2(240) ;
959 l_output_value         VARCHAR2(30)  ;
960 BEGIN
961 IF g_log_enabled THEN
962       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_5';
963 END IF;
964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
965 
966       trace
967          (p_msg      => 'BEGIN of AcctDerRule_5'
968          ,p_level    => C_LEVEL_PROCEDURE
969          ,p_module   => l_log_module);
970 
971 END IF;
972 
973 l_component_type         := 'AMB_ADR';
974 l_component_code         := 'FV_490201_PROJECTS';
975 l_component_type_code    := 'S';
976 l_component_appl_id      :=  275;
977 l_amb_context_code       := 'DEFAULT';
978 x_transaction_coa_id     :=  null;
979 x_accounting_coa_id      :=  null;
980 x_flexfield_segment_code :=  null;
981 x_flex_value_set_id      := 1009988 ;
982 
983 
984 --
985   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
986 
987       trace
988          (p_msg      => 'END of AcctDerRule_5'
989          ,p_level    => C_LEVEL_PROCEDURE
990          ,p_module   => l_log_module);
991 
992   END IF;
993   x_value_combination_id  :=  null ;
994   x_value_segment_code    :=  null ;
995   x_value_type_code       := 'C';
996   l_output_value          := '490201';
997   RETURN l_output_value;
998 
999 
1000 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1001 
1002       trace
1003          (p_msg      => 'END of AcctDerRule_5(invalid)'
1004          ,p_level    => C_LEVEL_PROCEDURE
1005          ,p_module   => l_log_module);
1006 
1007 END IF;
1008 
1009 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1010 x_value_combination_id  := null;
1011 x_value_segment_code    := null;
1012 x_value_type_code       := null;
1013 l_output_value          := null;
1014 xla_accounting_err_pkg.build_message
1015                  (p_appli_s_name            => 'XLA'
1016                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1017                  ,p_token_1                 => 'COMPONENT_NAME'
1018                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1019                                                             l_component_type
1020                                                           , l_component_code
1021                                                           , l_component_type_code
1022                                                           , l_component_appl_id
1023                                                           , l_amb_context_code
1024                                                           )
1025                  ,p_token_2                 => 'OWNER'
1026                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1027                                                         'XLA_OWNER_TYPE'
1028                                                         ,l_component_type_code
1029                                                         )
1030                  ,p_token_3                 => 'PAD_NAME'
1031                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1032                  ,p_token_4                 => 'PAD_OWNER'
1033                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1034                                                         'XLA_OWNER_TYPE'
1035                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1036                                                         )
1037                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1038                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1039                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1040                  ,p_ae_header_id            => NULL
1041 );
1042 RETURN l_output_value;
1043 EXCEPTION
1044   WHEN xla_exceptions_pkg.application_exception THEN
1045       RAISE;
1046   WHEN OTHERS THEN
1047        xla_exceptions_pkg.raise_message
1048            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_5');
1049 END AcctDerRule_5;
1050 --
1051 
1052 ---------------------------------------
1053 --
1054 -- PRIVATE FUNCTION
1055 --         AcctDerRule_6
1056 --
1057 ---------------------------------------
1058 FUNCTION AcctDerRule_6 (
1059   p_application_id             IN NUMBER
1060 , p_ae_header_id               IN NUMBER
1061 , p_side                       IN VARCHAR2
1062 , p_override_seg_flag          IN VARCHAR2 
1063 --PO Distribution ID
1064  , p_source_2            IN NUMBER
1065 , x_transaction_coa_id         OUT NOCOPY NUMBER
1066 , x_accounting_coa_id          OUT NOCOPY NUMBER
1067 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1068 , x_flex_value_set_id          OUT NOCOPY NUMBER
1069 , x_value_type_code            OUT NOCOPY VARCHAR2
1070 , x_value_combination_id       OUT NOCOPY NUMBER
1071 , x_value_segment_code         OUT NOCOPY VARCHAR2
1072 )
1073 RETURN VARCHAR2
1074 IS
1075 l_component_type       VARCHAR2(80)  ;
1079 l_amb_context_code     VARCHAR2(30)  ;
1076 l_component_code       VARCHAR2(30)  ;
1077 l_component_type_code  VARCHAR2(1)   ;
1078 l_component_appl_id    INTEGER       ;
1080 l_log_module           VARCHAR2(240) ;
1081 l_output_value         VARCHAR2(30)  ;
1082 BEGIN
1083 IF g_log_enabled THEN
1084       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_6';
1085 END IF;
1086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1087 
1088       trace
1089          (p_msg      => 'BEGIN of AcctDerRule_6'
1090          ,p_level    => C_LEVEL_PROCEDURE
1091          ,p_module   => l_log_module);
1092 
1093 END IF;
1094 
1095 l_component_type         := 'AMB_ADR';
1096 l_component_code         := 'FV_4XXX_PROJECTS';
1097 l_component_type_code    := 'S';
1098 l_component_appl_id      :=  275;
1099 l_amb_context_code       := 'DEFAULT';
1100 x_transaction_coa_id     :=  null;
1101 x_accounting_coa_id      :=  null;
1102 x_flexfield_segment_code :=  null;
1103 x_flex_value_set_id      := 1009988 ;
1104 
1105 
1106  IF NVL(p_source_2,9E125) =  0
1107  THEN 
1108 --
1109   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1110 
1111       trace
1112          (p_msg      => 'END of AcctDerRule_6'
1113          ,p_level    => C_LEVEL_PROCEDURE
1114          ,p_module   => l_log_module);
1115 
1116   END IF;
1117   x_value_combination_id  :=  null ;
1118   x_value_segment_code    :=  null ;
1119   x_value_type_code       := 'C';
1120   l_output_value          := '461002';
1121   RETURN l_output_value;
1122 
1123  ELSIF NVL(p_source_2,9E125) <>  0
1124  THEN 
1125 --
1126   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1127 
1128       trace
1129          (p_msg      => 'END of AcctDerRule_6'
1130          ,p_level    => C_LEVEL_PROCEDURE
1131          ,p_module   => l_log_module);
1132 
1133   END IF;
1134   x_value_combination_id  :=  null ;
1135   x_value_segment_code    :=  null ;
1136   x_value_type_code       := 'C';
1137   l_output_value          := '480101';
1138   RETURN l_output_value;
1139 
1140  ELSE 
1141     IF p_override_seg_flag = 'Y' THEN 
1142        RETURN '#$NO_OVERRIDE#$';
1143     END IF;
1144  END IF;
1145 
1146 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1147 
1148       trace
1149          (p_msg      => 'END of AcctDerRule_6(invalid)'
1150          ,p_level    => C_LEVEL_PROCEDURE
1151          ,p_module   => l_log_module);
1152 
1153 END IF;
1154 
1155 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1156 x_value_combination_id  := null;
1157 x_value_segment_code    := null;
1158 x_value_type_code       := null;
1159 l_output_value          := null;
1160 xla_accounting_err_pkg.build_message
1161                  (p_appli_s_name            => 'XLA'
1162                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1163                  ,p_token_1                 => 'COMPONENT_NAME'
1164                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1165                                                             l_component_type
1166                                                           , l_component_code
1167                                                           , l_component_type_code
1168                                                           , l_component_appl_id
1169                                                           , l_amb_context_code
1170                                                           )
1171                  ,p_token_2                 => 'OWNER'
1172                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1173                                                         'XLA_OWNER_TYPE'
1174                                                         ,l_component_type_code
1175                                                         )
1176                  ,p_token_3                 => 'PAD_NAME'
1177                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1178                  ,p_token_4                 => 'PAD_OWNER'
1179                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1180                                                         'XLA_OWNER_TYPE'
1181                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1182                                                         )
1183                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1184                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1185                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1186                  ,p_ae_header_id            => NULL
1187 );
1188 RETURN l_output_value;
1189 EXCEPTION
1190   WHEN xla_exceptions_pkg.application_exception THEN
1191       RAISE;
1192   WHEN OTHERS THEN
1193        xla_exceptions_pkg.raise_message
1194            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_6');
1195 END AcctDerRule_6;
1196 --
1197 
1198 ---------------------------------------
1199 --
1200 -- PRIVATE FUNCTION
1201 --         AcctDerRule_7
1202 --
1203 ---------------------------------------
1204 FUNCTION AcctDerRule_7 (
1205   p_application_id             IN NUMBER
1206 , p_ae_header_id               IN NUMBER
1207 , p_side                       IN VARCHAR2
1208 , p_override_seg_flag          IN VARCHAR2  
1209 , x_transaction_coa_id         OUT NOCOPY NUMBER
1210 , x_accounting_coa_id          OUT NOCOPY NUMBER
1211 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1212 , x_flex_value_set_id          OUT NOCOPY NUMBER
1213 , x_value_type_code            OUT NOCOPY VARCHAR2
1214 , x_value_combination_id       OUT NOCOPY NUMBER
1215 , x_value_segment_code         OUT NOCOPY VARCHAR2
1216 )
1217 RETURN VARCHAR2
1221 l_component_type_code  VARCHAR2(1)   ;
1218 IS
1219 l_component_type       VARCHAR2(80)  ;
1220 l_component_code       VARCHAR2(30)  ;
1222 l_component_appl_id    INTEGER       ;
1223 l_amb_context_code     VARCHAR2(30)  ;
1224 l_log_module           VARCHAR2(240) ;
1225 l_output_value         VARCHAR2(30)  ;
1226 BEGIN
1227 IF g_log_enabled THEN
1228       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_7';
1229 END IF;
1230 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1231 
1232       trace
1233          (p_msg      => 'BEGIN of AcctDerRule_7'
1234          ,p_level    => C_LEVEL_PROCEDURE
1235          ,p_module   => l_log_module);
1236 
1237 END IF;
1238 
1239 l_component_type         := 'AMB_ADR';
1240 l_component_code         := 'PA_421001';
1241 l_component_type_code    := 'S';
1242 l_component_appl_id      :=  275;
1243 l_amb_context_code       := 'DEFAULT';
1244 x_transaction_coa_id     :=  null;
1245 x_accounting_coa_id      :=  null;
1246 x_flexfield_segment_code :=  null;
1247 x_flex_value_set_id      := 1009988 ;
1248 
1249 
1250 --
1251   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1252 
1253       trace
1254          (p_msg      => 'END of AcctDerRule_7'
1255          ,p_level    => C_LEVEL_PROCEDURE
1256          ,p_module   => l_log_module);
1257 
1258   END IF;
1259   x_value_combination_id  :=  null ;
1260   x_value_segment_code    :=  null ;
1261   x_value_type_code       := 'C';
1262   l_output_value          := '421001';
1263   RETURN l_output_value;
1264 
1265 
1266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1267 
1268       trace
1269          (p_msg      => 'END of AcctDerRule_7(invalid)'
1270          ,p_level    => C_LEVEL_PROCEDURE
1271          ,p_module   => l_log_module);
1272 
1273 END IF;
1274 
1275 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1276 x_value_combination_id  := null;
1277 x_value_segment_code    := null;
1278 x_value_type_code       := null;
1279 l_output_value          := null;
1280 xla_accounting_err_pkg.build_message
1281                  (p_appli_s_name            => 'XLA'
1282                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1283                  ,p_token_1                 => 'COMPONENT_NAME'
1284                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1285                                                             l_component_type
1286                                                           , l_component_code
1287                                                           , l_component_type_code
1288                                                           , l_component_appl_id
1289                                                           , l_amb_context_code
1290                                                           )
1291                  ,p_token_2                 => 'OWNER'
1292                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1293                                                         'XLA_OWNER_TYPE'
1294                                                         ,l_component_type_code
1295                                                         )
1296                  ,p_token_3                 => 'PAD_NAME'
1297                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1298                  ,p_token_4                 => 'PAD_OWNER'
1299                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1300                                                         'XLA_OWNER_TYPE'
1301                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1302                                                         )
1303                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1304                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1305                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1306                  ,p_ae_header_id            => NULL
1307 );
1308 RETURN l_output_value;
1309 EXCEPTION
1310   WHEN xla_exceptions_pkg.application_exception THEN
1311       RAISE;
1312   WHEN OTHERS THEN
1313        xla_exceptions_pkg.raise_message
1314            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_7');
1315 END AcctDerRule_7;
1316 --
1317 
1318 ---------------------------------------
1319 --
1320 -- PRIVATE FUNCTION
1321 --         AcctDerRule_8
1322 --
1323 ---------------------------------------
1324 FUNCTION AcctDerRule_8 (
1325   p_application_id             IN NUMBER
1326 , p_ae_header_id               IN NUMBER
1327 , p_side                       IN VARCHAR2
1328 , p_override_seg_flag          IN VARCHAR2  
1329 , x_transaction_coa_id         OUT NOCOPY NUMBER
1330 , x_accounting_coa_id          OUT NOCOPY NUMBER
1331 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1332 , x_flex_value_set_id          OUT NOCOPY NUMBER
1333 , x_value_type_code            OUT NOCOPY VARCHAR2
1334 , x_value_combination_id       OUT NOCOPY NUMBER
1335 , x_value_segment_code         OUT NOCOPY VARCHAR2
1336 )
1337 RETURN VARCHAR2
1338 IS
1339 l_component_type       VARCHAR2(80)  ;
1340 l_component_code       VARCHAR2(30)  ;
1341 l_component_type_code  VARCHAR2(1)   ;
1342 l_component_appl_id    INTEGER       ;
1343 l_amb_context_code     VARCHAR2(30)  ;
1344 l_log_module           VARCHAR2(240) ;
1345 l_output_value         VARCHAR2(30)  ;
1346 BEGIN
1347 IF g_log_enabled THEN
1348       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_8';
1349 END IF;
1350 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1351 
1352       trace
1353          (p_msg      => 'BEGIN of AcctDerRule_8'
1354          ,p_level    => C_LEVEL_PROCEDURE
1355          ,p_module   => l_log_module);
1356 
1360 l_component_code         := 'PA_421001-C184';
1357 END IF;
1358 
1359 l_component_type         := 'AMB_ADR';
1361 l_component_type_code    := 'S';
1362 l_component_appl_id      :=  275;
1363 l_amb_context_code       := 'DEFAULT';
1364 x_transaction_coa_id     :=  null;
1365 x_accounting_coa_id      :=  null;
1366 x_flexfield_segment_code :=  null;
1367 x_flex_value_set_id      := 1009988 ;
1368 
1369 
1370 --
1371   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1372 
1373       trace
1374          (p_msg      => 'END of AcctDerRule_8'
1375          ,p_level    => C_LEVEL_PROCEDURE
1376          ,p_module   => l_log_module);
1377 
1378   END IF;
1379   x_value_combination_id  :=  null ;
1380   x_value_segment_code    :=  null ;
1381   x_value_type_code       := 'C';
1382   l_output_value          := '421001';
1383   RETURN l_output_value;
1384 
1385 
1386 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1387 
1388       trace
1389          (p_msg      => 'END of AcctDerRule_8(invalid)'
1390          ,p_level    => C_LEVEL_PROCEDURE
1391          ,p_module   => l_log_module);
1392 
1393 END IF;
1394 
1395 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1396 x_value_combination_id  := null;
1397 x_value_segment_code    := null;
1398 x_value_type_code       := null;
1399 l_output_value          := null;
1400 xla_accounting_err_pkg.build_message
1401                  (p_appli_s_name            => 'XLA'
1402                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1403                  ,p_token_1                 => 'COMPONENT_NAME'
1404                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1405                                                             l_component_type
1406                                                           , l_component_code
1407                                                           , l_component_type_code
1408                                                           , l_component_appl_id
1409                                                           , l_amb_context_code
1410                                                           )
1411                  ,p_token_2                 => 'OWNER'
1412                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1413                                                         'XLA_OWNER_TYPE'
1414                                                         ,l_component_type_code
1415                                                         )
1416                  ,p_token_3                 => 'PAD_NAME'
1417                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1418                  ,p_token_4                 => 'PAD_OWNER'
1419                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1420                                                         'XLA_OWNER_TYPE'
1421                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1422                                                         )
1423                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1424                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1425                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1426                  ,p_ae_header_id            => NULL
1427 );
1428 RETURN l_output_value;
1429 EXCEPTION
1430   WHEN xla_exceptions_pkg.application_exception THEN
1431       RAISE;
1432   WHEN OTHERS THEN
1433        xla_exceptions_pkg.raise_message
1434            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_8');
1435 END AcctDerRule_8;
1436 --
1437 
1438 ---------------------------------------
1439 --
1440 -- PRIVATE FUNCTION
1441 --         AcctDerRule_9
1442 --
1443 ---------------------------------------
1444 FUNCTION AcctDerRule_9 (
1445   p_application_id             IN NUMBER
1446 , p_ae_header_id               IN NUMBER
1447 , p_side                       IN VARCHAR2
1448 , p_override_seg_flag          IN VARCHAR2  
1449 , x_transaction_coa_id         OUT NOCOPY NUMBER
1450 , x_accounting_coa_id          OUT NOCOPY NUMBER
1451 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1452 , x_flex_value_set_id          OUT NOCOPY NUMBER
1453 , x_value_type_code            OUT NOCOPY VARCHAR2
1454 , x_value_combination_id       OUT NOCOPY NUMBER
1455 , x_value_segment_code         OUT NOCOPY VARCHAR2
1456 )
1457 RETURN VARCHAR2
1458 IS
1459 l_component_type       VARCHAR2(80)  ;
1460 l_component_code       VARCHAR2(30)  ;
1461 l_component_type_code  VARCHAR2(1)   ;
1462 l_component_appl_id    INTEGER       ;
1463 l_amb_context_code     VARCHAR2(30)  ;
1464 l_log_module           VARCHAR2(240) ;
1465 l_output_value         VARCHAR2(30)  ;
1466 BEGIN
1467 IF g_log_enabled THEN
1468       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_9';
1469 END IF;
1470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1471 
1472       trace
1473          (p_msg      => 'BEGIN of AcctDerRule_9'
1474          ,p_level    => C_LEVEL_PROCEDURE
1475          ,p_module   => l_log_module);
1476 
1477 END IF;
1478 
1479 l_component_type         := 'AMB_ADR';
1480 l_component_code         := 'PA_4221';
1481 l_component_type_code    := 'S';
1482 l_component_appl_id      :=  275;
1483 l_amb_context_code       := 'DEFAULT';
1484 x_transaction_coa_id     :=  null;
1485 x_accounting_coa_id      :=  null;
1486 x_flexfield_segment_code :=  null;
1487 x_flex_value_set_id      := 1009988 ;
1488 
1489 
1490 --
1491   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1492 
1493       trace
1494          (p_msg      => 'END of AcctDerRule_9'
1495          ,p_level    => C_LEVEL_PROCEDURE
1496          ,p_module   => l_log_module);
1497 
1501   x_value_type_code       := 'C';
1498   END IF;
1499   x_value_combination_id  :=  null ;
1500   x_value_segment_code    :=  null ;
1502   l_output_value          := '422101';
1503   RETURN l_output_value;
1504 
1505 
1506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1507 
1508       trace
1509          (p_msg      => 'END of AcctDerRule_9(invalid)'
1510          ,p_level    => C_LEVEL_PROCEDURE
1511          ,p_module   => l_log_module);
1512 
1513 END IF;
1514 
1515 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1516 x_value_combination_id  := null;
1517 x_value_segment_code    := null;
1518 x_value_type_code       := null;
1519 l_output_value          := null;
1520 xla_accounting_err_pkg.build_message
1521                  (p_appli_s_name            => 'XLA'
1522                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1523                  ,p_token_1                 => 'COMPONENT_NAME'
1524                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1525                                                             l_component_type
1526                                                           , l_component_code
1527                                                           , l_component_type_code
1528                                                           , l_component_appl_id
1529                                                           , l_amb_context_code
1530                                                           )
1531                  ,p_token_2                 => 'OWNER'
1532                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1533                                                         'XLA_OWNER_TYPE'
1534                                                         ,l_component_type_code
1535                                                         )
1536                  ,p_token_3                 => 'PAD_NAME'
1537                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1538                  ,p_token_4                 => 'PAD_OWNER'
1539                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1540                                                         'XLA_OWNER_TYPE'
1541                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1542                                                         )
1543                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1544                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1545                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1546                  ,p_ae_header_id            => NULL
1547 );
1548 RETURN l_output_value;
1549 EXCEPTION
1550   WHEN xla_exceptions_pkg.application_exception THEN
1551       RAISE;
1552   WHEN OTHERS THEN
1553        xla_exceptions_pkg.raise_message
1554            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_9');
1555 END AcctDerRule_9;
1556 --
1557 
1558 ---------------------------------------
1559 --
1560 -- PRIVATE FUNCTION
1561 --         AcctDerRule_10
1562 --
1563 ---------------------------------------
1564 FUNCTION AcctDerRule_10 (
1565   p_application_id             IN NUMBER
1566 , p_ae_header_id               IN NUMBER
1567 , p_side                       IN VARCHAR2
1568 , p_override_seg_flag          IN VARCHAR2  
1569 , x_transaction_coa_id         OUT NOCOPY NUMBER
1570 , x_accounting_coa_id          OUT NOCOPY NUMBER
1571 , x_flexfield_segment_code     OUT NOCOPY VARCHAR2
1572 , x_flex_value_set_id          OUT NOCOPY NUMBER
1573 , x_value_type_code            OUT NOCOPY VARCHAR2
1574 , x_value_combination_id       OUT NOCOPY NUMBER
1575 , x_value_segment_code         OUT NOCOPY VARCHAR2
1576 )
1577 RETURN VARCHAR2
1578 IS
1579 l_component_type       VARCHAR2(80)  ;
1580 l_component_code       VARCHAR2(30)  ;
1581 l_component_type_code  VARCHAR2(1)   ;
1582 l_component_appl_id    INTEGER       ;
1583 l_amb_context_code     VARCHAR2(30)  ;
1584 l_log_module           VARCHAR2(240) ;
1585 l_output_value         VARCHAR2(30)  ;
1586 BEGIN
1587 IF g_log_enabled THEN
1588       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_10';
1589 END IF;
1590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1591 
1592       trace
1593          (p_msg      => 'BEGIN of AcctDerRule_10'
1594          ,p_level    => C_LEVEL_PROCEDURE
1595          ,p_module   => l_log_module);
1596 
1597 END IF;
1598 
1599 l_component_type         := 'AMB_ADR';
1600 l_component_code         := 'PA_4222';
1601 l_component_type_code    := 'S';
1602 l_component_appl_id      :=  275;
1603 l_amb_context_code       := 'DEFAULT';
1604 x_transaction_coa_id     :=  null;
1605 x_accounting_coa_id      :=  null;
1606 x_flexfield_segment_code :=  null;
1607 x_flex_value_set_id      := 1009988 ;
1608 
1609 
1610 --
1611   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1612 
1613       trace
1614          (p_msg      => 'END of AcctDerRule_10'
1615          ,p_level    => C_LEVEL_PROCEDURE
1616          ,p_module   => l_log_module);
1617 
1618   END IF;
1619   x_value_combination_id  :=  null ;
1620   x_value_segment_code    :=  null ;
1621   x_value_type_code       := 'C';
1622   l_output_value          := '422201';
1623   RETURN l_output_value;
1624 
1625 
1626 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1627 
1628       trace
1629          (p_msg      => 'END of AcctDerRule_10(invalid)'
1630          ,p_level    => C_LEVEL_PROCEDURE
1631          ,p_module   => l_log_module);
1632 
1633 END IF;
1634 
1635 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1636 x_value_combination_id  := null;
1637 x_value_segment_code    := null;
1641                  (p_appli_s_name            => 'XLA'
1638 x_value_type_code       := null;
1639 l_output_value          := null;
1640 xla_accounting_err_pkg.build_message
1642                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1643                  ,p_token_1                 => 'COMPONENT_NAME'
1644                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1645                                                             l_component_type
1646                                                           , l_component_code
1647                                                           , l_component_type_code
1648                                                           , l_component_appl_id
1649                                                           , l_amb_context_code
1650                                                           )
1651                  ,p_token_2                 => 'OWNER'
1652                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1653                                                         'XLA_OWNER_TYPE'
1654                                                         ,l_component_type_code
1655                                                         )
1656                  ,p_token_3                 => 'PAD_NAME'
1657                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1658                  ,p_token_4                 => 'PAD_OWNER'
1659                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1660                                                         'XLA_OWNER_TYPE'
1661                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1662                                                         )
1663                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1664                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1665                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1666                  ,p_ae_header_id            => NULL
1667 );
1668 RETURN l_output_value;
1669 EXCEPTION
1670   WHEN xla_exceptions_pkg.application_exception THEN
1671       RAISE;
1672   WHEN OTHERS THEN
1673        xla_exceptions_pkg.raise_message
1674            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_10');
1675 END AcctDerRule_10;
1676 --
1677 
1678 ---------------------------------------
1679 --
1680 -- PRIVATE FUNCTION
1681 --         AcctDerRule_11
1682 --
1683 ---------------------------------------
1684 FUNCTION AcctDerRule_11 (
1685   p_application_id              IN NUMBER
1686 , p_ae_header_id                IN NUMBER
1687 , p_side                        IN VARCHAR2 
1688 --Budget Code Combination ID
1689  , p_source_3            IN NUMBER
1690 , x_transaction_coa_id         OUT NOCOPY NUMBER
1691 , x_accounting_coa_id          OUT NOCOPY NUMBER
1692 , x_value_type_code            OUT NOCOPY VARCHAR2
1693 )
1694 RETURN NUMBER
1695 IS
1696 l_component_type       VARCHAR2(80)  ;
1697 l_component_code       VARCHAR2(30)  ;
1698 l_component_type_code  VARCHAR2(1)   ;
1699 l_component_appl_id    INTEGER       ;
1700 l_amb_context_code     VARCHAR2(30)  ;
1701 l_log_module           VARCHAR2(240) ;
1702 l_output_value         NUMBER        ;
1703 BEGIN
1704 IF g_log_enabled THEN
1705       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_11';
1706 END IF;
1707 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1708       trace
1709          (p_msg      => 'BEGIN of AcctDerRule_11'
1710          ,p_level    => C_LEVEL_PROCEDURE
1711          ,p_module   => l_log_module);
1712 END IF;
1713 --
1714 l_component_type         := 'AMB_ADR';
1715 l_component_code         := 'PA_BUDGET_ACCT_RULE';
1716 l_component_type_code    := 'S';
1717 l_component_appl_id      :=  275;
1718 l_amb_context_code       := 'DEFAULT';
1719 x_transaction_coa_id     :=  null;
1720 x_accounting_coa_id      :=  null;
1721 --
1722 
1723  --
1724   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1725       trace
1726          (p_msg      => 'END of AcctDerRule_11'
1727          ,p_level    => C_LEVEL_PROCEDURE
1728          ,p_module   => l_log_module);
1729   END IF;
1730   x_value_type_code := 'S';
1731   l_output_value    := TO_NUMBER(p_source_3);
1732   RETURN l_output_value;
1733 
1734 --
1735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1736       trace
1737          (p_msg      => 'END of AcctDerRule_11(invalid)'
1738          ,p_level    => C_LEVEL_PROCEDURE
1739          ,p_module   => l_log_module);
1740 END IF;
1741 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1742 x_value_type_code := null;
1743 l_output_value    := null;
1744 xla_accounting_err_pkg.build_message
1745                  (p_appli_s_name            => 'XLA'
1746                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1747                  ,p_token_1                 => 'COMPONENT_NAME'
1748                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1749                                                             l_component_type
1750                                                           , l_component_code
1751                                                           , l_component_type_code
1752                                                           , l_component_appl_id
1753                                                           , l_amb_context_code
1754                                                           )
1755                  ,p_token_2                 => 'OWNER'
1756                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1757                                                         'XLA_OWNER_TYPE'
1758                                                         ,l_component_type_code
1759                                                         )
1763                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1760                  ,p_token_3                 => 'PAD_NAME'
1761                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1762                  ,p_token_4                 => 'PAD_OWNER'
1764                                                         'XLA_OWNER_TYPE'
1765                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1766                                                         )
1767                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1768                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1769                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1770                  ,p_ae_header_id            => NULL
1771 );
1772 RETURN l_output_value;
1773 EXCEPTION
1774   WHEN xla_exceptions_pkg.application_exception THEN
1775       RAISE;
1776   WHEN OTHERS THEN
1777        xla_exceptions_pkg.raise_message
1778            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_11');
1779 END AcctDerRule_11;
1780 --
1781 
1782 ---------------------------------------
1783 --
1784 -- PRIVATE FUNCTION
1785 --         AcctDerRule_12
1786 --
1787 ---------------------------------------
1788 FUNCTION AcctDerRule_12 (
1789   p_application_id              IN NUMBER
1790 , p_ae_header_id                IN NUMBER
1791 , p_side                        IN VARCHAR2 
1792 --Cost CCID
1793  , p_source_4            IN NUMBER
1794 --Allow Account Override Flag
1795  , p_source_5            IN VARCHAR2
1796 --Adjustment Cost CCID
1797  , p_source_6            IN NUMBER
1798 , x_transaction_coa_id         OUT NOCOPY NUMBER
1799 , x_accounting_coa_id          OUT NOCOPY NUMBER
1800 , x_value_type_code            OUT NOCOPY VARCHAR2
1801 )
1802 RETURN NUMBER
1803 IS
1804 l_component_type       VARCHAR2(80)  ;
1805 l_component_code       VARCHAR2(30)  ;
1806 l_component_type_code  VARCHAR2(1)   ;
1807 l_component_appl_id    INTEGER       ;
1808 l_amb_context_code     VARCHAR2(30)  ;
1809 l_log_module           VARCHAR2(240) ;
1810 l_output_value         NUMBER        ;
1811 BEGIN
1812 IF g_log_enabled THEN
1813       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1814 END IF;
1815 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1816       trace
1817          (p_msg      => 'BEGIN of AcctDerRule_12'
1818          ,p_level    => C_LEVEL_PROCEDURE
1819          ,p_module   => l_log_module);
1820 END IF;
1821 --
1822 l_component_type         := 'AMB_ADR';
1823 l_component_code         := 'PA_COST_ACCT_RULE';
1824 l_component_type_code    := 'S';
1825 l_component_appl_id      :=  275;
1826 l_amb_context_code       := 'DEFAULT';
1827 x_transaction_coa_id     :=  null;
1828 x_accounting_coa_id      :=  null;
1829 --
1830 
1831  IF NVL(p_source_5,'
1832 ') =  'Y'
1833  THEN 
1834  --
1835   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1836       trace
1837          (p_msg      => 'END of AcctDerRule_12'
1838          ,p_level    => C_LEVEL_PROCEDURE
1839          ,p_module   => l_log_module);
1840   END IF;
1841   x_value_type_code := 'S';
1842   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_4));
1843   RETURN l_output_value;
1844 
1845  ELSIF NVL(p_source_5,'
1846 ') =  'N'
1847  THEN 
1848  --
1849   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1850       trace
1851          (p_msg      => 'END of AcctDerRule_12'
1852          ,p_level    => C_LEVEL_PROCEDURE
1853          ,p_module   => l_log_module);
1854   END IF;
1855   x_value_type_code := 'S';
1856   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_6));
1857   RETURN l_output_value;
1858 
1859  END IF;
1860 --
1861 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1862       trace
1863          (p_msg      => 'END of AcctDerRule_12(invalid)'
1864          ,p_level    => C_LEVEL_PROCEDURE
1865          ,p_module   => l_log_module);
1866 END IF;
1867 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1868 x_value_type_code := null;
1869 l_output_value    := null;
1870 xla_accounting_err_pkg.build_message
1871                  (p_appli_s_name            => 'XLA'
1872                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1873                  ,p_token_1                 => 'COMPONENT_NAME'
1874                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1875                                                             l_component_type
1876                                                           , l_component_code
1877                                                           , l_component_type_code
1878                                                           , l_component_appl_id
1879                                                           , l_amb_context_code
1880                                                           )
1881                  ,p_token_2                 => 'OWNER'
1882                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1883                                                         'XLA_OWNER_TYPE'
1884                                                         ,l_component_type_code
1885                                                         )
1886                  ,p_token_3                 => 'PAD_NAME'
1887                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1888                  ,p_token_4                 => 'PAD_OWNER'
1889                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1890                                                         'XLA_OWNER_TYPE'
1891                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1895                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1892                                                         )
1893                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1894                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1896                  ,p_ae_header_id            => NULL
1897 );
1898 RETURN l_output_value;
1899 EXCEPTION
1900   WHEN xla_exceptions_pkg.application_exception THEN
1901       RAISE;
1902   WHEN OTHERS THEN
1903        xla_exceptions_pkg.raise_message
1904            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_12');
1905 END AcctDerRule_12;
1906 --
1907 
1908 ---------------------------------------
1909 --
1910 -- PRIVATE FUNCTION
1911 --         AcctDerRule_13
1912 --
1913 ---------------------------------------
1914 FUNCTION AcctDerRule_13 (
1915   p_application_id              IN NUMBER
1916 , p_ae_header_id                IN NUMBER
1917 , p_side                        IN VARCHAR2 
1918 --Allow Account Override Flag
1919  , p_source_5            IN VARCHAR2
1920 --Adjustment Cost CCID
1921  , p_source_6            IN NUMBER
1922 , x_transaction_coa_id         OUT NOCOPY NUMBER
1923 , x_accounting_coa_id          OUT NOCOPY NUMBER
1924 , x_value_type_code            OUT NOCOPY VARCHAR2
1925 )
1926 RETURN NUMBER
1927 IS
1928 l_component_type       VARCHAR2(80)  ;
1929 l_component_code       VARCHAR2(30)  ;
1930 l_component_type_code  VARCHAR2(1)   ;
1931 l_component_appl_id    INTEGER       ;
1932 l_amb_context_code     VARCHAR2(30)  ;
1933 l_log_module           VARCHAR2(240) ;
1934 l_output_value         NUMBER        ;
1935 BEGIN
1936 IF g_log_enabled THEN
1937       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1938 END IF;
1939 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1940       trace
1941          (p_msg      => 'BEGIN of AcctDerRule_13'
1942          ,p_level    => C_LEVEL_PROCEDURE
1943          ,p_module   => l_log_module);
1944 END IF;
1945 --
1946 l_component_type         := 'AMB_ADR';
1947 l_component_code         := 'PA_COST_ACC_ADJ_RULE';
1948 l_component_type_code    := 'S';
1949 l_component_appl_id      :=  275;
1950 l_amb_context_code       := 'DEFAULT';
1951 x_transaction_coa_id     :=  null;
1952 x_accounting_coa_id      :=  null;
1953 --
1954 
1955  IF NVL(p_source_5,'
1956 ') =  'N'
1957  THEN 
1958  --
1959   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1960       trace
1961          (p_msg      => 'END of AcctDerRule_13'
1962          ,p_level    => C_LEVEL_PROCEDURE
1963          ,p_module   => l_log_module);
1964   END IF;
1965   x_value_type_code := 'S';
1966   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_6));
1967   RETURN l_output_value;
1968 
1969  END IF;
1970 --
1971 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1972       trace
1973          (p_msg      => 'END of AcctDerRule_13(invalid)'
1974          ,p_level    => C_LEVEL_PROCEDURE
1975          ,p_module   => l_log_module);
1976 END IF;
1977 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1978 x_value_type_code := null;
1979 l_output_value    := null;
1980 xla_accounting_err_pkg.build_message
1981                  (p_appli_s_name            => 'XLA'
1982                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1983                  ,p_token_1                 => 'COMPONENT_NAME'
1984                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1985                                                             l_component_type
1986                                                           , l_component_code
1987                                                           , l_component_type_code
1988                                                           , l_component_appl_id
1989                                                           , l_amb_context_code
1990                                                           )
1991                  ,p_token_2                 => 'OWNER'
1992                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1993                                                         'XLA_OWNER_TYPE'
1994                                                         ,l_component_type_code
1995                                                         )
1996                  ,p_token_3                 => 'PAD_NAME'
1997                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1998                  ,p_token_4                 => 'PAD_OWNER'
1999                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2000                                                         'XLA_OWNER_TYPE'
2001                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2002                                                         )
2003                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2004                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2005                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2006                  ,p_ae_header_id            => NULL
2007 );
2008 RETURN l_output_value;
2009 EXCEPTION
2010   WHEN xla_exceptions_pkg.application_exception THEN
2011       RAISE;
2012   WHEN OTHERS THEN
2013        xla_exceptions_pkg.raise_message
2014            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_13');
2015 END AcctDerRule_13;
2016 --
2017 
2018 ---------------------------------------
2019 --
2020 -- PRIVATE FUNCTION
2021 --         AcctDerRule_14
2022 --
2023 ---------------------------------------
2024 FUNCTION AcctDerRule_14 (
2025   p_application_id              IN NUMBER
2026 , p_ae_header_id                IN NUMBER
2030 --Cost Clearing CCID
2027 , p_side                        IN VARCHAR2 
2028 --Allow Account Override Flag
2029  , p_source_5            IN VARCHAR2
2031  , p_source_7            IN NUMBER
2032 --Adjustment Cost Clearing CCID
2033  , p_source_8            IN NUMBER
2034 , x_transaction_coa_id         OUT NOCOPY NUMBER
2035 , x_accounting_coa_id          OUT NOCOPY NUMBER
2036 , x_value_type_code            OUT NOCOPY VARCHAR2
2037 )
2038 RETURN NUMBER
2039 IS
2040 l_component_type       VARCHAR2(80)  ;
2041 l_component_code       VARCHAR2(30)  ;
2042 l_component_type_code  VARCHAR2(1)   ;
2043 l_component_appl_id    INTEGER       ;
2044 l_amb_context_code     VARCHAR2(30)  ;
2045 l_log_module           VARCHAR2(240) ;
2046 l_output_value         NUMBER        ;
2047 BEGIN
2048 IF g_log_enabled THEN
2049       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_14';
2050 END IF;
2051 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2052       trace
2053          (p_msg      => 'BEGIN of AcctDerRule_14'
2054          ,p_level    => C_LEVEL_PROCEDURE
2055          ,p_module   => l_log_module);
2056 END IF;
2057 --
2058 l_component_type         := 'AMB_ADR';
2059 l_component_code         := 'PA_COST_CLEARING_ACCT_RULE';
2060 l_component_type_code    := 'S';
2061 l_component_appl_id      :=  275;
2062 l_amb_context_code       := 'DEFAULT';
2063 x_transaction_coa_id     :=  null;
2064 x_accounting_coa_id      :=  null;
2065 --
2066 
2067  IF NVL(p_source_5,'
2068 ') =  'Y'
2069  THEN 
2070  --
2071   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2072       trace
2073          (p_msg      => 'END of AcctDerRule_14'
2074          ,p_level    => C_LEVEL_PROCEDURE
2075          ,p_module   => l_log_module);
2076   END IF;
2077   x_value_type_code := 'S';
2078   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_7));
2079   RETURN l_output_value;
2080 
2081  ELSIF NVL(p_source_5,'
2082 ') =  'N'
2083  THEN 
2084  --
2085   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2086       trace
2087          (p_msg      => 'END of AcctDerRule_14'
2088          ,p_level    => C_LEVEL_PROCEDURE
2089          ,p_module   => l_log_module);
2090   END IF;
2091   x_value_type_code := 'S';
2092   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_8));
2093   RETURN l_output_value;
2094 
2095  END IF;
2096 --
2097 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2098       trace
2099          (p_msg      => 'END of AcctDerRule_14(invalid)'
2100          ,p_level    => C_LEVEL_PROCEDURE
2101          ,p_module   => l_log_module);
2102 END IF;
2103 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2104 x_value_type_code := null;
2105 l_output_value    := null;
2106 xla_accounting_err_pkg.build_message
2107                  (p_appli_s_name            => 'XLA'
2108                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2109                  ,p_token_1                 => 'COMPONENT_NAME'
2110                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2111                                                             l_component_type
2112                                                           , l_component_code
2113                                                           , l_component_type_code
2114                                                           , l_component_appl_id
2115                                                           , l_amb_context_code
2116                                                           )
2117                  ,p_token_2                 => 'OWNER'
2118                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2119                                                         'XLA_OWNER_TYPE'
2120                                                         ,l_component_type_code
2121                                                         )
2122                  ,p_token_3                 => 'PAD_NAME'
2123                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2124                  ,p_token_4                 => 'PAD_OWNER'
2125                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2126                                                         'XLA_OWNER_TYPE'
2127                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2128                                                         )
2129                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2130                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2131                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2132                  ,p_ae_header_id            => NULL
2133 );
2134 RETURN l_output_value;
2135 EXCEPTION
2136   WHEN xla_exceptions_pkg.application_exception THEN
2137       RAISE;
2138   WHEN OTHERS THEN
2139        xla_exceptions_pkg.raise_message
2140            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_14');
2141 END AcctDerRule_14;
2142 --
2143 
2144 ---------------------------------------
2145 --
2146 -- PRIVATE FUNCTION
2147 --         AcctDerRule_15
2148 --
2149 ---------------------------------------
2150 FUNCTION AcctDerRule_15 (
2151   p_application_id              IN NUMBER
2152 , p_ae_header_id                IN NUMBER
2153 , p_side                        IN VARCHAR2 
2154 --Allow Account Override Flag
2155  , p_source_5            IN VARCHAR2
2156 --Adjustment Cost Clearing CCID
2157  , p_source_8            IN NUMBER
2158 , x_transaction_coa_id         OUT NOCOPY NUMBER
2159 , x_accounting_coa_id          OUT NOCOPY NUMBER
2160 , x_value_type_code            OUT NOCOPY VARCHAR2
2161 )
2162 RETURN NUMBER
2163 IS
2164 l_component_type       VARCHAR2(80)  ;
2168 l_amb_context_code     VARCHAR2(30)  ;
2165 l_component_code       VARCHAR2(30)  ;
2166 l_component_type_code  VARCHAR2(1)   ;
2167 l_component_appl_id    INTEGER       ;
2169 l_log_module           VARCHAR2(240) ;
2170 l_output_value         NUMBER        ;
2171 BEGIN
2172 IF g_log_enabled THEN
2173       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
2174 END IF;
2175 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2176       trace
2177          (p_msg      => 'BEGIN of AcctDerRule_15'
2178          ,p_level    => C_LEVEL_PROCEDURE
2179          ,p_module   => l_log_module);
2180 END IF;
2181 --
2182 l_component_type         := 'AMB_ADR';
2183 l_component_code         := 'PA_COST_CLEARING_ADJ_ACC';
2184 l_component_type_code    := 'S';
2185 l_component_appl_id      :=  275;
2186 l_amb_context_code       := 'DEFAULT';
2187 x_transaction_coa_id     :=  null;
2188 x_accounting_coa_id      :=  null;
2189 --
2190 
2191  IF NVL(p_source_5,'
2192 ') =  'N'
2193  THEN 
2194  --
2195   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2196       trace
2197          (p_msg      => 'END of AcctDerRule_15'
2198          ,p_level    => C_LEVEL_PROCEDURE
2199          ,p_module   => l_log_module);
2200   END IF;
2201   x_value_type_code := 'S';
2202   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_8));
2203   RETURN l_output_value;
2204 
2205  END IF;
2206 --
2207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2208       trace
2209          (p_msg      => 'END of AcctDerRule_15(invalid)'
2210          ,p_level    => C_LEVEL_PROCEDURE
2211          ,p_module   => l_log_module);
2212 END IF;
2213 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2214 x_value_type_code := null;
2215 l_output_value    := null;
2216 xla_accounting_err_pkg.build_message
2217                  (p_appli_s_name            => 'XLA'
2218                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2219                  ,p_token_1                 => 'COMPONENT_NAME'
2220                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2221                                                             l_component_type
2222                                                           , l_component_code
2223                                                           , l_component_type_code
2224                                                           , l_component_appl_id
2225                                                           , l_amb_context_code
2226                                                           )
2227                  ,p_token_2                 => 'OWNER'
2228                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2229                                                         'XLA_OWNER_TYPE'
2230                                                         ,l_component_type_code
2231                                                         )
2232                  ,p_token_3                 => 'PAD_NAME'
2233                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2234                  ,p_token_4                 => 'PAD_OWNER'
2235                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2236                                                         'XLA_OWNER_TYPE'
2237                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2238                                                         )
2239                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2240                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2241                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2242                  ,p_ae_header_id            => NULL
2243 );
2244 RETURN l_output_value;
2245 EXCEPTION
2246   WHEN xla_exceptions_pkg.application_exception THEN
2247       RAISE;
2248   WHEN OTHERS THEN
2249        xla_exceptions_pkg.raise_message
2250            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_15');
2251 END AcctDerRule_15;
2252 --
2253 
2254 ---------------------------------------
2255 --
2256 -- PRIVATE FUNCTION
2257 --         AcctDerRule_16
2258 --
2259 ---------------------------------------
2260 FUNCTION AcctDerRule_16 (
2261   p_application_id              IN NUMBER
2262 , p_ae_header_id                IN NUMBER
2263 , p_side                        IN VARCHAR2 
2264 --Allow Account Override Flag
2265  , p_source_5            IN VARCHAR2
2266 --Provider Cost/ Revenue CCID
2267  , p_source_9            IN NUMBER
2268 --Adjustment Provider Cost/ Revenue CCID
2269  , p_source_10            IN NUMBER
2270 , x_transaction_coa_id         OUT NOCOPY NUMBER
2271 , x_accounting_coa_id          OUT NOCOPY NUMBER
2272 , x_value_type_code            OUT NOCOPY VARCHAR2
2273 )
2274 RETURN NUMBER
2275 IS
2276 l_component_type       VARCHAR2(80)  ;
2277 l_component_code       VARCHAR2(30)  ;
2278 l_component_type_code  VARCHAR2(1)   ;
2279 l_component_appl_id    INTEGER       ;
2280 l_amb_context_code     VARCHAR2(30)  ;
2281 l_log_module           VARCHAR2(240) ;
2282 l_output_value         NUMBER        ;
2283 BEGIN
2284 IF g_log_enabled THEN
2285       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_16';
2286 END IF;
2287 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2288       trace
2289          (p_msg      => 'BEGIN of AcctDerRule_16'
2290          ,p_level    => C_LEVEL_PROCEDURE
2291          ,p_module   => l_log_module);
2292 END IF;
2293 --
2294 l_component_type         := 'AMB_ADR';
2295 l_component_code         := 'PA_PROV_COST_REV_ACCT_RULE';
2296 l_component_type_code    := 'S';
2297 l_component_appl_id      :=  275;
2298 l_amb_context_code       := 'DEFAULT';
2299 x_transaction_coa_id     :=  null;
2300 x_accounting_coa_id      :=  null;
2304 ') =  'Y'
2301 --
2302 
2303  IF NVL(p_source_5,'
2305  THEN 
2306  --
2307   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2308       trace
2309          (p_msg      => 'END of AcctDerRule_16'
2310          ,p_level    => C_LEVEL_PROCEDURE
2311          ,p_module   => l_log_module);
2312   END IF;
2313   x_value_type_code := 'S';
2314   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_9));
2315   RETURN l_output_value;
2316 
2317  ELSIF NVL(p_source_5,'
2318 ') =  'N'
2319  THEN 
2320  --
2321   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2322       trace
2323          (p_msg      => 'END of AcctDerRule_16'
2324          ,p_level    => C_LEVEL_PROCEDURE
2325          ,p_module   => l_log_module);
2326   END IF;
2327   x_value_type_code := 'S';
2328   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_10));
2329   RETURN l_output_value;
2330 
2331  END IF;
2332 --
2333 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2334       trace
2335          (p_msg      => 'END of AcctDerRule_16(invalid)'
2336          ,p_level    => C_LEVEL_PROCEDURE
2337          ,p_module   => l_log_module);
2338 END IF;
2339 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2340 x_value_type_code := null;
2341 l_output_value    := null;
2342 xla_accounting_err_pkg.build_message
2343                  (p_appli_s_name            => 'XLA'
2344                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2345                  ,p_token_1                 => 'COMPONENT_NAME'
2346                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2347                                                             l_component_type
2348                                                           , l_component_code
2349                                                           , l_component_type_code
2350                                                           , l_component_appl_id
2351                                                           , l_amb_context_code
2352                                                           )
2353                  ,p_token_2                 => 'OWNER'
2354                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2355                                                         'XLA_OWNER_TYPE'
2356                                                         ,l_component_type_code
2357                                                         )
2358                  ,p_token_3                 => 'PAD_NAME'
2359                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2360                  ,p_token_4                 => 'PAD_OWNER'
2361                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2362                                                         'XLA_OWNER_TYPE'
2363                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2364                                                         )
2365                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2366                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2367                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2368                  ,p_ae_header_id            => NULL
2369 );
2370 RETURN l_output_value;
2371 EXCEPTION
2372   WHEN xla_exceptions_pkg.application_exception THEN
2373       RAISE;
2374   WHEN OTHERS THEN
2375        xla_exceptions_pkg.raise_message
2376            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_16');
2377 END AcctDerRule_16;
2378 --
2379 
2380 ---------------------------------------
2381 --
2382 -- PRIVATE FUNCTION
2383 --         AcctDerRule_17
2384 --
2385 ---------------------------------------
2386 FUNCTION AcctDerRule_17 (
2387   p_application_id              IN NUMBER
2388 , p_ae_header_id                IN NUMBER
2389 , p_side                        IN VARCHAR2 
2390 --Allow Account Override Flag
2391  , p_source_5            IN VARCHAR2
2392 --Adjustment Provider Cost/ Revenue CCID
2393  , p_source_10            IN NUMBER
2394 , x_transaction_coa_id         OUT NOCOPY NUMBER
2395 , x_accounting_coa_id          OUT NOCOPY NUMBER
2396 , x_value_type_code            OUT NOCOPY VARCHAR2
2397 )
2398 RETURN NUMBER
2399 IS
2400 l_component_type       VARCHAR2(80)  ;
2401 l_component_code       VARCHAR2(30)  ;
2402 l_component_type_code  VARCHAR2(1)   ;
2403 l_component_appl_id    INTEGER       ;
2404 l_amb_context_code     VARCHAR2(30)  ;
2405 l_log_module           VARCHAR2(240) ;
2406 l_output_value         NUMBER        ;
2407 BEGIN
2408 IF g_log_enabled THEN
2409       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_17';
2410 END IF;
2411 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2412       trace
2413          (p_msg      => 'BEGIN of AcctDerRule_17'
2414          ,p_level    => C_LEVEL_PROCEDURE
2415          ,p_module   => l_log_module);
2416 END IF;
2417 --
2418 l_component_type         := 'AMB_ADR';
2419 l_component_code         := 'PA_PROV_COST_REV_ADJ_ACCT_RULE';
2420 l_component_type_code    := 'S';
2421 l_component_appl_id      :=  275;
2422 l_amb_context_code       := 'DEFAULT';
2423 x_transaction_coa_id     :=  null;
2424 x_accounting_coa_id      :=  null;
2425 --
2426 
2427  IF NVL(p_source_5,'
2428 ') =  'N'
2429  THEN 
2430  --
2431   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2432       trace
2433          (p_msg      => 'END of AcctDerRule_17'
2434          ,p_level    => C_LEVEL_PROCEDURE
2435          ,p_module   => l_log_module);
2436   END IF;
2437   x_value_type_code := 'S';
2438   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_10));
2439   RETURN l_output_value;
2440 
2441  END IF;
2442 --
2446          ,p_level    => C_LEVEL_PROCEDURE
2443 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2444       trace
2445          (p_msg      => 'END of AcctDerRule_17(invalid)'
2447          ,p_module   => l_log_module);
2448 END IF;
2449 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2450 x_value_type_code := null;
2451 l_output_value    := null;
2452 xla_accounting_err_pkg.build_message
2453                  (p_appli_s_name            => 'XLA'
2454                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2455                  ,p_token_1                 => 'COMPONENT_NAME'
2456                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2457                                                             l_component_type
2458                                                           , l_component_code
2459                                                           , l_component_type_code
2460                                                           , l_component_appl_id
2461                                                           , l_amb_context_code
2462                                                           )
2463                  ,p_token_2                 => 'OWNER'
2464                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2465                                                         'XLA_OWNER_TYPE'
2466                                                         ,l_component_type_code
2467                                                         )
2468                  ,p_token_3                 => 'PAD_NAME'
2469                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2470                  ,p_token_4                 => 'PAD_OWNER'
2471                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2472                                                         'XLA_OWNER_TYPE'
2473                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2474                                                         )
2475                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2476                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2477                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2478                  ,p_ae_header_id            => NULL
2479 );
2480 RETURN l_output_value;
2481 EXCEPTION
2482   WHEN xla_exceptions_pkg.application_exception THEN
2483       RAISE;
2484   WHEN OTHERS THEN
2485        xla_exceptions_pkg.raise_message
2486            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_17');
2487 END AcctDerRule_17;
2488 --
2489 
2490 ---------------------------------------
2491 --
2492 -- PRIVATE FUNCTION
2493 --         AcctDerRule_18
2494 --
2495 ---------------------------------------
2496 FUNCTION AcctDerRule_18 (
2497   p_application_id              IN NUMBER
2498 , p_ae_header_id                IN NUMBER
2499 , p_side                        IN VARCHAR2 
2500 --Allow Account Override Flag
2501  , p_source_5            IN VARCHAR2
2502 --Adjustment Receiver Cost/ Revenue CCID
2503  , p_source_11            IN NUMBER
2504 , x_transaction_coa_id         OUT NOCOPY NUMBER
2505 , x_accounting_coa_id          OUT NOCOPY NUMBER
2506 , x_value_type_code            OUT NOCOPY VARCHAR2
2507 )
2508 RETURN NUMBER
2509 IS
2510 l_component_type       VARCHAR2(80)  ;
2511 l_component_code       VARCHAR2(30)  ;
2512 l_component_type_code  VARCHAR2(1)   ;
2513 l_component_appl_id    INTEGER       ;
2514 l_amb_context_code     VARCHAR2(30)  ;
2515 l_log_module           VARCHAR2(240) ;
2516 l_output_value         NUMBER        ;
2517 BEGIN
2518 IF g_log_enabled THEN
2519       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_18';
2520 END IF;
2521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2522       trace
2523          (p_msg      => 'BEGIN of AcctDerRule_18'
2524          ,p_level    => C_LEVEL_PROCEDURE
2525          ,p_module   => l_log_module);
2526 END IF;
2527 --
2528 l_component_type         := 'AMB_ADR';
2529 l_component_code         := 'PA_RCVR_COST_REV_ADJ_ACCT_RULE';
2530 l_component_type_code    := 'S';
2531 l_component_appl_id      :=  275;
2532 l_amb_context_code       := 'DEFAULT';
2533 x_transaction_coa_id     :=  null;
2534 x_accounting_coa_id      :=  null;
2535 --
2536 
2537  IF NVL(p_source_5,'
2538 ') =  'N'
2539  THEN 
2540  --
2541   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2542       trace
2543          (p_msg      => 'END of AcctDerRule_18'
2544          ,p_level    => C_LEVEL_PROCEDURE
2545          ,p_module   => l_log_module);
2546   END IF;
2547   x_value_type_code := 'S';
2548   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
2549   RETURN l_output_value;
2550 
2551  END IF;
2552 --
2553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2554       trace
2555          (p_msg      => 'END of AcctDerRule_18(invalid)'
2556          ,p_level    => C_LEVEL_PROCEDURE
2557          ,p_module   => l_log_module);
2558 END IF;
2559 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2560 x_value_type_code := null;
2561 l_output_value    := null;
2562 xla_accounting_err_pkg.build_message
2563                  (p_appli_s_name            => 'XLA'
2564                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2565                  ,p_token_1                 => 'COMPONENT_NAME'
2566                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2567                                                             l_component_type
2568                                                           , l_component_code
2569                                                           , l_component_type_code
2570                                                           , l_component_appl_id
2574                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2571                                                           , l_amb_context_code
2572                                                           )
2573                  ,p_token_2                 => 'OWNER'
2575                                                         'XLA_OWNER_TYPE'
2576                                                         ,l_component_type_code
2577                                                         )
2578                  ,p_token_3                 => 'PAD_NAME'
2579                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2580                  ,p_token_4                 => 'PAD_OWNER'
2581                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2582                                                         'XLA_OWNER_TYPE'
2583                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2584                                                         )
2585                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2586                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2587                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2588                  ,p_ae_header_id            => NULL
2589 );
2590 RETURN l_output_value;
2591 EXCEPTION
2592   WHEN xla_exceptions_pkg.application_exception THEN
2593       RAISE;
2594   WHEN OTHERS THEN
2595        xla_exceptions_pkg.raise_message
2596            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_18');
2597 END AcctDerRule_18;
2598 --
2599 
2600 ---------------------------------------
2601 --
2602 -- PRIVATE FUNCTION
2603 --         AcctDerRule_19
2604 --
2605 ---------------------------------------
2606 FUNCTION AcctDerRule_19 (
2607   p_application_id              IN NUMBER
2608 , p_ae_header_id                IN NUMBER
2609 , p_side                        IN VARCHAR2 
2610 --Allow Account Override Flag
2611  , p_source_5            IN VARCHAR2
2612 --Provider Cost Destination CCID
2613  , p_source_12            IN NUMBER
2614 --Adjustment Provider Cost Destination CCID
2615  , p_source_13            IN NUMBER
2616 , x_transaction_coa_id         OUT NOCOPY NUMBER
2617 , x_accounting_coa_id          OUT NOCOPY NUMBER
2618 , x_value_type_code            OUT NOCOPY VARCHAR2
2619 )
2620 RETURN NUMBER
2621 IS
2622 l_component_type       VARCHAR2(80)  ;
2623 l_component_code       VARCHAR2(30)  ;
2624 l_component_type_code  VARCHAR2(1)   ;
2625 l_component_appl_id    INTEGER       ;
2626 l_amb_context_code     VARCHAR2(30)  ;
2627 l_log_module           VARCHAR2(240) ;
2628 l_output_value         NUMBER        ;
2629 BEGIN
2630 IF g_log_enabled THEN
2631       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_19';
2632 END IF;
2633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2634       trace
2635          (p_msg      => 'BEGIN of AcctDerRule_19'
2636          ,p_level    => C_LEVEL_PROCEDURE
2637          ,p_module   => l_log_module);
2638 END IF;
2639 --
2640 l_component_type         := 'AMB_ADR';
2641 l_component_code         := 'PA_RECLASS_DEST_ACCT_RULE';
2642 l_component_type_code    := 'S';
2643 l_component_appl_id      :=  275;
2644 l_amb_context_code       := 'DEFAULT';
2645 x_transaction_coa_id     :=  null;
2646 x_accounting_coa_id      :=  null;
2647 --
2648 
2649  IF NVL(p_source_5,'
2650 ') =  'Y'
2651  THEN 
2652  --
2653   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2654       trace
2655          (p_msg      => 'END of AcctDerRule_19'
2656          ,p_level    => C_LEVEL_PROCEDURE
2657          ,p_module   => l_log_module);
2658   END IF;
2659   x_value_type_code := 'S';
2660   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_12));
2661   RETURN l_output_value;
2662 
2663  ELSIF NVL(p_source_5,'
2664 ') =  'N'
2665  THEN 
2666  --
2667   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2668       trace
2669          (p_msg      => 'END of AcctDerRule_19'
2670          ,p_level    => C_LEVEL_PROCEDURE
2671          ,p_module   => l_log_module);
2672   END IF;
2673   x_value_type_code := 'S';
2674   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_13));
2675   RETURN l_output_value;
2676 
2677  END IF;
2678 --
2679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2680       trace
2681          (p_msg      => 'END of AcctDerRule_19(invalid)'
2682          ,p_level    => C_LEVEL_PROCEDURE
2683          ,p_module   => l_log_module);
2684 END IF;
2685 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2686 x_value_type_code := null;
2687 l_output_value    := null;
2688 xla_accounting_err_pkg.build_message
2689                  (p_appli_s_name            => 'XLA'
2690                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2691                  ,p_token_1                 => 'COMPONENT_NAME'
2692                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2693                                                             l_component_type
2694                                                           , l_component_code
2695                                                           , l_component_type_code
2696                                                           , l_component_appl_id
2697                                                           , l_amb_context_code
2698                                                           )
2699                  ,p_token_2                 => 'OWNER'
2700                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2701                                                         'XLA_OWNER_TYPE'
2702                                                         ,l_component_type_code
2703                                                         )
2707                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2704                  ,p_token_3                 => 'PAD_NAME'
2705                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2706                  ,p_token_4                 => 'PAD_OWNER'
2708                                                         'XLA_OWNER_TYPE'
2709                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2710                                                         )
2711                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2712                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2713                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2714                  ,p_ae_header_id            => NULL
2715 );
2716 RETURN l_output_value;
2717 EXCEPTION
2718   WHEN xla_exceptions_pkg.application_exception THEN
2719       RAISE;
2720   WHEN OTHERS THEN
2721        xla_exceptions_pkg.raise_message
2722            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_19');
2723 END AcctDerRule_19;
2724 --
2725 
2726 ---------------------------------------
2727 --
2728 -- PRIVATE FUNCTION
2729 --         AcctDerRule_20
2730 --
2731 ---------------------------------------
2732 FUNCTION AcctDerRule_20 (
2733   p_application_id              IN NUMBER
2734 , p_ae_header_id                IN NUMBER
2735 , p_side                        IN VARCHAR2 
2736 --Allow Account Override Flag
2737  , p_source_5            IN VARCHAR2
2738 --Adjustment Provider Cost Destination CCID
2739  , p_source_13            IN NUMBER
2740 , x_transaction_coa_id         OUT NOCOPY NUMBER
2741 , x_accounting_coa_id          OUT NOCOPY NUMBER
2742 , x_value_type_code            OUT NOCOPY VARCHAR2
2743 )
2744 RETURN NUMBER
2745 IS
2746 l_component_type       VARCHAR2(80)  ;
2747 l_component_code       VARCHAR2(30)  ;
2748 l_component_type_code  VARCHAR2(1)   ;
2749 l_component_appl_id    INTEGER       ;
2750 l_amb_context_code     VARCHAR2(30)  ;
2751 l_log_module           VARCHAR2(240) ;
2752 l_output_value         NUMBER        ;
2753 BEGIN
2754 IF g_log_enabled THEN
2755       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_20';
2756 END IF;
2757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2758       trace
2759          (p_msg      => 'BEGIN of AcctDerRule_20'
2760          ,p_level    => C_LEVEL_PROCEDURE
2761          ,p_module   => l_log_module);
2762 END IF;
2763 --
2764 l_component_type         := 'AMB_ADR';
2765 l_component_code         := 'PA_RECLASS_DEST_ADJ_ACCT_RULE';
2766 l_component_type_code    := 'S';
2767 l_component_appl_id      :=  275;
2768 l_amb_context_code       := 'DEFAULT';
2769 x_transaction_coa_id     :=  null;
2770 x_accounting_coa_id      :=  null;
2771 --
2772 
2773  IF NVL(p_source_5,'
2774 ') =  'N'
2775  THEN 
2776  --
2777   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2778       trace
2779          (p_msg      => 'END of AcctDerRule_20'
2780          ,p_level    => C_LEVEL_PROCEDURE
2781          ,p_module   => l_log_module);
2782   END IF;
2783   x_value_type_code := 'S';
2784   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_13));
2785   RETURN l_output_value;
2786 
2787  END IF;
2788 --
2789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2790       trace
2791          (p_msg      => 'END of AcctDerRule_20(invalid)'
2792          ,p_level    => C_LEVEL_PROCEDURE
2793          ,p_module   => l_log_module);
2794 END IF;
2795 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2796 x_value_type_code := null;
2797 l_output_value    := null;
2798 xla_accounting_err_pkg.build_message
2799                  (p_appli_s_name            => 'XLA'
2800                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2801                  ,p_token_1                 => 'COMPONENT_NAME'
2802                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2803                                                             l_component_type
2804                                                           , l_component_code
2805                                                           , l_component_type_code
2806                                                           , l_component_appl_id
2807                                                           , l_amb_context_code
2808                                                           )
2809                  ,p_token_2                 => 'OWNER'
2810                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2811                                                         'XLA_OWNER_TYPE'
2812                                                         ,l_component_type_code
2813                                                         )
2814                  ,p_token_3                 => 'PAD_NAME'
2815                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2816                  ,p_token_4                 => 'PAD_OWNER'
2817                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2818                                                         'XLA_OWNER_TYPE'
2819                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2820                                                         )
2821                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2822                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2823                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2824                  ,p_ae_header_id            => NULL
2825 );
2826 RETURN l_output_value;
2827 EXCEPTION
2828   WHEN xla_exceptions_pkg.application_exception THEN
2829       RAISE;
2833 END AcctDerRule_20;
2830   WHEN OTHERS THEN
2831        xla_exceptions_pkg.raise_message
2832            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_20');
2834 --
2835 
2836 ---------------------------------------
2837 --
2838 -- PRIVATE FUNCTION
2839 --         AcctDerRule_21
2840 --
2841 ---------------------------------------
2842 FUNCTION AcctDerRule_21 (
2843   p_application_id              IN NUMBER
2844 , p_ae_header_id                IN NUMBER
2845 , p_side                        IN VARCHAR2 
2846 --Allow Account Override Flag
2847  , p_source_5            IN VARCHAR2
2848 --Provider Cost Source CCID
2849  , p_source_14            IN NUMBER
2850 --Adjustment Provider Cost Source CCID
2851  , p_source_15            IN NUMBER
2852 , x_transaction_coa_id         OUT NOCOPY NUMBER
2853 , x_accounting_coa_id          OUT NOCOPY NUMBER
2854 , x_value_type_code            OUT NOCOPY VARCHAR2
2855 )
2856 RETURN NUMBER
2857 IS
2858 l_component_type       VARCHAR2(80)  ;
2859 l_component_code       VARCHAR2(30)  ;
2860 l_component_type_code  VARCHAR2(1)   ;
2861 l_component_appl_id    INTEGER       ;
2862 l_amb_context_code     VARCHAR2(30)  ;
2863 l_log_module           VARCHAR2(240) ;
2864 l_output_value         NUMBER        ;
2865 BEGIN
2866 IF g_log_enabled THEN
2867       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_21';
2868 END IF;
2869 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2870       trace
2871          (p_msg      => 'BEGIN of AcctDerRule_21'
2872          ,p_level    => C_LEVEL_PROCEDURE
2873          ,p_module   => l_log_module);
2874 END IF;
2875 --
2876 l_component_type         := 'AMB_ADR';
2877 l_component_code         := 'PA_RECLASS_SOURCE_ACCT_RULE';
2878 l_component_type_code    := 'S';
2879 l_component_appl_id      :=  275;
2880 l_amb_context_code       := 'DEFAULT';
2881 x_transaction_coa_id     :=  null;
2882 x_accounting_coa_id      :=  null;
2883 --
2884 
2885  IF NVL(p_source_5,'
2886 ') =  'Y'
2887  THEN 
2888  --
2889   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2890       trace
2891          (p_msg      => 'END of AcctDerRule_21'
2892          ,p_level    => C_LEVEL_PROCEDURE
2893          ,p_module   => l_log_module);
2894   END IF;
2895   x_value_type_code := 'S';
2896   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_14));
2897   RETURN l_output_value;
2898 
2899  ELSIF NVL(p_source_5,'
2900 ') =  'N'
2901  THEN 
2902  --
2903   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2904       trace
2905          (p_msg      => 'END of AcctDerRule_21'
2906          ,p_level    => C_LEVEL_PROCEDURE
2907          ,p_module   => l_log_module);
2908   END IF;
2909   x_value_type_code := 'S';
2910   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_15));
2911   RETURN l_output_value;
2912 
2913  END IF;
2914 --
2915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2916       trace
2917          (p_msg      => 'END of AcctDerRule_21(invalid)'
2918          ,p_level    => C_LEVEL_PROCEDURE
2919          ,p_module   => l_log_module);
2920 END IF;
2921 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2922 x_value_type_code := null;
2923 l_output_value    := null;
2924 xla_accounting_err_pkg.build_message
2925                  (p_appli_s_name            => 'XLA'
2926                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2927                  ,p_token_1                 => 'COMPONENT_NAME'
2928                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2929                                                             l_component_type
2930                                                           , l_component_code
2931                                                           , l_component_type_code
2932                                                           , l_component_appl_id
2933                                                           , l_amb_context_code
2934                                                           )
2935                  ,p_token_2                 => 'OWNER'
2936                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2937                                                         'XLA_OWNER_TYPE'
2938                                                         ,l_component_type_code
2939                                                         )
2940                  ,p_token_3                 => 'PAD_NAME'
2941                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2942                  ,p_token_4                 => 'PAD_OWNER'
2943                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2944                                                         'XLA_OWNER_TYPE'
2945                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2946                                                         )
2947                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2948                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2949                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2950                  ,p_ae_header_id            => NULL
2951 );
2952 RETURN l_output_value;
2953 EXCEPTION
2954   WHEN xla_exceptions_pkg.application_exception THEN
2955       RAISE;
2956   WHEN OTHERS THEN
2957        xla_exceptions_pkg.raise_message
2958            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_21');
2959 END AcctDerRule_21;
2960 --
2961 
2962 ---------------------------------------
2963 --
2964 -- PRIVATE FUNCTION
2965 --         AcctDerRule_22
2966 --
2967 ---------------------------------------
2968 FUNCTION AcctDerRule_22 (
2969   p_application_id              IN NUMBER
2973  , p_source_5            IN VARCHAR2
2970 , p_ae_header_id                IN NUMBER
2971 , p_side                        IN VARCHAR2 
2972 --Allow Account Override Flag
2974 --Adjustment Provider Cost Source CCID
2975  , p_source_15            IN NUMBER
2976 , x_transaction_coa_id         OUT NOCOPY NUMBER
2977 , x_accounting_coa_id          OUT NOCOPY NUMBER
2978 , x_value_type_code            OUT NOCOPY VARCHAR2
2979 )
2980 RETURN NUMBER
2981 IS
2982 l_component_type       VARCHAR2(80)  ;
2983 l_component_code       VARCHAR2(30)  ;
2984 l_component_type_code  VARCHAR2(1)   ;
2985 l_component_appl_id    INTEGER       ;
2986 l_amb_context_code     VARCHAR2(30)  ;
2987 l_log_module           VARCHAR2(240) ;
2988 l_output_value         NUMBER        ;
2989 BEGIN
2990 IF g_log_enabled THEN
2991       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_22';
2992 END IF;
2993 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2994       trace
2995          (p_msg      => 'BEGIN of AcctDerRule_22'
2996          ,p_level    => C_LEVEL_PROCEDURE
2997          ,p_module   => l_log_module);
2998 END IF;
2999 --
3000 l_component_type         := 'AMB_ADR';
3001 l_component_code         := 'PA_RECLASS_SRC_ADJ_ACCT_RULE';
3002 l_component_type_code    := 'S';
3003 l_component_appl_id      :=  275;
3004 l_amb_context_code       := 'DEFAULT';
3005 x_transaction_coa_id     :=  null;
3006 x_accounting_coa_id      :=  null;
3007 --
3008 
3009  IF NVL(p_source_5,'
3010 ') =  'N'
3011  THEN 
3012  --
3013   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3014       trace
3015          (p_msg      => 'END of AcctDerRule_22'
3016          ,p_level    => C_LEVEL_PROCEDURE
3017          ,p_module   => l_log_module);
3018   END IF;
3019   x_value_type_code := 'S';
3020   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_15));
3021   RETURN l_output_value;
3022 
3023  END IF;
3024 --
3025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3026       trace
3027          (p_msg      => 'END of AcctDerRule_22(invalid)'
3028          ,p_level    => C_LEVEL_PROCEDURE
3029          ,p_module   => l_log_module);
3030 END IF;
3031 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3032 x_value_type_code := null;
3033 l_output_value    := null;
3034 xla_accounting_err_pkg.build_message
3035                  (p_appli_s_name            => 'XLA'
3036                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3037                  ,p_token_1                 => 'COMPONENT_NAME'
3038                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3039                                                             l_component_type
3040                                                           , l_component_code
3041                                                           , l_component_type_code
3042                                                           , l_component_appl_id
3043                                                           , l_amb_context_code
3044                                                           )
3045                  ,p_token_2                 => 'OWNER'
3046                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3047                                                         'XLA_OWNER_TYPE'
3048                                                         ,l_component_type_code
3049                                                         )
3050                  ,p_token_3                 => 'PAD_NAME'
3051                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3052                  ,p_token_4                 => 'PAD_OWNER'
3053                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3054                                                         'XLA_OWNER_TYPE'
3055                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3056                                                         )
3057                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3058                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3059                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3060                  ,p_ae_header_id            => NULL
3061 );
3062 RETURN l_output_value;
3063 EXCEPTION
3064   WHEN xla_exceptions_pkg.application_exception THEN
3065       RAISE;
3066   WHEN OTHERS THEN
3067        xla_exceptions_pkg.raise_message
3068            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_22');
3069 END AcctDerRule_22;
3070 --
3071 
3072 ---------------------------------------
3073 --
3074 -- PRIVATE FUNCTION
3075 --         AcctDerRule_23
3076 --
3077 ---------------------------------------
3078 FUNCTION AcctDerRule_23 (
3079   p_application_id              IN NUMBER
3080 , p_ae_header_id                IN NUMBER
3081 , p_side                        IN VARCHAR2 
3082 --Allow Account Override Flag
3083  , p_source_5            IN VARCHAR2
3084 --Adjustment Receiver Cost/ Revenue CCID
3085  , p_source_11            IN NUMBER
3086 --Receiver Cost/ Revenue CCID
3087  , p_source_16            IN NUMBER
3088 , x_transaction_coa_id         OUT NOCOPY NUMBER
3089 , x_accounting_coa_id          OUT NOCOPY NUMBER
3090 , x_value_type_code            OUT NOCOPY VARCHAR2
3091 )
3092 RETURN NUMBER
3093 IS
3094 l_component_type       VARCHAR2(80)  ;
3095 l_component_code       VARCHAR2(30)  ;
3096 l_component_type_code  VARCHAR2(1)   ;
3097 l_component_appl_id    INTEGER       ;
3098 l_amb_context_code     VARCHAR2(30)  ;
3099 l_log_module           VARCHAR2(240) ;
3100 l_output_value         NUMBER        ;
3101 BEGIN
3102 IF g_log_enabled THEN
3103       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_23';
3104 END IF;
3108          ,p_level    => C_LEVEL_PROCEDURE
3105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3106       trace
3107          (p_msg      => 'BEGIN of AcctDerRule_23'
3109          ,p_module   => l_log_module);
3110 END IF;
3111 --
3112 l_component_type         := 'AMB_ADR';
3113 l_component_code         := 'PA_RECVR_COST_REV_ACCT_RULE';
3114 l_component_type_code    := 'S';
3115 l_component_appl_id      :=  275;
3116 l_amb_context_code       := 'DEFAULT';
3117 x_transaction_coa_id     :=  null;
3118 x_accounting_coa_id      :=  null;
3119 --
3120 
3121  IF NVL(p_source_5,'
3122 ') =  'Y'
3123  THEN 
3124  --
3125   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3126       trace
3127          (p_msg      => 'END of AcctDerRule_23'
3128          ,p_level    => C_LEVEL_PROCEDURE
3129          ,p_module   => l_log_module);
3130   END IF;
3131   x_value_type_code := 'S';
3132   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_16));
3133   RETURN l_output_value;
3134 
3135  ELSIF NVL(p_source_5,'
3136 ') =  'N'
3137  THEN 
3138  --
3139   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3140       trace
3141          (p_msg      => 'END of AcctDerRule_23'
3142          ,p_level    => C_LEVEL_PROCEDURE
3143          ,p_module   => l_log_module);
3144   END IF;
3145   x_value_type_code := 'S';
3146   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_11));
3147   RETURN l_output_value;
3148 
3149  END IF;
3150 --
3151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3152       trace
3153          (p_msg      => 'END of AcctDerRule_23(invalid)'
3154          ,p_level    => C_LEVEL_PROCEDURE
3155          ,p_module   => l_log_module);
3156 END IF;
3157 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3158 x_value_type_code := null;
3159 l_output_value    := null;
3160 xla_accounting_err_pkg.build_message
3161                  (p_appli_s_name            => 'XLA'
3162                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3163                  ,p_token_1                 => 'COMPONENT_NAME'
3164                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3165                                                             l_component_type
3166                                                           , l_component_code
3167                                                           , l_component_type_code
3168                                                           , l_component_appl_id
3169                                                           , l_amb_context_code
3170                                                           )
3171                  ,p_token_2                 => 'OWNER'
3172                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3173                                                         'XLA_OWNER_TYPE'
3174                                                         ,l_component_type_code
3175                                                         )
3176                  ,p_token_3                 => 'PAD_NAME'
3177                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3178                  ,p_token_4                 => 'PAD_OWNER'
3179                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3180                                                         'XLA_OWNER_TYPE'
3181                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3182                                                         )
3183                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3184                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3185                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3186                  ,p_ae_header_id            => NULL
3187 );
3188 RETURN l_output_value;
3189 EXCEPTION
3190   WHEN xla_exceptions_pkg.application_exception THEN
3191       RAISE;
3192   WHEN OTHERS THEN
3193        xla_exceptions_pkg.raise_message
3194            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_23');
3195 END AcctDerRule_23;
3196 --
3197 
3198 ---------------------------------------
3199 --
3200 -- PRIVATE FUNCTION
3201 --         AcctDerRule_24
3202 --
3203 ---------------------------------------
3204 FUNCTION AcctDerRule_24 (
3205   p_application_id              IN NUMBER
3206 , p_ae_header_id                IN NUMBER
3207 , p_side                        IN VARCHAR2 
3208 --Realized Gains CCID
3209  , p_source_17            IN NUMBER
3210 , x_transaction_coa_id         OUT NOCOPY NUMBER
3211 , x_accounting_coa_id          OUT NOCOPY NUMBER
3212 , x_value_type_code            OUT NOCOPY VARCHAR2
3213 )
3214 RETURN NUMBER
3215 IS
3216 l_component_type       VARCHAR2(80)  ;
3217 l_component_code       VARCHAR2(30)  ;
3218 l_component_type_code  VARCHAR2(1)   ;
3219 l_component_appl_id    INTEGER       ;
3220 l_amb_context_code     VARCHAR2(30)  ;
3221 l_log_module           VARCHAR2(240) ;
3222 l_output_value         NUMBER        ;
3223 BEGIN
3224 IF g_log_enabled THEN
3225       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_24';
3226 END IF;
3227 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3228       trace
3229          (p_msg      => 'BEGIN of AcctDerRule_24'
3230          ,p_level    => C_LEVEL_PROCEDURE
3231          ,p_module   => l_log_module);
3232 END IF;
3233 --
3234 l_component_type         := 'AMB_ADR';
3235 l_component_code         := 'REALIZED_GAINS_RULE';
3236 l_component_type_code    := 'S';
3237 l_component_appl_id      :=  275;
3238 l_amb_context_code       := 'DEFAULT';
3239 x_transaction_coa_id     :=  null;
3240 x_accounting_coa_id      :=  null;
3241 --
3242 
3243  --
3244   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3248          ,p_module   => l_log_module);
3245       trace
3246          (p_msg      => 'END of AcctDerRule_24'
3247          ,p_level    => C_LEVEL_PROCEDURE
3249   END IF;
3250   x_value_type_code := 'S';
3251   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_17));
3252   RETURN l_output_value;
3253 
3254 --
3255 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3256       trace
3257          (p_msg      => 'END of AcctDerRule_24(invalid)'
3258          ,p_level    => C_LEVEL_PROCEDURE
3259          ,p_module   => l_log_module);
3260 END IF;
3261 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3262 x_value_type_code := null;
3263 l_output_value    := null;
3264 xla_accounting_err_pkg.build_message
3265                  (p_appli_s_name            => 'XLA'
3266                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3267                  ,p_token_1                 => 'COMPONENT_NAME'
3268                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3269                                                             l_component_type
3270                                                           , l_component_code
3271                                                           , l_component_type_code
3272                                                           , l_component_appl_id
3273                                                           , l_amb_context_code
3274                                                           )
3275                  ,p_token_2                 => 'OWNER'
3276                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3277                                                         'XLA_OWNER_TYPE'
3278                                                         ,l_component_type_code
3279                                                         )
3280                  ,p_token_3                 => 'PAD_NAME'
3281                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3282                  ,p_token_4                 => 'PAD_OWNER'
3283                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3284                                                         'XLA_OWNER_TYPE'
3285                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3286                                                         )
3287                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3288                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3289                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3290                  ,p_ae_header_id            => NULL
3291 );
3292 RETURN l_output_value;
3293 EXCEPTION
3294   WHEN xla_exceptions_pkg.application_exception THEN
3295       RAISE;
3296   WHEN OTHERS THEN
3297        xla_exceptions_pkg.raise_message
3298            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_24');
3299 END AcctDerRule_24;
3300 --
3301 
3302 ---------------------------------------
3303 --
3304 -- PRIVATE FUNCTION
3305 --         AcctDerRule_25
3306 --
3307 ---------------------------------------
3308 FUNCTION AcctDerRule_25 (
3309   p_application_id              IN NUMBER
3310 , p_ae_header_id                IN NUMBER
3311 , p_side                        IN VARCHAR2 
3312 --Realized Losses CCID
3313  , p_source_18            IN NUMBER
3314 , x_transaction_coa_id         OUT NOCOPY NUMBER
3315 , x_accounting_coa_id          OUT NOCOPY NUMBER
3316 , x_value_type_code            OUT NOCOPY VARCHAR2
3317 )
3318 RETURN NUMBER
3319 IS
3320 l_component_type       VARCHAR2(80)  ;
3321 l_component_code       VARCHAR2(30)  ;
3322 l_component_type_code  VARCHAR2(1)   ;
3323 l_component_appl_id    INTEGER       ;
3324 l_amb_context_code     VARCHAR2(30)  ;
3325 l_log_module           VARCHAR2(240) ;
3326 l_output_value         NUMBER        ;
3327 BEGIN
3328 IF g_log_enabled THEN
3329       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_25';
3330 END IF;
3331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3332       trace
3333          (p_msg      => 'BEGIN of AcctDerRule_25'
3334          ,p_level    => C_LEVEL_PROCEDURE
3335          ,p_module   => l_log_module);
3336 END IF;
3337 --
3338 l_component_type         := 'AMB_ADR';
3339 l_component_code         := 'REALIZED_LOSSES_RULE';
3340 l_component_type_code    := 'S';
3341 l_component_appl_id      :=  275;
3342 l_amb_context_code       := 'DEFAULT';
3343 x_transaction_coa_id     :=  null;
3344 x_accounting_coa_id      :=  null;
3345 --
3346 
3347  --
3348   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3349       trace
3350          (p_msg      => 'END of AcctDerRule_25'
3351          ,p_level    => C_LEVEL_PROCEDURE
3352          ,p_module   => l_log_module);
3353   END IF;
3354   x_value_type_code := 'S';
3355   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_18));
3356   RETURN l_output_value;
3357 
3358 --
3359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3360       trace
3361          (p_msg      => 'END of AcctDerRule_25(invalid)'
3362          ,p_level    => C_LEVEL_PROCEDURE
3363          ,p_module   => l_log_module);
3364 END IF;
3365 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3366 x_value_type_code := null;
3367 l_output_value    := null;
3368 xla_accounting_err_pkg.build_message
3369                  (p_appli_s_name            => 'XLA'
3370                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3371                  ,p_token_1                 => 'COMPONENT_NAME'
3372                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3373                                                             l_component_type
3374                                                           , l_component_code
3378                                                           )
3375                                                           , l_component_type_code
3376                                                           , l_component_appl_id
3377                                                           , l_amb_context_code
3379                  ,p_token_2                 => 'OWNER'
3380                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3381                                                         'XLA_OWNER_TYPE'
3382                                                         ,l_component_type_code
3383                                                         )
3384                  ,p_token_3                 => 'PAD_NAME'
3385                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3386                  ,p_token_4                 => 'PAD_OWNER'
3387                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3388                                                         'XLA_OWNER_TYPE'
3389                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3390                                                         )
3391                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3392                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3393                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3394                  ,p_ae_header_id            => NULL
3395 );
3396 RETURN l_output_value;
3397 EXCEPTION
3398   WHEN xla_exceptions_pkg.application_exception THEN
3399       RAISE;
3400   WHEN OTHERS THEN
3401        xla_exceptions_pkg.raise_message
3402            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_25');
3403 END AcctDerRule_25;
3404 --
3405 
3406 ---------------------------------------
3407 --
3408 -- PRIVATE FUNCTION
3409 --         AcctDerRule_26
3410 --
3411 ---------------------------------------
3412 FUNCTION AcctDerRule_26 (
3413   p_application_id              IN NUMBER
3414 , p_ae_header_id                IN NUMBER
3415 , p_side                        IN VARCHAR2 
3416 --Revenue CCID
3417  , p_source_19            IN NUMBER
3418 , x_transaction_coa_id         OUT NOCOPY NUMBER
3419 , x_accounting_coa_id          OUT NOCOPY NUMBER
3420 , x_value_type_code            OUT NOCOPY VARCHAR2
3421 )
3422 RETURN NUMBER
3423 IS
3424 l_component_type       VARCHAR2(80)  ;
3425 l_component_code       VARCHAR2(30)  ;
3426 l_component_type_code  VARCHAR2(1)   ;
3427 l_component_appl_id    INTEGER       ;
3428 l_amb_context_code     VARCHAR2(30)  ;
3429 l_log_module           VARCHAR2(240) ;
3430 l_output_value         NUMBER        ;
3431 BEGIN
3432 IF g_log_enabled THEN
3433       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_26';
3434 END IF;
3435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3436       trace
3437          (p_msg      => 'BEGIN of AcctDerRule_26'
3438          ,p_level    => C_LEVEL_PROCEDURE
3439          ,p_module   => l_log_module);
3440 END IF;
3441 --
3442 l_component_type         := 'AMB_ADR';
3443 l_component_code         := 'REVENUE_RULE';
3444 l_component_type_code    := 'S';
3445 l_component_appl_id      :=  275;
3446 l_amb_context_code       := 'DEFAULT';
3447 x_transaction_coa_id     :=  null;
3448 x_accounting_coa_id      :=  null;
3449 --
3450 
3451  --
3452   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3453       trace
3454          (p_msg      => 'END of AcctDerRule_26'
3455          ,p_level    => C_LEVEL_PROCEDURE
3456          ,p_module   => l_log_module);
3457   END IF;
3458   x_value_type_code := 'S';
3459   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_19));
3460   RETURN l_output_value;
3461 
3462 --
3463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3464       trace
3465          (p_msg      => 'END of AcctDerRule_26(invalid)'
3466          ,p_level    => C_LEVEL_PROCEDURE
3467          ,p_module   => l_log_module);
3468 END IF;
3469 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3470 x_value_type_code := null;
3471 l_output_value    := null;
3472 xla_accounting_err_pkg.build_message
3473                  (p_appli_s_name            => 'XLA'
3474                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3475                  ,p_token_1                 => 'COMPONENT_NAME'
3476                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3477                                                             l_component_type
3478                                                           , l_component_code
3479                                                           , l_component_type_code
3480                                                           , l_component_appl_id
3481                                                           , l_amb_context_code
3482                                                           )
3483                  ,p_token_2                 => 'OWNER'
3484                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3485                                                         'XLA_OWNER_TYPE'
3486                                                         ,l_component_type_code
3487                                                         )
3488                  ,p_token_3                 => 'PAD_NAME'
3489                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3490                  ,p_token_4                 => 'PAD_OWNER'
3491                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3492                                                         'XLA_OWNER_TYPE'
3493                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3494                                                         )
3498                  ,p_ae_header_id            => NULL
3495                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3496                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3497                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3499 );
3500 RETURN l_output_value;
3501 EXCEPTION
3502   WHEN xla_exceptions_pkg.application_exception THEN
3503       RAISE;
3504   WHEN OTHERS THEN
3505        xla_exceptions_pkg.raise_message
3506            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_26');
3507 END AcctDerRule_26;
3508 --
3509 
3510 ---------------------------------------
3511 --
3512 -- PRIVATE FUNCTION
3513 --         AcctDerRule_27
3514 --
3515 ---------------------------------------
3516 FUNCTION AcctDerRule_27 (
3517   p_application_id              IN NUMBER
3518 , p_ae_header_id                IN NUMBER
3519 , p_side                        IN VARCHAR2 
3520 --Unbilled Receivables CCID
3521  , p_source_20            IN NUMBER
3522 , x_transaction_coa_id         OUT NOCOPY NUMBER
3523 , x_accounting_coa_id          OUT NOCOPY NUMBER
3524 , x_value_type_code            OUT NOCOPY VARCHAR2
3525 )
3526 RETURN NUMBER
3527 IS
3528 l_component_type       VARCHAR2(80)  ;
3529 l_component_code       VARCHAR2(30)  ;
3530 l_component_type_code  VARCHAR2(1)   ;
3531 l_component_appl_id    INTEGER       ;
3532 l_amb_context_code     VARCHAR2(30)  ;
3533 l_log_module           VARCHAR2(240) ;
3534 l_output_value         NUMBER        ;
3535 BEGIN
3536 IF g_log_enabled THEN
3537       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_27';
3538 END IF;
3539 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3540       trace
3541          (p_msg      => 'BEGIN of AcctDerRule_27'
3542          ,p_level    => C_LEVEL_PROCEDURE
3543          ,p_module   => l_log_module);
3544 END IF;
3545 --
3546 l_component_type         := 'AMB_ADR';
3547 l_component_code         := 'UBR_RULE';
3548 l_component_type_code    := 'S';
3549 l_component_appl_id      :=  275;
3550 l_amb_context_code       := 'DEFAULT';
3551 x_transaction_coa_id     :=  null;
3552 x_accounting_coa_id      :=  null;
3553 --
3554 
3555  --
3556   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3557       trace
3558          (p_msg      => 'END of AcctDerRule_27'
3559          ,p_level    => C_LEVEL_PROCEDURE
3560          ,p_module   => l_log_module);
3561   END IF;
3562   x_value_type_code := 'S';
3563   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_20));
3564   RETURN l_output_value;
3565 
3566 --
3567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3568       trace
3569          (p_msg      => 'END of AcctDerRule_27(invalid)'
3570          ,p_level    => C_LEVEL_PROCEDURE
3571          ,p_module   => l_log_module);
3572 END IF;
3573 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3574 x_value_type_code := null;
3575 l_output_value    := null;
3576 xla_accounting_err_pkg.build_message
3577                  (p_appli_s_name            => 'XLA'
3578                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3579                  ,p_token_1                 => 'COMPONENT_NAME'
3580                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3581                                                             l_component_type
3582                                                           , l_component_code
3583                                                           , l_component_type_code
3584                                                           , l_component_appl_id
3585                                                           , l_amb_context_code
3586                                                           )
3587                  ,p_token_2                 => 'OWNER'
3588                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3589                                                         'XLA_OWNER_TYPE'
3590                                                         ,l_component_type_code
3591                                                         )
3592                  ,p_token_3                 => 'PAD_NAME'
3593                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3594                  ,p_token_4                 => 'PAD_OWNER'
3595                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3596                                                         'XLA_OWNER_TYPE'
3597                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3598                                                         )
3599                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3600                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3601                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3602                  ,p_ae_header_id            => NULL
3603 );
3604 RETURN l_output_value;
3605 EXCEPTION
3606   WHEN xla_exceptions_pkg.application_exception THEN
3607       RAISE;
3608   WHEN OTHERS THEN
3609        xla_exceptions_pkg.raise_message
3610            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_27');
3611 END AcctDerRule_27;
3612 --
3613 
3614 ---------------------------------------
3615 --
3616 -- PRIVATE FUNCTION
3617 --         AcctDerRule_28
3618 --
3619 ---------------------------------------
3620 FUNCTION AcctDerRule_28 (
3621   p_application_id              IN NUMBER
3622 , p_ae_header_id                IN NUMBER
3623 , p_side                        IN VARCHAR2 
3624 --Unearned Revenue CCID
3625  , p_source_21            IN NUMBER
3626 , x_transaction_coa_id         OUT NOCOPY NUMBER
3627 , x_accounting_coa_id          OUT NOCOPY NUMBER
3631 IS
3628 , x_value_type_code            OUT NOCOPY VARCHAR2
3629 )
3630 RETURN NUMBER
3632 l_component_type       VARCHAR2(80)  ;
3633 l_component_code       VARCHAR2(30)  ;
3634 l_component_type_code  VARCHAR2(1)   ;
3635 l_component_appl_id    INTEGER       ;
3636 l_amb_context_code     VARCHAR2(30)  ;
3637 l_log_module           VARCHAR2(240) ;
3638 l_output_value         NUMBER        ;
3639 BEGIN
3640 IF g_log_enabled THEN
3641       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_28';
3642 END IF;
3643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3644       trace
3645          (p_msg      => 'BEGIN of AcctDerRule_28'
3646          ,p_level    => C_LEVEL_PROCEDURE
3647          ,p_module   => l_log_module);
3648 END IF;
3649 --
3650 l_component_type         := 'AMB_ADR';
3651 l_component_code         := 'UER_RULE';
3652 l_component_type_code    := 'S';
3653 l_component_appl_id      :=  275;
3654 l_amb_context_code       := 'DEFAULT';
3655 x_transaction_coa_id     :=  null;
3656 x_accounting_coa_id      :=  null;
3657 --
3658 
3659  --
3660   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3661       trace
3662          (p_msg      => 'END of AcctDerRule_28'
3663          ,p_level    => C_LEVEL_PROCEDURE
3664          ,p_module   => l_log_module);
3665   END IF;
3666   x_value_type_code := 'S';
3667   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_21));
3668   RETURN l_output_value;
3669 
3670 --
3671 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3672       trace
3673          (p_msg      => 'END of AcctDerRule_28(invalid)'
3674          ,p_level    => C_LEVEL_PROCEDURE
3675          ,p_module   => l_log_module);
3676 END IF;
3677 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3678 x_value_type_code := null;
3679 l_output_value    := null;
3680 xla_accounting_err_pkg.build_message
3681                  (p_appli_s_name            => 'XLA'
3682                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3683                  ,p_token_1                 => 'COMPONENT_NAME'
3684                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3685                                                             l_component_type
3686                                                           , l_component_code
3687                                                           , l_component_type_code
3688                                                           , l_component_appl_id
3689                                                           , l_amb_context_code
3690                                                           )
3691                  ,p_token_2                 => 'OWNER'
3692                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3693                                                         'XLA_OWNER_TYPE'
3694                                                         ,l_component_type_code
3695                                                         )
3696                  ,p_token_3                 => 'PAD_NAME'
3697                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3698                  ,p_token_4                 => 'PAD_OWNER'
3699                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3700                                                         'XLA_OWNER_TYPE'
3701                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3702                                                         )
3703                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3704                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3705                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3706                  ,p_ae_header_id            => NULL
3707 );
3708 RETURN l_output_value;
3709 EXCEPTION
3710   WHEN xla_exceptions_pkg.application_exception THEN
3711       RAISE;
3712   WHEN OTHERS THEN
3713        xla_exceptions_pkg.raise_message
3714            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctDerRule_28');
3715 END AcctDerRule_28;
3716 --
3717 
3718 ---------------------------------------
3719 --
3720 -- PRIVATE FUNCTION
3721 --         AcctLineType_29
3722 --
3723 ---------------------------------------
3724 PROCEDURE AcctLineType_29 (
3725   p_application_id        IN NUMBER
3726  ,p_event_id              IN NUMBER
3727  ,p_calculate_acctd_flag  IN VARCHAR2
3728  ,p_calculate_g_l_flag    IN VARCHAR2
3729  ,p_actual_flag           IN OUT VARCHAR2
3730  ,p_balance_type_code     OUT VARCHAR2
3731  ,p_gain_or_loss_ref      OUT VARCHAR2
3732  
3733 --Cost CCID
3734  , p_source_4            IN NUMBER
3735 --Allow Account Override Flag
3736  , p_source_5            IN VARCHAR2
3737 --Adjustment Cost CCID
3738  , p_source_6            IN NUMBER
3739 --Cost Clearing CCID
3740  , p_source_7            IN NUMBER
3741 --Exchange Rate Variance Flag
3742  , p_source_22            IN VARCHAR2
3743 --Reversing Line Flag
3744  , p_source_23            IN VARCHAR2
3745 --Actual Upgrade Credit Accounting Class
3746  , p_source_24            IN VARCHAR2
3747 --Entered Raw Cost
3748  , p_source_25            IN NUMBER
3749 --Entered Currency Code
3750  , p_source_26            IN VARCHAR2
3751 --Accounted Raw Cost
3752  , p_source_27            IN NUMBER
3753 --Exchange Rate Date
3754  , p_source_28            IN DATE
3755 --Exchange Rate
3756  , p_source_29            IN NUMBER
3757 --Exchange Rate Type
3758  , p_source_30            IN VARCHAR2
3759 --Actual Upgrade Debit Accounting Class
3760  , p_source_31            IN VARCHAR2
3761 --Use Actuals Upgrade Attributes Flag
3762  , p_source_32            IN VARCHAR2
3763 --Expenditure Item ID
3764  , p_source_33            IN NUMBER
3768  , p_source_35            IN VARCHAR2
3765 --Cost Distribution Line Number
3766  , p_source_34            IN NUMBER
3767 --Line Type
3769  , p_source_35_meaning    IN VARCHAR2
3770 --Reversed Line Number
3771  , p_source_36            IN NUMBER
3772 )
3773 IS
3774 
3775 l_component_type              VARCHAR2(80);
3776 l_component_code              VARCHAR2(30);
3777 l_component_type_code         VARCHAR2(1);
3778 l_component_appl_id           INTEGER;
3779 l_amb_context_code            VARCHAR2(30);
3780 l_entity_code                 VARCHAR2(30);
3781 l_event_class_code            VARCHAR2(30);
3782 l_ae_header_id                NUMBER;
3783 l_event_type_code             VARCHAR2(30);
3784 l_line_definition_code        VARCHAR2(30);
3785 l_line_definition_owner_code  VARCHAR2(1);
3786 --
3787 -- adr variables
3788 l_segment                     VARCHAR2(30);
3789 l_ccid                        NUMBER;
3790 l_adr_transaction_coa_id      NUMBER;
3791 l_adr_accounting_coa_id       NUMBER;
3792 l_adr_flexfield_segment_code  VARCHAR2(30);
3793 l_adr_flex_value_set_id       NUMBER;
3794 l_adr_value_type_code         VARCHAR2(30);
3795 l_adr_value_combination_id    NUMBER;
3796 l_adr_value_segment_code      VARCHAR2(30);
3797 
3798 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3799 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3800 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3801 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3802 
3803 -- 4262811 Variables ------------------------------------------------------------------------------------------
3804 l_entered_amt_idx             NUMBER;
3805 l_accted_amt_idx              NUMBER;
3806 l_acc_rev_flag                VARCHAR2(1);
3807 l_accrual_line_num            NUMBER;
3808 l_tmp_amt                     NUMBER;
3809 l_acc_rev_natural_side_code   VARCHAR2(1);
3810 
3811 l_num_entries                 NUMBER;
3812 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3813 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3814 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3815 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3816 l_recog_line_1                NUMBER;
3817 l_recog_line_2                NUMBER;
3818 
3819 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3820 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3821 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3822 
3823 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3824 
3825 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3826 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3827 
3828 ---------------------------------------------------------------------------------------------------------------
3829 
3830 
3831 --
3832 -- bulk performance
3833 --
3834 l_balance_type_code           VARCHAR2(1);
3835 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3836 l_log_module                  VARCHAR2(240);
3837 
3838 --
3839 -- Upgrade strategy
3840 --
3841 l_actual_upg_option           VARCHAR2(1);
3842 l_enc_upg_option           VARCHAR2(1);
3843 
3844 --
3845 BEGIN
3846 --
3847 IF g_log_enabled THEN
3848       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
3849 END IF;
3850 --
3851 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3852 
3853       trace
3854          (p_msg      => 'BEGIN of AcctLineType_29'
3855          ,p_level    => C_LEVEL_PROCEDURE
3856          ,p_module   => l_log_module);
3857 
3858 END IF;
3859 --
3860 l_component_type             := 'AMB_JLT';
3861 l_component_code             := 'EXCHANGE_RATE_VARIANCE';
3862 l_component_type_code        := 'S';
3863 l_component_appl_id          :=  275;
3864 l_amb_context_code           := 'DEFAULT';
3865 l_entity_code                := 'EXPENDITURES';
3866 l_event_class_code           := 'SUPPLIER_COST';
3867 l_event_type_code            := 'SUPPLIER_COST_ALL';
3868 l_line_definition_owner_code := 'S';
3869 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
3870 --
3871 l_balance_type_code          := 'A';
3872 l_segment                     := NULL;
3873 l_ccid                        := NULL;
3874 l_adr_transaction_coa_id      := NULL;
3875 l_adr_accounting_coa_id       := NULL;
3876 l_adr_flexfield_segment_code  := NULL;
3877 l_adr_flex_value_set_id       := NULL;
3878 l_adr_value_type_code         := NULL;
3879 l_adr_value_combination_id    := NULL;
3880 l_adr_value_segment_code      := NULL;
3881 
3882 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3883 l_bflow_class_code           := '';    -- 4219869 Business Flow
3884 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3885 l_budgetary_control_flag     := 'N';
3886 
3887 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3888 l_bflow_applied_to_amt       := NULL; -- 5132302
3889 l_entered_amt_idx            := NULL;          -- 4262811
3890 l_accted_amt_idx             := NULL;          -- 4262811
3891 l_acc_rev_flag               := NULL;          -- 4262811
3892 l_accrual_line_num           := NULL;          -- 4262811
3893 l_tmp_amt                    := NULL;          -- 4262811
3894 --
3895 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
3896             (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
3897                return;
3898   END IF;
3899   
3903 ') =  'Y'
3900 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3901     l_balance_type_code <> 'B' THEN
3902 IF NVL(p_source_22,'
3904  THEN 
3905 
3906    --
3907    XLA_AE_LINES_PKG.SetNewLine;
3908 
3909    p_balance_type_code          := l_balance_type_code;
3910    -- set the flag so later we will know whether the gain loss line needs to be created
3911    
3912    IF(l_balance_type_code = 'A' ) THEN
3913      p_actual_flag :='G';
3914    END IF;
3915 
3916    --
3917    -- bulk performance
3918    --
3919    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3920                                       p_header_num   => 0); -- 4262811
3921    --
3922    -- set accounting line options
3923    --
3924    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3925            p_natural_side_code          => 'D'
3926          , p_gain_or_loss_flag          => 'Y'
3927          , p_gl_transfer_mode_code      => 'S'
3928          , p_acct_entry_type_code       => 'A'
3929          , p_switch_side_flag           => 'Y'
3930          , p_merge_duplicate_code       => 'N'
3931          );
3932    --
3933    l_acc_rev_natural_side_code := 'C';  -- 4262811
3934    -- 
3935    --
3936    -- set accounting line type info
3937    --
3938    xla_ae_lines_pkg.SetAcctLineType
3939       (p_component_type             => l_component_type
3940       ,p_event_type_code            => l_event_type_code
3941       ,p_line_definition_owner_code => l_line_definition_owner_code
3942       ,p_line_definition_code       => l_line_definition_code
3943       ,p_accounting_line_code       => l_component_code
3944       ,p_accounting_line_type_code  => l_component_type_code
3945       ,p_accounting_line_appl_id    => l_component_appl_id
3946       ,p_amb_context_code           => l_amb_context_code
3947       ,p_entity_code                => l_entity_code
3948       ,p_event_class_code           => l_event_class_code);
3949    --
3950    -- set accounting class
3951    --
3952    xla_ae_lines_pkg.SetAcctClass(
3953            p_accounting_class_code  => 'EXCHANGE_RATE_VARIANCE'
3954          , p_ae_header_id           => l_ae_header_id
3955          );
3956 
3957    --
3958    -- set rounding class
3959    --
3960    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3961                       'EXCHANGE_RATE_VARIANCE';
3962 
3963    --
3964    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3965    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3966    --
3967    -- bulk performance
3968    --
3969    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3970 
3971    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3972       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3973 
3974    -- 4955764
3975    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3976       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3977 
3978    -- 4458381 Public Sector Enh
3979    
3980    --
3981    -- set accounting attributes for the line type
3982    --
3983    l_entered_amt_idx := 22;
3984    l_accted_amt_idx  := 27;
3985    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3986    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
3987    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
3988    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
3989    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
3990    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
3991    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
3992    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
3993    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
3994    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
3995    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
3996    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
3997    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
3998    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
3999    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
4000    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
4001    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
4002    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
4003    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
4004    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
4005    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
4006    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
4007    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
4008    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
4009    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
4010    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
4011    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
4012    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
4013    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
4014    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
4015    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
4016    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
4017    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
4018    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
4019    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
4020    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
4021    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
4025    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
4022    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
4023    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
4024    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
4026    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
4027    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
4028    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
4029    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
4030    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
4031    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
4032    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
4033    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
4034    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
4035    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
4036    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
4037    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
4038    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
4039    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
4040    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
4041    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
4042    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
4043    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
4044    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
4045    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
4046 
4047    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4048    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4049 
4050    ---------------------------------------------------------------------------------------------------------------
4051    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4052    ---------------------------------------------------------------------------------------------------------------
4053    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4054 
4055    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4056    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4057 
4058    IF xla_accounting_cache_pkg.GetValueChar
4059          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4060          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4061    AND l_bflow_method_code = 'PRIOR_ENTRY'
4062 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4063    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4064          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4065        )
4066    THEN
4067          xla_ae_lines_pkg.BflowUpgEntry
4068            (p_business_method_code    => l_bflow_method_code
4069            ,p_business_class_code     => l_bflow_class_code
4070            ,p_balance_type            => l_balance_type_code);
4071    ELSE
4072       NULL;
4073 -- No business flow processing for business flow method of NONE.
4074    END IF;
4075 
4076    --
4077    -- call analytical criteria
4078    --
4079    
4080    --
4081    -- call description
4082    --
4083    -- No description or it is inherited.
4084    --
4085    -- call ADRs
4086    -- Bug 4922099
4087    --
4088    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4089         (NVL(l_actual_upg_option, 'N') = 'O') OR
4090         (NVL(l_enc_upg_option, 'N') = 'O')
4091       )
4092    THEN
4093    NULL;
4094    --
4095    --
4096    
4097   l_ccid := AcctDerRule_12(
4098            p_application_id           => p_application_id
4099          , p_ae_header_id             => l_ae_header_id 
4100 , p_source_4 => p_source_4
4101 , p_source_5 => p_source_5
4102 , p_source_6 => p_source_6
4103          , x_transaction_coa_id       => l_adr_transaction_coa_id
4104          , x_accounting_coa_id        => l_adr_accounting_coa_id
4105          , x_value_type_code          => l_adr_value_type_code
4106          , p_side                     => 'NA'
4107    );
4108 
4109    xla_ae_lines_pkg.set_ccid(
4110     p_code_combination_id          => l_ccid
4111   , p_value_type_code              => l_adr_value_type_code
4112   , p_transaction_coa_id           => l_adr_transaction_coa_id
4113   , p_accounting_coa_id            => l_adr_accounting_coa_id
4114   , p_adr_code                     => 'PA_COST_ACCT_RULE'
4115   , p_adr_type_code                => 'S'
4116   , p_component_type               => l_component_type
4117   , p_component_code               => l_component_code
4118   , p_component_type_code          => l_component_type_code
4119   , p_component_appl_id            => l_component_appl_id
4120   , p_amb_context_code             => l_amb_context_code
4121   , p_side                         => 'NA'
4122   );
4123 
4124 
4125    --
4126    --
4127    END IF;
4128    --
4129    -- Bug 4922099
4130    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4131           (NVL(l_enc_upg_option, 'N') = 'O')
4132         ) AND
4133         (l_bflow_method_code = 'PRIOR_ENTRY')
4134       )
4135    THEN
4136       IF
4137       --
4138       1 = 2
4139       --
4140       THEN
4141       xla_accounting_err_pkg.build_message
4142                                     (p_appli_s_name            => 'XLA'
4143                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4144                                     ,p_token_1                 => 'LINE_NUMBER'
4145                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4149                                                                             ,l_component_code
4146                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4147                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4148                                                                              l_component_type
4150                                                                             ,l_component_type_code
4151                                                                             ,l_component_appl_id
4152                                                                             ,l_amb_context_code
4153                                                                             ,l_entity_code
4154                                                                             ,l_event_class_code
4155                                                                            )
4156                                     ,p_token_3                 => 'OWNER'
4157                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4158                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4159                                                                           ,p_lookup_code    => l_component_type_code
4160                                                                          )
4161                                     ,p_token_4                 => 'PRODUCT_NAME'
4162                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4163                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4164                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4165                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4166                                     ,p_ae_header_id            =>  NULL
4167                                        );
4168 
4169         IF (C_LEVEL_ERROR>= g_log_level) THEN
4170                  trace
4171                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4172                       ,p_level    => C_LEVEL_ERROR
4173                       ,p_module   => l_log_module);
4174         END IF;
4175       END IF;
4176    END IF;
4177    --
4178    --
4179    ------------------------------------------------------------------------------------------------
4180    -- 4219869 Business Flow
4181    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4182    -- Prior Entry.  Currently, the following code is always generated.
4183    ------------------------------------------------------------------------------------------------
4184    XLA_AE_LINES_PKG.ValidateCurrentLine;
4185 
4186    ------------------------------------------------------------------------------------
4187    -- 4219869 Business Flow
4188    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4189    ------------------------------------------------------------------------------------
4190    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4191 
4192    ----------------------------------------------------------------------------------
4193    -- 4219869 Business Flow
4194    -- Update journal entry status -- Need to generate this within IF <condition>
4195    ----------------------------------------------------------------------------------
4196    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4197          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4198          ,p_balance_type_code => l_balance_type_code
4199          );
4200 
4201    -------------------------------------------------------------------------------------------
4202    -- 4262811 - Generate the Accrual Reversal lines
4203    -------------------------------------------------------------------------------------------
4204    BEGIN
4205       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4206                               (g_array_event(p_event_id).array_value_num('header_index'));
4207       IF l_acc_rev_flag IS NULL THEN
4208          l_acc_rev_flag := 'N';
4209       END IF;
4210    EXCEPTION
4211       WHEN OTHERS THEN
4212          l_acc_rev_flag := 'N';
4213    END;
4214    --
4215    IF (l_acc_rev_flag = 'Y') THEN
4216 
4217        -- 4645092  ------------------------------------------------------------------------------
4218        -- To allow MPA report to determine if it should generate report process
4219        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4220        ------------------------------------------------------------------------------------------
4221 
4222        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4223        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4224 
4225        --
4226        -- Update the line information that should be overwritten
4227        --
4228        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4229                                          p_header_num   => 1);
4230        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4231 
4232        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4233 
4234        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4235           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4236        END IF;
4237 
4238       --
4239       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4240       --
4241       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4242           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4243       ELSE
4244           ---------------------------------------------------------------------------------------------------
4248           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4245           -- 4262811a Switch Sign
4246           ---------------------------------------------------------------------------------------------------
4247           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4249                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4250           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4251                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4252           -- 5132302
4253           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4254                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4255 
4256       END IF;
4257 
4258       -- 4955764
4259       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4260       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4261 
4262 
4263       XLA_AE_LINES_PKG.ValidateCurrentLine;
4264       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4265 
4266       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4267                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4268                ,p_balance_type_code => l_balance_type_code);
4269 
4270    END IF;
4271 
4272    -----------------------------------------------------------------------------------------
4273    -- 4262811 Multiperiod Accounting
4274    -----------------------------------------------------------------------------------------
4275      -- No MPA option is assigned.
4276 
4277 
4278 END IF;
4279 END IF;
4280 --
4281 
4282 --
4283 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4284    trace
4285       (p_msg      => 'END of AcctLineType_29'
4286       ,p_level    => C_LEVEL_PROCEDURE
4287       ,p_module   => l_log_module);
4288 END IF;
4289 --
4290 EXCEPTION
4291   WHEN xla_exceptions_pkg.application_exception THEN
4292       RAISE;
4293   WHEN OTHERS THEN
4294        xla_exceptions_pkg.raise_message
4295            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_29');
4296 END AcctLineType_29;
4297 --
4298 
4299 ---------------------------------------
4300 --
4301 -- PRIVATE FUNCTION
4302 --         AcctLineType_30
4303 --
4304 ---------------------------------------
4305 PROCEDURE AcctLineType_30 (
4306   p_application_id        IN NUMBER
4307  ,p_event_id              IN NUMBER
4308  ,p_calculate_acctd_flag  IN VARCHAR2
4309  ,p_calculate_g_l_flag    IN VARCHAR2
4310  ,p_actual_flag           IN OUT VARCHAR2
4311  ,p_balance_type_code     OUT VARCHAR2
4312  ,p_gain_or_loss_ref      OUT VARCHAR2
4313  
4314 --Cost CCID
4315  , p_source_4            IN NUMBER
4316 --Allow Account Override Flag
4317  , p_source_5            IN VARCHAR2
4318 --Adjustment Cost CCID
4319  , p_source_6            IN NUMBER
4320 --Cost Clearing CCID
4321  , p_source_7            IN NUMBER
4322 --Exchange Rate Variance Flag
4323  , p_source_22            IN VARCHAR2
4324 --Reversing Line Flag
4325  , p_source_23            IN VARCHAR2
4326 --Actual Upgrade Credit Accounting Class
4327  , p_source_24            IN VARCHAR2
4328 --Entered Raw Cost
4329  , p_source_25            IN NUMBER
4330 --Entered Currency Code
4331  , p_source_26            IN VARCHAR2
4332 --Accounted Raw Cost
4333  , p_source_27            IN NUMBER
4334 --Exchange Rate Date
4335  , p_source_28            IN DATE
4336 --Exchange Rate
4337  , p_source_29            IN NUMBER
4338 --Exchange Rate Type
4339  , p_source_30            IN VARCHAR2
4340 --Actual Upgrade Debit Accounting Class
4341  , p_source_31            IN VARCHAR2
4342 --Use Actuals Upgrade Attributes Flag
4343  , p_source_32            IN VARCHAR2
4344 --Expenditure Item ID
4345  , p_source_33            IN NUMBER
4346 --Cost Distribution Line Number
4347  , p_source_34            IN NUMBER
4348 --Line Type
4349  , p_source_35            IN VARCHAR2
4350  , p_source_35_meaning    IN VARCHAR2
4351 --Reversed Line Number
4352  , p_source_36            IN NUMBER
4353 )
4354 IS
4355 
4356 l_component_type              VARCHAR2(80);
4357 l_component_code              VARCHAR2(30);
4358 l_component_type_code         VARCHAR2(1);
4359 l_component_appl_id           INTEGER;
4360 l_amb_context_code            VARCHAR2(30);
4361 l_entity_code                 VARCHAR2(30);
4362 l_event_class_code            VARCHAR2(30);
4363 l_ae_header_id                NUMBER;
4364 l_event_type_code             VARCHAR2(30);
4365 l_line_definition_code        VARCHAR2(30);
4366 l_line_definition_owner_code  VARCHAR2(1);
4367 --
4368 -- adr variables
4369 l_segment                     VARCHAR2(30);
4370 l_ccid                        NUMBER;
4371 l_adr_transaction_coa_id      NUMBER;
4372 l_adr_accounting_coa_id       NUMBER;
4373 l_adr_flexfield_segment_code  VARCHAR2(30);
4374 l_adr_flex_value_set_id       NUMBER;
4375 l_adr_value_type_code         VARCHAR2(30);
4376 l_adr_value_combination_id    NUMBER;
4377 l_adr_value_segment_code      VARCHAR2(30);
4378 
4379 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4380 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4381 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4382 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4383 
4384 -- 4262811 Variables ------------------------------------------------------------------------------------------
4385 l_entered_amt_idx             NUMBER;
4386 l_accted_amt_idx              NUMBER;
4390 l_acc_rev_natural_side_code   VARCHAR2(1);
4387 l_acc_rev_flag                VARCHAR2(1);
4388 l_accrual_line_num            NUMBER;
4389 l_tmp_amt                     NUMBER;
4391 
4392 l_num_entries                 NUMBER;
4393 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4394 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4395 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4396 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4397 l_recog_line_1                NUMBER;
4398 l_recog_line_2                NUMBER;
4399 
4400 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4401 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4402 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4403 
4404 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4405 
4406 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4407 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4408 
4409 ---------------------------------------------------------------------------------------------------------------
4410 
4411 
4412 --
4413 -- bulk performance
4414 --
4415 l_balance_type_code           VARCHAR2(1);
4416 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4417 l_log_module                  VARCHAR2(240);
4418 
4419 --
4420 -- Upgrade strategy
4421 --
4422 l_actual_upg_option           VARCHAR2(1);
4423 l_enc_upg_option           VARCHAR2(1);
4424 
4425 --
4426 BEGIN
4427 --
4428 IF g_log_enabled THEN
4429       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
4430 END IF;
4431 --
4432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4433 
4434       trace
4435          (p_msg      => 'BEGIN of AcctLineType_30'
4436          ,p_level    => C_LEVEL_PROCEDURE
4437          ,p_module   => l_log_module);
4438 
4439 END IF;
4440 --
4441 l_component_type             := 'AMB_JLT';
4442 l_component_code             := 'EXCHANGE_RATE_VARIANCE';
4443 l_component_type_code        := 'S';
4444 l_component_appl_id          :=  275;
4445 l_amb_context_code           := 'DEFAULT';
4446 l_entity_code                := 'EXPENDITURES';
4447 l_event_class_code           := 'SUPPLIER_COST_ADJ';
4448 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
4449 l_line_definition_owner_code := 'S';
4450 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
4451 --
4452 l_balance_type_code          := 'A';
4453 l_segment                     := NULL;
4454 l_ccid                        := NULL;
4455 l_adr_transaction_coa_id      := NULL;
4456 l_adr_accounting_coa_id       := NULL;
4457 l_adr_flexfield_segment_code  := NULL;
4458 l_adr_flex_value_set_id       := NULL;
4459 l_adr_value_type_code         := NULL;
4460 l_adr_value_combination_id    := NULL;
4461 l_adr_value_segment_code      := NULL;
4462 
4463 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4464 l_bflow_class_code           := '';    -- 4219869 Business Flow
4465 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4466 l_budgetary_control_flag     := 'N';
4467 
4468 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4469 l_bflow_applied_to_amt       := NULL; -- 5132302
4470 l_entered_amt_idx            := NULL;          -- 4262811
4471 l_accted_amt_idx             := NULL;          -- 4262811
4472 l_acc_rev_flag               := NULL;          -- 4262811
4473 l_accrual_line_num           := NULL;          -- 4262811
4474 l_tmp_amt                    := NULL;          -- 4262811
4475 --
4476 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
4477             (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
4478                return;
4479   END IF;
4480   
4481 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4482     l_balance_type_code <> 'B' THEN
4483 IF NVL(p_source_22,'
4484 ') =  'Y'
4485  THEN 
4486 
4487    --
4488    XLA_AE_LINES_PKG.SetNewLine;
4489 
4490    p_balance_type_code          := l_balance_type_code;
4491    -- set the flag so later we will know whether the gain loss line needs to be created
4492    
4493    IF(l_balance_type_code = 'A' ) THEN
4494      p_actual_flag :='G';
4495    END IF;
4496 
4497    --
4498    -- bulk performance
4499    --
4500    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4501                                       p_header_num   => 0); -- 4262811
4502    --
4503    -- set accounting line options
4504    --
4505    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4506            p_natural_side_code          => 'D'
4507          , p_gain_or_loss_flag          => 'Y'
4508          , p_gl_transfer_mode_code      => 'S'
4509          , p_acct_entry_type_code       => 'A'
4510          , p_switch_side_flag           => 'Y'
4511          , p_merge_duplicate_code       => 'N'
4512          );
4513    --
4514    l_acc_rev_natural_side_code := 'C';  -- 4262811
4515    -- 
4516    --
4517    -- set accounting line type info
4518    --
4519    xla_ae_lines_pkg.SetAcctLineType
4520       (p_component_type             => l_component_type
4521       ,p_event_type_code            => l_event_type_code
4522       ,p_line_definition_owner_code => l_line_definition_owner_code
4523       ,p_line_definition_code       => l_line_definition_code
4524       ,p_accounting_line_code       => l_component_code
4525       ,p_accounting_line_type_code  => l_component_type_code
4529       ,p_event_class_code           => l_event_class_code);
4526       ,p_accounting_line_appl_id    => l_component_appl_id
4527       ,p_amb_context_code           => l_amb_context_code
4528       ,p_entity_code                => l_entity_code
4530    --
4531    -- set accounting class
4532    --
4533    xla_ae_lines_pkg.SetAcctClass(
4534            p_accounting_class_code  => 'EXCHANGE_RATE_VARIANCE'
4535          , p_ae_header_id           => l_ae_header_id
4536          );
4537 
4538    --
4539    -- set rounding class
4540    --
4541    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4542                       'EXCHANGE_RATE_VARIANCE';
4543 
4544    --
4545    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4546    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4547    --
4548    -- bulk performance
4549    --
4550    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4551 
4552    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4553       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4554 
4555    -- 4955764
4556    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4557       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4558 
4559    -- 4458381 Public Sector Enh
4560    
4561    --
4562    -- set accounting attributes for the line type
4563    --
4564    l_entered_amt_idx := 22;
4565    l_accted_amt_idx  := 27;
4566    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4567    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
4568    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
4569    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
4570    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
4571    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
4572    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
4573    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
4574    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
4575    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
4576    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
4577    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
4578    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
4579    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
4580    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
4581    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
4582    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
4583    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
4584    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
4585    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
4586    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
4587    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
4588    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
4589    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
4590    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
4591    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
4592    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
4593    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
4594    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
4595    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
4596    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
4597    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
4598    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
4599    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
4600    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
4601    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
4602    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
4603    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
4604    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
4605    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
4606    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
4607    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
4608    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
4609    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
4610    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
4611    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
4612    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
4613    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
4614    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
4615    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
4616    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
4617    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
4618    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
4619    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
4620    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
4621    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
4622    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
4623    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
4624    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
4625    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
4626    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
4627 
4628    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4629    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4630 
4634    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4631    ---------------------------------------------------------------------------------------------------------------
4632    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4633    ---------------------------------------------------------------------------------------------------------------
4635 
4636    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4637    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4638 
4639    IF xla_accounting_cache_pkg.GetValueChar
4640          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4641          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4642    AND l_bflow_method_code = 'PRIOR_ENTRY'
4643 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4644    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4645          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4646        )
4647    THEN
4648          xla_ae_lines_pkg.BflowUpgEntry
4649            (p_business_method_code    => l_bflow_method_code
4650            ,p_business_class_code     => l_bflow_class_code
4651            ,p_balance_type            => l_balance_type_code);
4652    ELSE
4653       NULL;
4654 -- No business flow processing for business flow method of NONE.
4655    END IF;
4656 
4657    --
4658    -- call analytical criteria
4659    --
4660    
4661    --
4662    -- call description
4663    --
4664    -- No description or it is inherited.
4665    --
4666    -- call ADRs
4667    -- Bug 4922099
4668    --
4669    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4670         (NVL(l_actual_upg_option, 'N') = 'O') OR
4671         (NVL(l_enc_upg_option, 'N') = 'O')
4672       )
4673    THEN
4674    NULL;
4675    --
4676    --
4677    
4678   l_ccid := AcctDerRule_13(
4679            p_application_id           => p_application_id
4680          , p_ae_header_id             => l_ae_header_id 
4681 , p_source_5 => p_source_5
4682 , p_source_6 => p_source_6
4683          , x_transaction_coa_id       => l_adr_transaction_coa_id
4684          , x_accounting_coa_id        => l_adr_accounting_coa_id
4685          , x_value_type_code          => l_adr_value_type_code
4686          , p_side                     => 'NA'
4687    );
4688 
4689    xla_ae_lines_pkg.set_ccid(
4690     p_code_combination_id          => l_ccid
4691   , p_value_type_code              => l_adr_value_type_code
4692   , p_transaction_coa_id           => l_adr_transaction_coa_id
4693   , p_accounting_coa_id            => l_adr_accounting_coa_id
4694   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
4695   , p_adr_type_code                => 'S'
4696   , p_component_type               => l_component_type
4697   , p_component_code               => l_component_code
4698   , p_component_type_code          => l_component_type_code
4699   , p_component_appl_id            => l_component_appl_id
4700   , p_amb_context_code             => l_amb_context_code
4701   , p_side                         => 'NA'
4702   );
4703 
4704 
4705    --
4706    --
4707    END IF;
4708    --
4709    -- Bug 4922099
4710    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4711           (NVL(l_enc_upg_option, 'N') = 'O')
4712         ) AND
4713         (l_bflow_method_code = 'PRIOR_ENTRY')
4714       )
4715    THEN
4716       IF
4717       --
4718       1 = 2
4719       --
4720       THEN
4721       xla_accounting_err_pkg.build_message
4722                                     (p_appli_s_name            => 'XLA'
4723                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4724                                     ,p_token_1                 => 'LINE_NUMBER'
4725                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4726                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4727                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4728                                                                              l_component_type
4729                                                                             ,l_component_code
4730                                                                             ,l_component_type_code
4731                                                                             ,l_component_appl_id
4732                                                                             ,l_amb_context_code
4733                                                                             ,l_entity_code
4734                                                                             ,l_event_class_code
4735                                                                            )
4736                                     ,p_token_3                 => 'OWNER'
4737                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4738                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4739                                                                           ,p_lookup_code    => l_component_type_code
4740                                                                          )
4741                                     ,p_token_4                 => 'PRODUCT_NAME'
4742                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4743                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4744                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4745                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4749         IF (C_LEVEL_ERROR>= g_log_level) THEN
4746                                     ,p_ae_header_id            =>  NULL
4747                                        );
4748 
4750                  trace
4751                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4752                       ,p_level    => C_LEVEL_ERROR
4753                       ,p_module   => l_log_module);
4754         END IF;
4755       END IF;
4756    END IF;
4757    --
4758    --
4759    ------------------------------------------------------------------------------------------------
4760    -- 4219869 Business Flow
4761    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4762    -- Prior Entry.  Currently, the following code is always generated.
4763    ------------------------------------------------------------------------------------------------
4764    XLA_AE_LINES_PKG.ValidateCurrentLine;
4765 
4766    ------------------------------------------------------------------------------------
4767    -- 4219869 Business Flow
4768    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4769    ------------------------------------------------------------------------------------
4770    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4771 
4772    ----------------------------------------------------------------------------------
4773    -- 4219869 Business Flow
4774    -- Update journal entry status -- Need to generate this within IF <condition>
4775    ----------------------------------------------------------------------------------
4776    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4777          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4778          ,p_balance_type_code => l_balance_type_code
4779          );
4780 
4781    -------------------------------------------------------------------------------------------
4782    -- 4262811 - Generate the Accrual Reversal lines
4783    -------------------------------------------------------------------------------------------
4784    BEGIN
4785       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4786                               (g_array_event(p_event_id).array_value_num('header_index'));
4787       IF l_acc_rev_flag IS NULL THEN
4788          l_acc_rev_flag := 'N';
4789       END IF;
4790    EXCEPTION
4791       WHEN OTHERS THEN
4792          l_acc_rev_flag := 'N';
4793    END;
4794    --
4795    IF (l_acc_rev_flag = 'Y') THEN
4796 
4797        -- 4645092  ------------------------------------------------------------------------------
4798        -- To allow MPA report to determine if it should generate report process
4799        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4800        ------------------------------------------------------------------------------------------
4801 
4802        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4803        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4804 
4805        --
4806        -- Update the line information that should be overwritten
4807        --
4808        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4809                                          p_header_num   => 1);
4810        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4811 
4812        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4813 
4814        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4815           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4816        END IF;
4817 
4818       --
4819       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4820       --
4821       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4822           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4823       ELSE
4824           ---------------------------------------------------------------------------------------------------
4825           -- 4262811a Switch Sign
4826           ---------------------------------------------------------------------------------------------------
4827           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4828           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4829                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4830           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4831                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4832           -- 5132302
4833           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4834                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4835 
4836       END IF;
4837 
4838       -- 4955764
4839       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4841 
4842 
4843       XLA_AE_LINES_PKG.ValidateCurrentLine;
4844       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4845 
4846       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4847                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4848                ,p_balance_type_code => l_balance_type_code);
4849 
4850    END IF;
4851 
4852    -----------------------------------------------------------------------------------------
4853    -- 4262811 Multiperiod Accounting
4854    -----------------------------------------------------------------------------------------
4855      -- No MPA option is assigned.
4856 
4857 
4858 END IF;
4859 END IF;
4863 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4860 --
4861 
4862 --
4864    trace
4865       (p_msg      => 'END of AcctLineType_30'
4866       ,p_level    => C_LEVEL_PROCEDURE
4867       ,p_module   => l_log_module);
4868 END IF;
4869 --
4870 EXCEPTION
4871   WHEN xla_exceptions_pkg.application_exception THEN
4872       RAISE;
4873   WHEN OTHERS THEN
4874        xla_exceptions_pkg.raise_message
4875            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_30');
4876 END AcctLineType_30;
4877 --
4878 
4879 ---------------------------------------
4880 --
4881 -- PRIVATE FUNCTION
4882 --         AcctLineType_31
4883 --
4884 ---------------------------------------
4885 PROCEDURE AcctLineType_31 (
4886   p_application_id        IN NUMBER
4887  ,p_event_id              IN NUMBER
4888  ,p_calculate_acctd_flag  IN VARCHAR2
4889  ,p_calculate_g_l_flag    IN VARCHAR2
4890  ,p_actual_flag           IN OUT VARCHAR2
4891  ,p_balance_type_code     OUT VARCHAR2
4892  ,p_gain_or_loss_ref      OUT VARCHAR2
4893  
4894 --Cost CCID
4895  , p_source_4            IN NUMBER
4896 --Allow Account Override Flag
4897  , p_source_5            IN VARCHAR2
4898 --Cost Clearing CCID
4899  , p_source_7            IN NUMBER
4900 --Adjustment Cost Clearing CCID
4901  , p_source_8            IN NUMBER
4902 --Exchange Rate Variance Flag
4903  , p_source_22            IN VARCHAR2
4904 --Reversing Line Flag
4905  , p_source_23            IN VARCHAR2
4906 --Actual Upgrade Credit Accounting Class
4907  , p_source_24            IN VARCHAR2
4908 --Entered Raw Cost
4909  , p_source_25            IN NUMBER
4910 --Entered Currency Code
4911  , p_source_26            IN VARCHAR2
4912 --Accounted Raw Cost
4913  , p_source_27            IN NUMBER
4914 --Exchange Rate Date
4915  , p_source_28            IN DATE
4916 --Exchange Rate
4917  , p_source_29            IN NUMBER
4918 --Exchange Rate Type
4919  , p_source_30            IN VARCHAR2
4920 --Actual Upgrade Debit Accounting Class
4921  , p_source_31            IN VARCHAR2
4922 --Use Actuals Upgrade Attributes Flag
4923  , p_source_32            IN VARCHAR2
4924 --Expenditure Item ID
4925  , p_source_33            IN NUMBER
4926 --Cost Distribution Line Number
4927  , p_source_34            IN NUMBER
4928 --Line Type
4929  , p_source_35            IN VARCHAR2
4930  , p_source_35_meaning    IN VARCHAR2
4931 --Reversed Line Number
4932  , p_source_36            IN NUMBER
4933 )
4934 IS
4935 
4936 l_component_type              VARCHAR2(80);
4937 l_component_code              VARCHAR2(30);
4938 l_component_type_code         VARCHAR2(1);
4939 l_component_appl_id           INTEGER;
4940 l_amb_context_code            VARCHAR2(30);
4941 l_entity_code                 VARCHAR2(30);
4942 l_event_class_code            VARCHAR2(30);
4943 l_ae_header_id                NUMBER;
4944 l_event_type_code             VARCHAR2(30);
4945 l_line_definition_code        VARCHAR2(30);
4946 l_line_definition_owner_code  VARCHAR2(1);
4947 --
4948 -- adr variables
4949 l_segment                     VARCHAR2(30);
4950 l_ccid                        NUMBER;
4951 l_adr_transaction_coa_id      NUMBER;
4952 l_adr_accounting_coa_id       NUMBER;
4953 l_adr_flexfield_segment_code  VARCHAR2(30);
4954 l_adr_flex_value_set_id       NUMBER;
4955 l_adr_value_type_code         VARCHAR2(30);
4956 l_adr_value_combination_id    NUMBER;
4957 l_adr_value_segment_code      VARCHAR2(30);
4958 
4959 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4960 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4961 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4962 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4963 
4964 -- 4262811 Variables ------------------------------------------------------------------------------------------
4965 l_entered_amt_idx             NUMBER;
4966 l_accted_amt_idx              NUMBER;
4967 l_acc_rev_flag                VARCHAR2(1);
4968 l_accrual_line_num            NUMBER;
4969 l_tmp_amt                     NUMBER;
4970 l_acc_rev_natural_side_code   VARCHAR2(1);
4971 
4972 l_num_entries                 NUMBER;
4973 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4974 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4975 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4976 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4977 l_recog_line_1                NUMBER;
4978 l_recog_line_2                NUMBER;
4979 
4980 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4981 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4982 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4983 
4984 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4985 
4986 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4987 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4988 
4989 ---------------------------------------------------------------------------------------------------------------
4990 
4991 
4992 --
4993 -- bulk performance
4994 --
4995 l_balance_type_code           VARCHAR2(1);
4996 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4997 l_log_module                  VARCHAR2(240);
4998 
4999 --
5000 -- Upgrade strategy
5001 --
5002 l_actual_upg_option           VARCHAR2(1);
5003 l_enc_upg_option           VARCHAR2(1);
5004 
5005 --
5006 BEGIN
5007 --
5008 IF g_log_enabled THEN
5009       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
5010 END IF;
5011 --
5015          (p_msg      => 'BEGIN of AcctLineType_31'
5012 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5013 
5014       trace
5016          ,p_level    => C_LEVEL_PROCEDURE
5017          ,p_module   => l_log_module);
5018 
5019 END IF;
5020 --
5021 l_component_type             := 'AMB_JLT';
5022 l_component_code             := 'EXCHANGE_RATE_VAR_CLEARING';
5023 l_component_type_code        := 'S';
5024 l_component_appl_id          :=  275;
5025 l_amb_context_code           := 'DEFAULT';
5026 l_entity_code                := 'EXPENDITURES';
5027 l_event_class_code           := 'SUPPLIER_COST_ADJ';
5028 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
5029 l_line_definition_owner_code := 'S';
5030 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
5031 --
5032 l_balance_type_code          := 'A';
5033 l_segment                     := NULL;
5034 l_ccid                        := NULL;
5035 l_adr_transaction_coa_id      := NULL;
5036 l_adr_accounting_coa_id       := NULL;
5037 l_adr_flexfield_segment_code  := NULL;
5038 l_adr_flex_value_set_id       := NULL;
5039 l_adr_value_type_code         := NULL;
5040 l_adr_value_combination_id    := NULL;
5041 l_adr_value_segment_code      := NULL;
5042 
5043 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5044 l_bflow_class_code           := '';    -- 4219869 Business Flow
5045 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5046 l_budgetary_control_flag     := 'N';
5047 
5048 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5049 l_bflow_applied_to_amt       := NULL; -- 5132302
5050 l_entered_amt_idx            := NULL;          -- 4262811
5051 l_accted_amt_idx             := NULL;          -- 4262811
5052 l_acc_rev_flag               := NULL;          -- 4262811
5053 l_accrual_line_num           := NULL;          -- 4262811
5054 l_tmp_amt                    := NULL;          -- 4262811
5055 --
5056 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
5057             (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
5058                return;
5059   END IF;
5060   
5061 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5062     l_balance_type_code <> 'B' THEN
5063 IF NVL(p_source_22,'
5064 ') =  'Y'
5065  THEN 
5066 
5067    --
5068    XLA_AE_LINES_PKG.SetNewLine;
5069 
5070    p_balance_type_code          := l_balance_type_code;
5071    -- set the flag so later we will know whether the gain loss line needs to be created
5072    
5073    IF(l_balance_type_code = 'A' ) THEN
5074      p_actual_flag :='G';
5075    END IF;
5076 
5077    --
5078    -- bulk performance
5079    --
5080    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5081                                       p_header_num   => 0); -- 4262811
5082    --
5083    -- set accounting line options
5084    --
5085    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5086            p_natural_side_code          => 'C'
5087          , p_gain_or_loss_flag          => 'Y'
5088          , p_gl_transfer_mode_code      => 'S'
5089          , p_acct_entry_type_code       => 'A'
5090          , p_switch_side_flag           => 'Y'
5091          , p_merge_duplicate_code       => 'N'
5092          );
5093    --
5094    l_acc_rev_natural_side_code := 'D';  -- 4262811
5095    -- 
5096    --
5097    -- set accounting line type info
5098    --
5099    xla_ae_lines_pkg.SetAcctLineType
5100       (p_component_type             => l_component_type
5101       ,p_event_type_code            => l_event_type_code
5102       ,p_line_definition_owner_code => l_line_definition_owner_code
5103       ,p_line_definition_code       => l_line_definition_code
5104       ,p_accounting_line_code       => l_component_code
5105       ,p_accounting_line_type_code  => l_component_type_code
5106       ,p_accounting_line_appl_id    => l_component_appl_id
5107       ,p_amb_context_code           => l_amb_context_code
5108       ,p_entity_code                => l_entity_code
5109       ,p_event_class_code           => l_event_class_code);
5110    --
5111    -- set accounting class
5112    --
5113    xla_ae_lines_pkg.SetAcctClass(
5114            p_accounting_class_code  => 'COST_CLEARING'
5115          , p_ae_header_id           => l_ae_header_id
5116          );
5117 
5118    --
5119    -- set rounding class
5120    --
5121    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5122                       'COST_CLEARING';
5123 
5124    --
5125    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5126    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5127    --
5128    -- bulk performance
5129    --
5130    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5131 
5132    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5133       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5134 
5135    -- 4955764
5136    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5137       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5138 
5139    -- 4458381 Public Sector Enh
5140    
5141    --
5142    -- set accounting attributes for the line type
5143    --
5144    l_entered_amt_idx := 22;
5145    l_accted_amt_idx  := 27;
5146    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5147    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5148    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
5152    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
5149    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
5150    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
5151    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
5153    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
5154    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
5155    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
5156    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
5157    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
5158    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
5159    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
5160    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
5161    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
5162    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
5163    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
5164    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
5165    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
5166    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
5167    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
5168    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
5169    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
5170    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
5171    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
5172    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
5173    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
5174    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
5175    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
5176    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
5177    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
5178    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
5179    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
5180    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
5181    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
5182    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
5183    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
5184    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
5185    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
5186    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
5187    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
5188    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
5189    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
5190    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
5191    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
5192    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
5193    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
5194    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
5195    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
5196    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
5197    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
5198    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
5199    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
5200    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
5201    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
5202    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
5203    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
5204    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
5205    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
5206    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
5207 
5208    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5209    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5210 
5211    ---------------------------------------------------------------------------------------------------------------
5212    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5213    ---------------------------------------------------------------------------------------------------------------
5214    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5215 
5216    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5217    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5218 
5219    IF xla_accounting_cache_pkg.GetValueChar
5220          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5221          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5222    AND l_bflow_method_code = 'PRIOR_ENTRY'
5223 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5224    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5225          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5226        )
5227    THEN
5228          xla_ae_lines_pkg.BflowUpgEntry
5229            (p_business_method_code    => l_bflow_method_code
5230            ,p_business_class_code     => l_bflow_class_code
5231            ,p_balance_type            => l_balance_type_code);
5232    ELSE
5233       NULL;
5234 -- No business flow processing for business flow method of NONE.
5235    END IF;
5236 
5237    --
5238    -- call analytical criteria
5239    --
5240    
5241    --
5242    -- call description
5243    --
5244    -- No description or it is inherited.
5245    --
5246    -- call ADRs
5247    -- Bug 4922099
5248    --
5249    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5250         (NVL(l_actual_upg_option, 'N') = 'O') OR
5254    NULL;
5251         (NVL(l_enc_upg_option, 'N') = 'O')
5252       )
5253    THEN
5255    --
5256    --
5257    
5258   l_ccid := AcctDerRule_15(
5259            p_application_id           => p_application_id
5260          , p_ae_header_id             => l_ae_header_id 
5261 , p_source_5 => p_source_5
5262 , p_source_8 => p_source_8
5263          , x_transaction_coa_id       => l_adr_transaction_coa_id
5264          , x_accounting_coa_id        => l_adr_accounting_coa_id
5265          , x_value_type_code          => l_adr_value_type_code
5266          , p_side                     => 'NA'
5267    );
5268 
5269    xla_ae_lines_pkg.set_ccid(
5270     p_code_combination_id          => l_ccid
5271   , p_value_type_code              => l_adr_value_type_code
5272   , p_transaction_coa_id           => l_adr_transaction_coa_id
5273   , p_accounting_coa_id            => l_adr_accounting_coa_id
5274   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
5275   , p_adr_type_code                => 'S'
5276   , p_component_type               => l_component_type
5277   , p_component_code               => l_component_code
5278   , p_component_type_code          => l_component_type_code
5279   , p_component_appl_id            => l_component_appl_id
5280   , p_amb_context_code             => l_amb_context_code
5281   , p_side                         => 'NA'
5282   );
5283 
5284 
5285    --
5286    --
5287    END IF;
5288    --
5289    -- Bug 4922099
5290    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5291           (NVL(l_enc_upg_option, 'N') = 'O')
5292         ) AND
5293         (l_bflow_method_code = 'PRIOR_ENTRY')
5294       )
5295    THEN
5296       IF
5297       --
5298       1 = 2
5299       --
5300       THEN
5301       xla_accounting_err_pkg.build_message
5302                                     (p_appli_s_name            => 'XLA'
5303                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5304                                     ,p_token_1                 => 'LINE_NUMBER'
5305                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5306                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5307                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5308                                                                              l_component_type
5309                                                                             ,l_component_code
5310                                                                             ,l_component_type_code
5311                                                                             ,l_component_appl_id
5312                                                                             ,l_amb_context_code
5313                                                                             ,l_entity_code
5314                                                                             ,l_event_class_code
5315                                                                            )
5316                                     ,p_token_3                 => 'OWNER'
5317                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5318                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5319                                                                           ,p_lookup_code    => l_component_type_code
5320                                                                          )
5321                                     ,p_token_4                 => 'PRODUCT_NAME'
5322                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5323                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5324                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5325                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5326                                     ,p_ae_header_id            =>  NULL
5327                                        );
5328 
5329         IF (C_LEVEL_ERROR>= g_log_level) THEN
5330                  trace
5331                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5332                       ,p_level    => C_LEVEL_ERROR
5333                       ,p_module   => l_log_module);
5334         END IF;
5335       END IF;
5336    END IF;
5337    --
5338    --
5339    ------------------------------------------------------------------------------------------------
5340    -- 4219869 Business Flow
5341    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5342    -- Prior Entry.  Currently, the following code is always generated.
5343    ------------------------------------------------------------------------------------------------
5344    XLA_AE_LINES_PKG.ValidateCurrentLine;
5345 
5346    ------------------------------------------------------------------------------------
5347    -- 4219869 Business Flow
5348    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5349    ------------------------------------------------------------------------------------
5350    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5351 
5352    ----------------------------------------------------------------------------------
5353    -- 4219869 Business Flow
5354    -- Update journal entry status -- Need to generate this within IF <condition>
5355    ----------------------------------------------------------------------------------
5356    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5357          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5358          ,p_balance_type_code => l_balance_type_code
5359          );
5360 
5361    -------------------------------------------------------------------------------------------
5365       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5362    -- 4262811 - Generate the Accrual Reversal lines
5363    -------------------------------------------------------------------------------------------
5364    BEGIN
5366                               (g_array_event(p_event_id).array_value_num('header_index'));
5367       IF l_acc_rev_flag IS NULL THEN
5368          l_acc_rev_flag := 'N';
5369       END IF;
5370    EXCEPTION
5371       WHEN OTHERS THEN
5372          l_acc_rev_flag := 'N';
5373    END;
5374    --
5375    IF (l_acc_rev_flag = 'Y') THEN
5376 
5377        -- 4645092  ------------------------------------------------------------------------------
5378        -- To allow MPA report to determine if it should generate report process
5379        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5380        ------------------------------------------------------------------------------------------
5381 
5382        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5383        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5384 
5385        --
5386        -- Update the line information that should be overwritten
5387        --
5388        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5389                                          p_header_num   => 1);
5390        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5391 
5392        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5393 
5394        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5395           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5396        END IF;
5397 
5398       --
5399       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5400       --
5401       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5402           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5403       ELSE
5404           ---------------------------------------------------------------------------------------------------
5405           -- 4262811a Switch Sign
5406           ---------------------------------------------------------------------------------------------------
5407           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5408           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5409                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5410           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5411                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5412           -- 5132302
5413           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5414                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5415 
5416       END IF;
5417 
5418       -- 4955764
5419       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5421 
5422 
5423       XLA_AE_LINES_PKG.ValidateCurrentLine;
5424       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5425 
5426       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5427                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5428                ,p_balance_type_code => l_balance_type_code);
5429 
5430    END IF;
5431 
5432    -----------------------------------------------------------------------------------------
5433    -- 4262811 Multiperiod Accounting
5434    -----------------------------------------------------------------------------------------
5435      -- No MPA option is assigned.
5436 
5437 
5438 END IF;
5439 END IF;
5440 --
5441 
5442 --
5443 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5444    trace
5445       (p_msg      => 'END of AcctLineType_31'
5446       ,p_level    => C_LEVEL_PROCEDURE
5447       ,p_module   => l_log_module);
5448 END IF;
5449 --
5450 EXCEPTION
5451   WHEN xla_exceptions_pkg.application_exception THEN
5452       RAISE;
5453   WHEN OTHERS THEN
5454        xla_exceptions_pkg.raise_message
5455            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_31');
5456 END AcctLineType_31;
5457 --
5458 
5459 ---------------------------------------
5460 --
5461 -- PRIVATE FUNCTION
5462 --         AcctLineType_32
5463 --
5464 ---------------------------------------
5465 PROCEDURE AcctLineType_32 (
5466   p_application_id        IN NUMBER
5467  ,p_event_id              IN NUMBER
5468  ,p_calculate_acctd_flag  IN VARCHAR2
5469  ,p_calculate_g_l_flag    IN VARCHAR2
5470  ,p_actual_flag           IN OUT VARCHAR2
5471  ,p_balance_type_code     OUT VARCHAR2
5472  ,p_gain_or_loss_ref      OUT VARCHAR2
5473  
5474 --Cost CCID
5475  , p_source_4            IN NUMBER
5476 --Allow Account Override Flag
5477  , p_source_5            IN VARCHAR2
5478 --Cost Clearing CCID
5479  , p_source_7            IN NUMBER
5480 --Adjustment Cost Clearing CCID
5481  , p_source_8            IN NUMBER
5482 --Exchange Rate Variance Flag
5483  , p_source_22            IN VARCHAR2
5484 --Reversing Line Flag
5485  , p_source_23            IN VARCHAR2
5486 --Actual Upgrade Credit Accounting Class
5487  , p_source_24            IN VARCHAR2
5488 --Entered Raw Cost
5489  , p_source_25            IN NUMBER
5490 --Entered Currency Code
5491  , p_source_26            IN VARCHAR2
5492 --Accounted Raw Cost
5493  , p_source_27            IN NUMBER
5497  , p_source_29            IN NUMBER
5494 --Exchange Rate Date
5495  , p_source_28            IN DATE
5496 --Exchange Rate
5498 --Exchange Rate Type
5499  , p_source_30            IN VARCHAR2
5500 --Actual Upgrade Debit Accounting Class
5501  , p_source_31            IN VARCHAR2
5502 --Use Actuals Upgrade Attributes Flag
5503  , p_source_32            IN VARCHAR2
5504 --Expenditure Item ID
5505  , p_source_33            IN NUMBER
5506 --Cost Distribution Line Number
5507  , p_source_34            IN NUMBER
5508 --Line Type
5509  , p_source_35            IN VARCHAR2
5510  , p_source_35_meaning    IN VARCHAR2
5511 --Reversed Line Number
5512  , p_source_36            IN NUMBER
5513 )
5514 IS
5515 
5516 l_component_type              VARCHAR2(80);
5517 l_component_code              VARCHAR2(30);
5518 l_component_type_code         VARCHAR2(1);
5519 l_component_appl_id           INTEGER;
5520 l_amb_context_code            VARCHAR2(30);
5521 l_entity_code                 VARCHAR2(30);
5522 l_event_class_code            VARCHAR2(30);
5523 l_ae_header_id                NUMBER;
5524 l_event_type_code             VARCHAR2(30);
5525 l_line_definition_code        VARCHAR2(30);
5526 l_line_definition_owner_code  VARCHAR2(1);
5527 --
5528 -- adr variables
5529 l_segment                     VARCHAR2(30);
5530 l_ccid                        NUMBER;
5531 l_adr_transaction_coa_id      NUMBER;
5532 l_adr_accounting_coa_id       NUMBER;
5533 l_adr_flexfield_segment_code  VARCHAR2(30);
5534 l_adr_flex_value_set_id       NUMBER;
5535 l_adr_value_type_code         VARCHAR2(30);
5536 l_adr_value_combination_id    NUMBER;
5537 l_adr_value_segment_code      VARCHAR2(30);
5538 
5539 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5540 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5541 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5542 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5543 
5544 -- 4262811 Variables ------------------------------------------------------------------------------------------
5545 l_entered_amt_idx             NUMBER;
5546 l_accted_amt_idx              NUMBER;
5547 l_acc_rev_flag                VARCHAR2(1);
5548 l_accrual_line_num            NUMBER;
5549 l_tmp_amt                     NUMBER;
5550 l_acc_rev_natural_side_code   VARCHAR2(1);
5551 
5552 l_num_entries                 NUMBER;
5553 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5554 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5555 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5556 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5557 l_recog_line_1                NUMBER;
5558 l_recog_line_2                NUMBER;
5559 
5560 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5561 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5562 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5563 
5564 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5565 
5566 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5567 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5568 
5569 ---------------------------------------------------------------------------------------------------------------
5570 
5571 
5572 --
5573 -- bulk performance
5574 --
5575 l_balance_type_code           VARCHAR2(1);
5576 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5577 l_log_module                  VARCHAR2(240);
5578 
5579 --
5580 -- Upgrade strategy
5581 --
5582 l_actual_upg_option           VARCHAR2(1);
5583 l_enc_upg_option           VARCHAR2(1);
5584 
5585 --
5586 BEGIN
5587 --
5588 IF g_log_enabled THEN
5589       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
5590 END IF;
5591 --
5592 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5593 
5594       trace
5595          (p_msg      => 'BEGIN of AcctLineType_32'
5596          ,p_level    => C_LEVEL_PROCEDURE
5597          ,p_module   => l_log_module);
5598 
5599 END IF;
5600 --
5601 l_component_type             := 'AMB_JLT';
5602 l_component_code             := 'EXCHANGE_RATE_VAR_CLEARING';
5603 l_component_type_code        := 'S';
5604 l_component_appl_id          :=  275;
5605 l_amb_context_code           := 'DEFAULT';
5606 l_entity_code                := 'EXPENDITURES';
5607 l_event_class_code           := 'SUPPLIER_COST';
5608 l_event_type_code            := 'SUPPLIER_COST_ALL';
5609 l_line_definition_owner_code := 'S';
5610 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
5611 --
5612 l_balance_type_code          := 'A';
5613 l_segment                     := NULL;
5614 l_ccid                        := NULL;
5615 l_adr_transaction_coa_id      := NULL;
5616 l_adr_accounting_coa_id       := NULL;
5617 l_adr_flexfield_segment_code  := NULL;
5618 l_adr_flex_value_set_id       := NULL;
5619 l_adr_value_type_code         := NULL;
5620 l_adr_value_combination_id    := NULL;
5621 l_adr_value_segment_code      := NULL;
5622 
5623 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5624 l_bflow_class_code           := '';    -- 4219869 Business Flow
5625 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5626 l_budgetary_control_flag     := 'N';
5627 
5628 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5629 l_bflow_applied_to_amt       := NULL; -- 5132302
5630 l_entered_amt_idx            := NULL;          -- 4262811
5631 l_accted_amt_idx             := NULL;          -- 4262811
5632 l_acc_rev_flag               := NULL;          -- 4262811
5633 l_accrual_line_num           := NULL;          -- 4262811
5637             (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
5634 l_tmp_amt                    := NULL;          -- 4262811
5635 --
5636 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
5638                return;
5639   END IF;
5640   
5641 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5642     l_balance_type_code <> 'B' THEN
5643 IF NVL(p_source_22,'
5644 ') =  'Y'
5645  THEN 
5646 
5647    --
5648    XLA_AE_LINES_PKG.SetNewLine;
5649 
5650    p_balance_type_code          := l_balance_type_code;
5651    -- set the flag so later we will know whether the gain loss line needs to be created
5652    
5653    IF(l_balance_type_code = 'A' ) THEN
5654      p_actual_flag :='G';
5655    END IF;
5656 
5657    --
5658    -- bulk performance
5659    --
5660    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5661                                       p_header_num   => 0); -- 4262811
5662    --
5663    -- set accounting line options
5664    --
5665    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5666            p_natural_side_code          => 'C'
5667          , p_gain_or_loss_flag          => 'Y'
5668          , p_gl_transfer_mode_code      => 'S'
5669          , p_acct_entry_type_code       => 'A'
5670          , p_switch_side_flag           => 'Y'
5671          , p_merge_duplicate_code       => 'N'
5672          );
5673    --
5674    l_acc_rev_natural_side_code := 'D';  -- 4262811
5675    -- 
5676    --
5677    -- set accounting line type info
5678    --
5679    xla_ae_lines_pkg.SetAcctLineType
5680       (p_component_type             => l_component_type
5681       ,p_event_type_code            => l_event_type_code
5682       ,p_line_definition_owner_code => l_line_definition_owner_code
5683       ,p_line_definition_code       => l_line_definition_code
5684       ,p_accounting_line_code       => l_component_code
5685       ,p_accounting_line_type_code  => l_component_type_code
5686       ,p_accounting_line_appl_id    => l_component_appl_id
5687       ,p_amb_context_code           => l_amb_context_code
5688       ,p_entity_code                => l_entity_code
5689       ,p_event_class_code           => l_event_class_code);
5690    --
5691    -- set accounting class
5692    --
5693    xla_ae_lines_pkg.SetAcctClass(
5694            p_accounting_class_code  => 'COST_CLEARING'
5695          , p_ae_header_id           => l_ae_header_id
5696          );
5697 
5698    --
5699    -- set rounding class
5700    --
5701    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5702                       'COST_CLEARING';
5703 
5704    --
5705    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5706    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5707    --
5708    -- bulk performance
5709    --
5710    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5711 
5712    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5713       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5714 
5715    -- 4955764
5716    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5717       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5718 
5719    -- 4458381 Public Sector Enh
5720    
5721    --
5722    -- set accounting attributes for the line type
5723    --
5724    l_entered_amt_idx := 22;
5725    l_accted_amt_idx  := 27;
5726    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5727    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
5728    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
5729    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
5730    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
5731    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
5732    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
5733    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
5734    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
5735    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
5736    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
5737    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
5738    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
5739    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
5740    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
5741    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
5742    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
5743    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
5744    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
5745    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
5746    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
5747    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
5748    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
5749    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
5750    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
5751    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
5752    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
5753    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
5754    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
5755    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
5759    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
5756    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
5757    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
5758    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
5760    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
5761    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
5762    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
5763    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
5764    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
5765    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
5766    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
5767    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
5768    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
5769    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
5770    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
5771    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
5772    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
5773    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
5774    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
5775    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
5776    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
5777    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
5778    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
5779    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
5780    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
5781    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
5782    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
5783    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
5784    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
5785    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
5786    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
5787 
5788    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5789    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5790 
5791    ---------------------------------------------------------------------------------------------------------------
5792    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5793    ---------------------------------------------------------------------------------------------------------------
5794    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5795 
5796    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5797    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5798 
5799    IF xla_accounting_cache_pkg.GetValueChar
5800          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5801          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5802    AND l_bflow_method_code = 'PRIOR_ENTRY'
5803 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5804    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5805          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5806        )
5807    THEN
5808          xla_ae_lines_pkg.BflowUpgEntry
5809            (p_business_method_code    => l_bflow_method_code
5810            ,p_business_class_code     => l_bflow_class_code
5811            ,p_balance_type            => l_balance_type_code);
5812    ELSE
5813       NULL;
5814 -- No business flow processing for business flow method of NONE.
5815    END IF;
5816 
5817    --
5818    -- call analytical criteria
5819    --
5820    
5821    --
5822    -- call description
5823    --
5824    -- No description or it is inherited.
5825    --
5826    -- call ADRs
5827    -- Bug 4922099
5828    --
5829    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5830         (NVL(l_actual_upg_option, 'N') = 'O') OR
5831         (NVL(l_enc_upg_option, 'N') = 'O')
5832       )
5833    THEN
5834    NULL;
5835    --
5836    --
5837    
5838   l_ccid := AcctDerRule_14(
5839            p_application_id           => p_application_id
5840          , p_ae_header_id             => l_ae_header_id 
5841 , p_source_5 => p_source_5
5842 , p_source_7 => p_source_7
5843 , p_source_8 => p_source_8
5844          , x_transaction_coa_id       => l_adr_transaction_coa_id
5845          , x_accounting_coa_id        => l_adr_accounting_coa_id
5846          , x_value_type_code          => l_adr_value_type_code
5847          , p_side                     => 'NA'
5848    );
5849 
5850    xla_ae_lines_pkg.set_ccid(
5851     p_code_combination_id          => l_ccid
5852   , p_value_type_code              => l_adr_value_type_code
5853   , p_transaction_coa_id           => l_adr_transaction_coa_id
5854   , p_accounting_coa_id            => l_adr_accounting_coa_id
5855   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
5856   , p_adr_type_code                => 'S'
5857   , p_component_type               => l_component_type
5858   , p_component_code               => l_component_code
5859   , p_component_type_code          => l_component_type_code
5860   , p_component_appl_id            => l_component_appl_id
5861   , p_amb_context_code             => l_amb_context_code
5862   , p_side                         => 'NA'
5863   );
5864 
5865 
5866    --
5867    --
5868    END IF;
5869    --
5870    -- Bug 4922099
5871    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5872           (NVL(l_enc_upg_option, 'N') = 'O')
5873         ) AND
5874         (l_bflow_method_code = 'PRIOR_ENTRY')
5875       )
5876    THEN
5877       IF
5878       --
5882       xla_accounting_err_pkg.build_message
5879       1 = 2
5880       --
5881       THEN
5883                                     (p_appli_s_name            => 'XLA'
5884                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5885                                     ,p_token_1                 => 'LINE_NUMBER'
5886                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5887                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5888                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5889                                                                              l_component_type
5890                                                                             ,l_component_code
5891                                                                             ,l_component_type_code
5892                                                                             ,l_component_appl_id
5893                                                                             ,l_amb_context_code
5894                                                                             ,l_entity_code
5895                                                                             ,l_event_class_code
5896                                                                            )
5897                                     ,p_token_3                 => 'OWNER'
5898                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5899                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5900                                                                           ,p_lookup_code    => l_component_type_code
5901                                                                          )
5902                                     ,p_token_4                 => 'PRODUCT_NAME'
5903                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5904                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5905                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5906                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5907                                     ,p_ae_header_id            =>  NULL
5908                                        );
5909 
5910         IF (C_LEVEL_ERROR>= g_log_level) THEN
5911                  trace
5912                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5913                       ,p_level    => C_LEVEL_ERROR
5914                       ,p_module   => l_log_module);
5915         END IF;
5916       END IF;
5917    END IF;
5918    --
5919    --
5920    ------------------------------------------------------------------------------------------------
5921    -- 4219869 Business Flow
5922    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5923    -- Prior Entry.  Currently, the following code is always generated.
5924    ------------------------------------------------------------------------------------------------
5925    XLA_AE_LINES_PKG.ValidateCurrentLine;
5926 
5927    ------------------------------------------------------------------------------------
5928    -- 4219869 Business Flow
5929    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5930    ------------------------------------------------------------------------------------
5931    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5932 
5933    ----------------------------------------------------------------------------------
5934    -- 4219869 Business Flow
5935    -- Update journal entry status -- Need to generate this within IF <condition>
5936    ----------------------------------------------------------------------------------
5937    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5938          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5939          ,p_balance_type_code => l_balance_type_code
5940          );
5941 
5942    -------------------------------------------------------------------------------------------
5943    -- 4262811 - Generate the Accrual Reversal lines
5944    -------------------------------------------------------------------------------------------
5945    BEGIN
5946       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5947                               (g_array_event(p_event_id).array_value_num('header_index'));
5948       IF l_acc_rev_flag IS NULL THEN
5949          l_acc_rev_flag := 'N';
5950       END IF;
5951    EXCEPTION
5952       WHEN OTHERS THEN
5953          l_acc_rev_flag := 'N';
5954    END;
5955    --
5956    IF (l_acc_rev_flag = 'Y') THEN
5957 
5958        -- 4645092  ------------------------------------------------------------------------------
5959        -- To allow MPA report to determine if it should generate report process
5960        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5961        ------------------------------------------------------------------------------------------
5962 
5963        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5964        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5965 
5966        --
5967        -- Update the line information that should be overwritten
5968        --
5969        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5970                                          p_header_num   => 1);
5971        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5972 
5973        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5974 
5975        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5976           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5977        END IF;
5978 
5979       --
5983           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5980       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5981       --
5982       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5984       ELSE
5985           ---------------------------------------------------------------------------------------------------
5986           -- 4262811a Switch Sign
5987           ---------------------------------------------------------------------------------------------------
5988           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5989           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5990                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5991           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5992                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5993           -- 5132302
5994           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5995                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5996 
5997       END IF;
5998 
5999       -- 4955764
6000       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6001       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6002 
6003 
6004       XLA_AE_LINES_PKG.ValidateCurrentLine;
6005       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6006 
6007       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6008                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6009                ,p_balance_type_code => l_balance_type_code);
6010 
6011    END IF;
6012 
6013    -----------------------------------------------------------------------------------------
6014    -- 4262811 Multiperiod Accounting
6015    -----------------------------------------------------------------------------------------
6016      -- No MPA option is assigned.
6017 
6018 
6019 END IF;
6020 END IF;
6021 --
6022 
6023 --
6024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6025    trace
6026       (p_msg      => 'END of AcctLineType_32'
6027       ,p_level    => C_LEVEL_PROCEDURE
6028       ,p_module   => l_log_module);
6029 END IF;
6030 --
6031 EXCEPTION
6032   WHEN xla_exceptions_pkg.application_exception THEN
6033       RAISE;
6034   WHEN OTHERS THEN
6035        xla_exceptions_pkg.raise_message
6036            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_32');
6037 END AcctLineType_32;
6038 --
6039 
6040 ---------------------------------------
6041 --
6042 -- PRIVATE FUNCTION
6043 --         AcctLineType_33
6044 --
6045 ---------------------------------------
6046 PROCEDURE AcctLineType_33 (
6047   p_application_id        IN NUMBER
6048  ,p_event_id              IN NUMBER
6049  ,p_calculate_acctd_flag  IN VARCHAR2
6050  ,p_calculate_g_l_flag    IN VARCHAR2
6051  ,p_actual_flag           IN OUT VARCHAR2
6052  ,p_balance_type_code     OUT VARCHAR2
6053  ,p_gain_or_loss_ref      OUT VARCHAR2
6054  
6055 --Budget Code Combination ID
6056  , p_source_3            IN NUMBER
6057 --Reversing Line Flag
6058  , p_source_23            IN VARCHAR2
6059 --Entered Currency Code
6060  , p_source_26            IN VARCHAR2
6061 --Exchange Rate Date
6062  , p_source_28            IN DATE
6063 --Exchange Rate
6064  , p_source_29            IN NUMBER
6065 --Exchange Rate Type
6066  , p_source_30            IN VARCHAR2
6067 --Line Type
6068  , p_source_35            IN VARCHAR2
6069  , p_source_35_meaning    IN VARCHAR2
6070 --Budget Amount Code
6071  , p_source_37            IN VARCHAR2
6072 --Project Type Class
6073  , p_source_38            IN VARCHAR2
6074  , p_source_38_meaning    IN VARCHAR2
6075 --Project Budgetary Control Balance Type
6076  , p_source_39            IN VARCHAR2
6077 --Budget Line ID
6078  , p_source_40            IN NUMBER
6079 --Encumbrance Upgrade Credit Accounting Class
6080  , p_source_41            IN VARCHAR2
6081 --Entered Amount
6082  , p_source_42            IN NUMBER
6083 --Accounted Amount
6084  , p_source_43            IN NUMBER
6085 --Use Encumbrance Upgrade Attributes Flag
6086  , p_source_44            IN VARCHAR2
6087 --Upgrade Project Encumbrance Type ID
6088  , p_source_45            IN NUMBER
6089 )
6090 IS
6091 
6092 l_component_type              VARCHAR2(80);
6093 l_component_code              VARCHAR2(30);
6094 l_component_type_code         VARCHAR2(1);
6095 l_component_appl_id           INTEGER;
6096 l_amb_context_code            VARCHAR2(30);
6097 l_entity_code                 VARCHAR2(30);
6098 l_event_class_code            VARCHAR2(30);
6099 l_ae_header_id                NUMBER;
6100 l_event_type_code             VARCHAR2(30);
6101 l_line_definition_code        VARCHAR2(30);
6102 l_line_definition_owner_code  VARCHAR2(1);
6103 --
6104 -- adr variables
6105 l_segment                     VARCHAR2(30);
6106 l_ccid                        NUMBER;
6107 l_adr_transaction_coa_id      NUMBER;
6108 l_adr_accounting_coa_id       NUMBER;
6109 l_adr_flexfield_segment_code  VARCHAR2(30);
6110 l_adr_flex_value_set_id       NUMBER;
6111 l_adr_value_type_code         VARCHAR2(30);
6112 l_adr_value_combination_id    NUMBER;
6113 l_adr_value_segment_code      VARCHAR2(30);
6114 
6115 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6116 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6117 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6121 l_entered_amt_idx             NUMBER;
6118 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6119 
6120 -- 4262811 Variables ------------------------------------------------------------------------------------------
6122 l_accted_amt_idx              NUMBER;
6123 l_acc_rev_flag                VARCHAR2(1);
6124 l_accrual_line_num            NUMBER;
6125 l_tmp_amt                     NUMBER;
6126 l_acc_rev_natural_side_code   VARCHAR2(1);
6127 
6128 l_num_entries                 NUMBER;
6129 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6130 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6131 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6132 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6133 l_recog_line_1                NUMBER;
6134 l_recog_line_2                NUMBER;
6135 
6136 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6137 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6138 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6139 
6140 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6141 
6142 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6143 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6144 
6145 ---------------------------------------------------------------------------------------------------------------
6146 
6147 
6148 --
6149 -- bulk performance
6150 --
6151 l_balance_type_code           VARCHAR2(1);
6152 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6153 l_log_module                  VARCHAR2(240);
6154 
6155 --
6156 -- Upgrade strategy
6157 --
6158 l_actual_upg_option           VARCHAR2(1);
6159 l_enc_upg_option           VARCHAR2(1);
6160 
6161 --
6162 BEGIN
6163 --
6164 IF g_log_enabled THEN
6165       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
6166 END IF;
6167 --
6168 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6169 
6170       trace
6171          (p_msg      => 'BEGIN of AcctLineType_33'
6172          ,p_level    => C_LEVEL_PROCEDURE
6173          ,p_module   => l_log_module);
6174 
6175 END IF;
6176 --
6177 l_component_type             := 'AMB_JLT';
6178 l_component_code             := 'PA_ANT_REIMB_OTH_INC';
6179 l_component_type_code        := 'S';
6180 l_component_appl_id          :=  275;
6181 l_amb_context_code           := 'DEFAULT';
6182 l_entity_code                := 'BUDGETS';
6183 l_event_class_code           := 'BUDGET';
6184 l_event_type_code            := 'BUDGET_ALL';
6185 l_line_definition_owner_code := 'S';
6186 l_line_definition_code       := 'PROJECTS_BUD_SLA_JLD';
6187 --
6188 l_balance_type_code          := 'A';
6189 l_segment                     := NULL;
6190 l_ccid                        := NULL;
6191 l_adr_transaction_coa_id      := NULL;
6192 l_adr_accounting_coa_id       := NULL;
6193 l_adr_flexfield_segment_code  := NULL;
6194 l_adr_flex_value_set_id       := NULL;
6195 l_adr_value_type_code         := NULL;
6196 l_adr_value_combination_id    := NULL;
6197 l_adr_value_segment_code      := NULL;
6198 
6199 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6200 l_bflow_class_code           := '';    -- 4219869 Business Flow
6201 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6202 l_budgetary_control_flag     := 'N';
6203 
6204 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6205 l_bflow_applied_to_amt       := NULL; -- 5132302
6206 l_entered_amt_idx            := NULL;          -- 4262811
6207 l_accted_amt_idx             := NULL;          -- 4262811
6208 l_acc_rev_flag               := NULL;          -- 4262811
6209 l_accrual_line_num           := NULL;          -- 4262811
6210 l_tmp_amt                    := NULL;          -- 4262811
6211 --
6212  
6213 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6214     l_balance_type_code <> 'B' THEN
6215 IF NVL(p_source_37,'
6216 ') =  'R' AND 
6217 NVL(p_source_38,'
6218 ') =  'CONTRACT' AND 
6219 NVL(p_source_39,'
6220 ') =  'B'
6221  THEN 
6222 
6223    --
6224    XLA_AE_LINES_PKG.SetNewLine;
6225 
6226    p_balance_type_code          := l_balance_type_code;
6227    -- set the flag so later we will know whether the gain loss line needs to be created
6228    
6229    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6230      p_actual_flag :='A';
6231    END IF;
6232 
6233    --
6234    -- bulk performance
6235    --
6236    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6237                                       p_header_num   => 0); -- 4262811
6238    --
6239    -- set accounting line options
6240    --
6241    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6242            p_natural_side_code          => 'C'
6243          , p_gain_or_loss_flag          => 'N'
6244          , p_gl_transfer_mode_code      => 'S'
6245          , p_acct_entry_type_code       => 'A'
6246          , p_switch_side_flag           => 'Y'
6247          , p_merge_duplicate_code       => 'N'
6248          );
6249    --
6250    l_acc_rev_natural_side_code := 'D';  -- 4262811
6251    -- 
6252    --
6253    -- set accounting line type info
6254    --
6255    xla_ae_lines_pkg.SetAcctLineType
6256       (p_component_type             => l_component_type
6257       ,p_event_type_code            => l_event_type_code
6258       ,p_line_definition_owner_code => l_line_definition_owner_code
6259       ,p_line_definition_code       => l_line_definition_code
6260       ,p_accounting_line_code       => l_component_code
6261       ,p_accounting_line_type_code  => l_component_type_code
6265       ,p_event_class_code           => l_event_class_code);
6262       ,p_accounting_line_appl_id    => l_component_appl_id
6263       ,p_amb_context_code           => l_amb_context_code
6264       ,p_entity_code                => l_entity_code
6266    --
6267    -- set accounting class
6268    --
6269    xla_ae_lines_pkg.SetAcctClass(
6270            p_accounting_class_code  => 'PA_BUDGET_EXECUTION_RESERVE_CR'
6271          , p_ae_header_id           => l_ae_header_id
6272          );
6273 
6274    --
6275    -- set rounding class
6276    --
6277    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6278                       'PA_BUDGET_EXECUTION_RESERVE_CR';
6279 
6280    --
6281    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6282    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6283    --
6284    -- bulk performance
6285    --
6286    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6287 
6288    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6289       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6290 
6291    -- 4955764
6292    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6293       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6294 
6295    -- 4458381 Public Sector Enh
6296    
6297    --
6298    -- set accounting attributes for the line type
6299    --
6300    l_entered_amt_idx := 10;
6301    l_accted_amt_idx  := 15;
6302    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6303    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
6304    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
6305    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
6306    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
6307    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
6308    l_rec_acct_attrs.array_char_value(3)  := p_source_35;
6309    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
6310    l_rec_acct_attrs.array_char_value(4)  := p_source_41;
6311    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
6312    l_rec_acct_attrs.array_num_value(5)  := p_source_3;
6313    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
6314    l_rec_acct_attrs.array_num_value(6)  := p_source_42;
6315    l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
6316    l_rec_acct_attrs.array_char_value(7)  := p_source_26;
6317    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
6318    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
6319    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
6320    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
6321    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
6322    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
6323    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
6324    l_rec_acct_attrs.array_char_value(11)  := p_source_26;
6325    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
6326    l_rec_acct_attrs.array_date_value(12)  := p_source_28;
6327    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
6328    l_rec_acct_attrs.array_num_value(13)  := p_source_29;
6329    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
6330    l_rec_acct_attrs.array_char_value(14)  := p_source_30;
6331    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
6332    l_rec_acct_attrs.array_num_value(15)  := p_source_43;
6333    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
6334    l_rec_acct_attrs.array_num_value(16)  :=  to_char(p_source_40);
6335    l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
6336    l_rec_acct_attrs.array_char_value(17)  := p_source_35;
6337    l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
6338    l_rec_acct_attrs.array_num_value(18)  := p_source_45;
6339 
6340    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6341    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6342 
6343    ---------------------------------------------------------------------------------------------------------------
6344    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6345    ---------------------------------------------------------------------------------------------------------------
6346    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6347 
6348    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6349    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6350 
6351    IF xla_accounting_cache_pkg.GetValueChar
6352          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6353          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6354    AND l_bflow_method_code = 'PRIOR_ENTRY'
6355 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6356    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6357          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6358        )
6359    THEN
6360          xla_ae_lines_pkg.BflowUpgEntry
6361            (p_business_method_code    => l_bflow_method_code
6362            ,p_business_class_code     => l_bflow_class_code
6363            ,p_balance_type            => l_balance_type_code);
6364    ELSE
6365       NULL;
6366 -- No business flow processing for business flow method of NONE.
6367    END IF;
6368 
6369    --
6370    -- call analytical criteria
6371    --
6372    
6373    --
6374    -- call description
6378    -- call ADRs
6375    --
6376    -- No description or it is inherited.
6377    --
6379    -- Bug 4922099
6380    --
6381    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6382         (NVL(l_actual_upg_option, 'N') = 'O') OR
6383         (NVL(l_enc_upg_option, 'N') = 'O')
6384       )
6385    THEN
6386    NULL;
6387    --
6388    --
6389    
6390   l_ccid := AcctDerRule_11(
6391            p_application_id           => p_application_id
6392          , p_ae_header_id             => l_ae_header_id 
6393 , p_source_3 => p_source_3
6394          , x_transaction_coa_id       => l_adr_transaction_coa_id
6395          , x_accounting_coa_id        => l_adr_accounting_coa_id
6396          , x_value_type_code          => l_adr_value_type_code
6397          , p_side                     => 'NA'
6398    );
6399 
6400    xla_ae_lines_pkg.set_ccid(
6401     p_code_combination_id          => l_ccid
6402   , p_value_type_code              => l_adr_value_type_code
6403   , p_transaction_coa_id           => l_adr_transaction_coa_id
6404   , p_accounting_coa_id            => l_adr_accounting_coa_id
6405   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
6406   , p_adr_type_code                => 'S'
6407   , p_component_type               => l_component_type
6408   , p_component_code               => l_component_code
6409   , p_component_type_code          => l_component_type_code
6410   , p_component_appl_id            => l_component_appl_id
6411   , p_amb_context_code             => l_amb_context_code
6412   , p_side                         => 'NA'
6413   );
6414 
6415 
6416    l_segment := AcctDerRule_7(
6417            p_application_id           => p_application_id
6418          , p_ae_header_id             => l_ae_header_id 
6419          , x_transaction_coa_id       => l_adr_transaction_coa_id
6420          , x_accounting_coa_id        => l_adr_accounting_coa_id
6421          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
6422          , x_flex_value_set_id        => l_adr_flex_value_set_id
6423          , x_value_type_code          => l_adr_value_type_code
6424          , x_value_combination_id     => l_adr_value_combination_id
6425          , x_value_segment_code       => l_adr_value_segment_code
6426          , p_side                     => 'NA'
6427          , p_override_seg_flag        => 'Y'
6428    );
6429 
6430    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
6431 
6432       xla_ae_lines_pkg.set_segment(
6433           p_to_segment_code         => 'GL_ACCOUNT'
6434         , p_segment_value           => l_segment
6435         , p_from_segment_code       => l_adr_value_segment_code
6436         , p_from_combination_id     => l_adr_value_combination_id
6437         , p_value_type_code         => l_adr_value_type_code
6438         , p_transaction_coa_id      => l_adr_transaction_coa_id
6439         , p_accounting_coa_id       => l_adr_accounting_coa_id
6440         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
6441         , p_flex_value_set_id       => l_adr_flex_value_set_id
6442         , p_adr_code                => 'PA_421001'
6443         , p_adr_type_code           => 'S'
6444         , p_component_type          => l_component_type
6445         , p_component_code          => l_component_code
6446         , p_component_type_code     => l_component_type_code
6447         , p_component_appl_id       => l_component_appl_id
6448         , p_amb_context_code        => l_amb_context_code
6449         , p_entity_code             => 'BUDGETS'
6450         , p_event_class_code        => 'BUDGET'
6451         , p_side                    => 'NA'
6452         );
6453 
6454   END IF;
6455 
6456    --
6457    --
6458    END IF;
6459    --
6460    -- Bug 4922099
6461    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6462           (NVL(l_enc_upg_option, 'N') = 'O')
6463         ) AND
6464         (l_bflow_method_code = 'PRIOR_ENTRY')
6465       )
6466    THEN
6467       IF
6468       --
6469       1 = 2
6470       --
6471       THEN
6472       xla_accounting_err_pkg.build_message
6473                                     (p_appli_s_name            => 'XLA'
6474                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6475                                     ,p_token_1                 => 'LINE_NUMBER'
6476                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6477                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6478                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6479                                                                              l_component_type
6480                                                                             ,l_component_code
6481                                                                             ,l_component_type_code
6482                                                                             ,l_component_appl_id
6483                                                                             ,l_amb_context_code
6484                                                                             ,l_entity_code
6485                                                                             ,l_event_class_code
6486                                                                            )
6487                                     ,p_token_3                 => 'OWNER'
6488                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6489                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6490                                                                           ,p_lookup_code    => l_component_type_code
6491                                                                          )
6492                                     ,p_token_4                 => 'PRODUCT_NAME'
6496                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6493                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6494                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6495                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6497                                     ,p_ae_header_id            =>  NULL
6498                                        );
6499 
6500         IF (C_LEVEL_ERROR>= g_log_level) THEN
6501                  trace
6502                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6503                       ,p_level    => C_LEVEL_ERROR
6504                       ,p_module   => l_log_module);
6505         END IF;
6506       END IF;
6507    END IF;
6508    --
6509    --
6510    ------------------------------------------------------------------------------------------------
6511    -- 4219869 Business Flow
6512    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6513    -- Prior Entry.  Currently, the following code is always generated.
6514    ------------------------------------------------------------------------------------------------
6515    XLA_AE_LINES_PKG.ValidateCurrentLine;
6516 
6517    ------------------------------------------------------------------------------------
6518    -- 4219869 Business Flow
6519    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6520    ------------------------------------------------------------------------------------
6521    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6522 
6523    ----------------------------------------------------------------------------------
6524    -- 4219869 Business Flow
6525    -- Update journal entry status -- Need to generate this within IF <condition>
6526    ----------------------------------------------------------------------------------
6527    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6528          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6529          ,p_balance_type_code => l_balance_type_code
6530          );
6531 
6532    -------------------------------------------------------------------------------------------
6533    -- 4262811 - Generate the Accrual Reversal lines
6534    -------------------------------------------------------------------------------------------
6535    BEGIN
6536       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6537                               (g_array_event(p_event_id).array_value_num('header_index'));
6538       IF l_acc_rev_flag IS NULL THEN
6539          l_acc_rev_flag := 'N';
6540       END IF;
6541    EXCEPTION
6542       WHEN OTHERS THEN
6543          l_acc_rev_flag := 'N';
6544    END;
6545    --
6546    IF (l_acc_rev_flag = 'Y') THEN
6547 
6548        -- 4645092  ------------------------------------------------------------------------------
6549        -- To allow MPA report to determine if it should generate report process
6550        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6551        ------------------------------------------------------------------------------------------
6552 
6553        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6554        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6555 
6556        --
6557        -- Update the line information that should be overwritten
6558        --
6559        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6560                                          p_header_num   => 1);
6561        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6562 
6563        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6564 
6565        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6566           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6567        END IF;
6568 
6569       --
6570       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6571       --
6572       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6573           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6574       ELSE
6575           ---------------------------------------------------------------------------------------------------
6576           -- 4262811a Switch Sign
6577           ---------------------------------------------------------------------------------------------------
6578           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6579           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6580                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6581           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6582                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6583           -- 5132302
6584           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6585                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6586 
6587       END IF;
6588 
6589       -- 4955764
6590       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6591       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6592 
6593 
6594       XLA_AE_LINES_PKG.ValidateCurrentLine;
6595       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6596 
6597       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6601    END IF;
6598                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6599                ,p_balance_type_code => l_balance_type_code);
6600 
6602 
6603    -----------------------------------------------------------------------------------------
6604    -- 4262811 Multiperiod Accounting
6605    -----------------------------------------------------------------------------------------
6606      -- No MPA option is assigned.
6607 
6608 
6609 END IF;
6610 END IF;
6611 --
6612 
6613 --
6614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6615    trace
6616       (p_msg      => 'END of AcctLineType_33'
6617       ,p_level    => C_LEVEL_PROCEDURE
6618       ,p_module   => l_log_module);
6619 END IF;
6620 --
6621 EXCEPTION
6622   WHEN xla_exceptions_pkg.application_exception THEN
6623       RAISE;
6624   WHEN OTHERS THEN
6625        xla_exceptions_pkg.raise_message
6626            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_33');
6627 END AcctLineType_33;
6628 --
6629 
6630 ---------------------------------------
6631 --
6632 -- PRIVATE FUNCTION
6633 --         AcctLineType_34
6634 --
6635 ---------------------------------------
6636 PROCEDURE AcctLineType_34 (
6637   p_application_id        IN NUMBER
6638  ,p_event_id              IN NUMBER
6639  ,p_calculate_acctd_flag  IN VARCHAR2
6640  ,p_calculate_g_l_flag    IN VARCHAR2
6641  ,p_actual_flag           IN OUT VARCHAR2
6642  ,p_balance_type_code     OUT VARCHAR2
6643  ,p_gain_or_loss_ref      OUT VARCHAR2
6644  
6645 --Budget Code Combination ID
6646  , p_source_3            IN NUMBER
6647 --Reversing Line Flag
6648  , p_source_23            IN VARCHAR2
6649 --Entered Currency Code
6650  , p_source_26            IN VARCHAR2
6651 --Line Type
6652  , p_source_35            IN VARCHAR2
6653  , p_source_35_meaning    IN VARCHAR2
6654 --Budget Amount Code
6655  , p_source_37            IN VARCHAR2
6656 --Project Type Class
6657  , p_source_38            IN VARCHAR2
6658  , p_source_38_meaning    IN VARCHAR2
6659 --Project Budgetary Control Balance Type
6660  , p_source_39            IN VARCHAR2
6661 --Budget Line ID
6662  , p_source_40            IN NUMBER
6663 --Encumbrance Upgrade Credit Accounting Class
6664  , p_source_41            IN VARCHAR2
6665 --Entered Amount
6666  , p_source_42            IN NUMBER
6667 --Accounted Amount
6668  , p_source_43            IN NUMBER
6669 --Use Encumbrance Upgrade Attributes Flag
6670  , p_source_44            IN VARCHAR2
6671 )
6672 IS
6673 
6674 l_component_type              VARCHAR2(80);
6675 l_component_code              VARCHAR2(30);
6676 l_component_type_code         VARCHAR2(1);
6677 l_component_appl_id           INTEGER;
6678 l_amb_context_code            VARCHAR2(30);
6679 l_entity_code                 VARCHAR2(30);
6680 l_event_class_code            VARCHAR2(30);
6681 l_ae_header_id                NUMBER;
6682 l_event_type_code             VARCHAR2(30);
6683 l_line_definition_code        VARCHAR2(30);
6684 l_line_definition_owner_code  VARCHAR2(1);
6685 --
6686 -- adr variables
6687 l_segment                     VARCHAR2(30);
6688 l_ccid                        NUMBER;
6689 l_adr_transaction_coa_id      NUMBER;
6690 l_adr_accounting_coa_id       NUMBER;
6691 l_adr_flexfield_segment_code  VARCHAR2(30);
6692 l_adr_flex_value_set_id       NUMBER;
6693 l_adr_value_type_code         VARCHAR2(30);
6694 l_adr_value_combination_id    NUMBER;
6695 l_adr_value_segment_code      VARCHAR2(30);
6696 
6697 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6698 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6699 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6700 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6701 
6702 -- 4262811 Variables ------------------------------------------------------------------------------------------
6703 l_entered_amt_idx             NUMBER;
6704 l_accted_amt_idx              NUMBER;
6705 l_acc_rev_flag                VARCHAR2(1);
6706 l_accrual_line_num            NUMBER;
6707 l_tmp_amt                     NUMBER;
6708 l_acc_rev_natural_side_code   VARCHAR2(1);
6709 
6710 l_num_entries                 NUMBER;
6711 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6712 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6713 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6714 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6715 l_recog_line_1                NUMBER;
6716 l_recog_line_2                NUMBER;
6717 
6718 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6719 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6720 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6721 
6722 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6723 
6724 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6725 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6726 
6727 ---------------------------------------------------------------------------------------------------------------
6728 
6729 
6730 --
6731 -- bulk performance
6732 --
6733 l_balance_type_code           VARCHAR2(1);
6734 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6735 l_log_module                  VARCHAR2(240);
6736 
6737 --
6738 -- Upgrade strategy
6739 --
6740 l_actual_upg_option           VARCHAR2(1);
6741 l_enc_upg_option           VARCHAR2(1);
6742 
6743 --
6744 BEGIN
6745 --
6746 IF g_log_enabled THEN
6750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6747       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
6748 END IF;
6749 --
6751 
6752       trace
6753          (p_msg      => 'BEGIN of AcctLineType_34'
6754          ,p_level    => C_LEVEL_PROCEDURE
6755          ,p_module   => l_log_module);
6756 
6757 END IF;
6758 --
6759 l_component_type             := 'AMB_JLT';
6760 l_component_code             := 'PA_ANT_REIMB_OTH_INC_C184';
6761 l_component_type_code        := 'S';
6762 l_component_appl_id          :=  275;
6763 l_amb_context_code           := 'DEFAULT';
6764 l_entity_code                := 'BUDGETS';
6765 l_event_class_code           := 'BUDGET';
6766 l_event_type_code            := 'BUDGET_ALL';
6767 l_line_definition_owner_code := 'S';
6768 l_line_definition_code       := 'PROJECTS_BUD_SLA_JLD';
6769 --
6770 l_balance_type_code          := 'A';
6771 l_segment                     := NULL;
6772 l_ccid                        := NULL;
6773 l_adr_transaction_coa_id      := NULL;
6774 l_adr_accounting_coa_id       := NULL;
6775 l_adr_flexfield_segment_code  := NULL;
6776 l_adr_flex_value_set_id       := NULL;
6777 l_adr_value_type_code         := NULL;
6778 l_adr_value_combination_id    := NULL;
6779 l_adr_value_segment_code      := NULL;
6780 
6781 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6782 l_bflow_class_code           := '';    -- 4219869 Business Flow
6783 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6784 l_budgetary_control_flag     := 'N';
6785 
6786 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6787 l_bflow_applied_to_amt       := NULL; -- 5132302
6788 l_entered_amt_idx            := NULL;          -- 4262811
6789 l_accted_amt_idx             := NULL;          -- 4262811
6790 l_acc_rev_flag               := NULL;          -- 4262811
6791 l_accrual_line_num           := NULL;          -- 4262811
6792 l_tmp_amt                    := NULL;          -- 4262811
6793 --
6794  
6795 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6796     l_balance_type_code <> 'B' THEN
6797 IF NVL(p_source_37,'
6798 ') =  'R' AND 
6799 NVL(p_source_38,'
6800 ') =  'CONTRACT' AND 
6801 NVL(p_source_39,'
6802 ') =  'B'
6803  THEN 
6804 
6805    --
6806    XLA_AE_LINES_PKG.SetNewLine;
6807 
6808    p_balance_type_code          := l_balance_type_code;
6809    -- set the flag so later we will know whether the gain loss line needs to be created
6810    
6811    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6812      p_actual_flag :='A';
6813    END IF;
6814 
6815    --
6816    -- bulk performance
6817    --
6818    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6819                                       p_header_num   => 0); -- 4262811
6820    --
6821    -- set accounting line options
6822    --
6823    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6824            p_natural_side_code          => 'C'
6825          , p_gain_or_loss_flag          => 'N'
6826          , p_gl_transfer_mode_code      => 'S'
6827          , p_acct_entry_type_code       => 'A'
6828          , p_switch_side_flag           => 'Y'
6829          , p_merge_duplicate_code       => 'N'
6830          );
6831    --
6832    l_acc_rev_natural_side_code := 'D';  -- 4262811
6833    -- 
6834    --
6835    -- set accounting line type info
6836    --
6837    xla_ae_lines_pkg.SetAcctLineType
6838       (p_component_type             => l_component_type
6839       ,p_event_type_code            => l_event_type_code
6840       ,p_line_definition_owner_code => l_line_definition_owner_code
6841       ,p_line_definition_code       => l_line_definition_code
6842       ,p_accounting_line_code       => l_component_code
6843       ,p_accounting_line_type_code  => l_component_type_code
6844       ,p_accounting_line_appl_id    => l_component_appl_id
6845       ,p_amb_context_code           => l_amb_context_code
6846       ,p_entity_code                => l_entity_code
6847       ,p_event_class_code           => l_event_class_code);
6848    --
6849    -- set accounting class
6850    --
6851    xla_ae_lines_pkg.SetAcctClass(
6852            p_accounting_class_code  => 'PA_BUDGET_EXECUTION_RESERVE_CR'
6853          , p_ae_header_id           => l_ae_header_id
6854          );
6855 
6856    --
6857    -- set rounding class
6858    --
6859    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6860                       'PA_BUDGET_EXECUTION_RESERVE_CR';
6861 
6862    --
6863    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6864    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6865    --
6866    -- bulk performance
6867    --
6868    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6869 
6870    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6871       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6872 
6873    -- 4955764
6874    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6875       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6876 
6877    -- 4458381 Public Sector Enh
6878    
6879    --
6880    -- set accounting attributes for the line type
6881    --
6882 
6883    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6884    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6885 
6886    ---------------------------------------------------------------------------------------------------------------
6890 
6887    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6888    ---------------------------------------------------------------------------------------------------------------
6889    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6891    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6892    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6893 
6894    IF xla_accounting_cache_pkg.GetValueChar
6895          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6896          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6897    AND l_bflow_method_code = 'PRIOR_ENTRY'
6898 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6899    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6900          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6901        )
6902    THEN
6903          xla_ae_lines_pkg.BflowUpgEntry
6904            (p_business_method_code    => l_bflow_method_code
6905            ,p_business_class_code     => l_bflow_class_code
6906            ,p_balance_type            => l_balance_type_code);
6907    ELSE
6908       NULL;
6909 -- No business flow processing for business flow method of NONE.
6910    END IF;
6911 
6912    --
6913    -- call analytical criteria
6914    --
6915    
6916    --
6917    -- call description
6918    --
6919    -- No description or it is inherited.
6920    --
6921    -- call ADRs
6922    -- Bug 4922099
6923    --
6924    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6925         (NVL(l_actual_upg_option, 'N') = 'O') OR
6926         (NVL(l_enc_upg_option, 'N') = 'O')
6927       )
6928    THEN
6929    NULL;
6930    --
6931    --
6932    
6933   l_ccid := AcctDerRule_11(
6934            p_application_id           => p_application_id
6935          , p_ae_header_id             => l_ae_header_id 
6936 , p_source_3 => p_source_3
6937          , x_transaction_coa_id       => l_adr_transaction_coa_id
6938          , x_accounting_coa_id        => l_adr_accounting_coa_id
6939          , x_value_type_code          => l_adr_value_type_code
6940          , p_side                     => 'NA'
6941    );
6942 
6943    xla_ae_lines_pkg.set_ccid(
6944     p_code_combination_id          => l_ccid
6945   , p_value_type_code              => l_adr_value_type_code
6946   , p_transaction_coa_id           => l_adr_transaction_coa_id
6947   , p_accounting_coa_id            => l_adr_accounting_coa_id
6948   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
6949   , p_adr_type_code                => 'S'
6950   , p_component_type               => l_component_type
6951   , p_component_code               => l_component_code
6952   , p_component_type_code          => l_component_type_code
6953   , p_component_appl_id            => l_component_appl_id
6954   , p_amb_context_code             => l_amb_context_code
6955   , p_side                         => 'NA'
6956   );
6957 
6958 
6959    l_segment := AcctDerRule_8(
6960            p_application_id           => p_application_id
6961          , p_ae_header_id             => l_ae_header_id 
6962          , x_transaction_coa_id       => l_adr_transaction_coa_id
6963          , x_accounting_coa_id        => l_adr_accounting_coa_id
6964          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
6965          , x_flex_value_set_id        => l_adr_flex_value_set_id
6966          , x_value_type_code          => l_adr_value_type_code
6967          , x_value_combination_id     => l_adr_value_combination_id
6968          , x_value_segment_code       => l_adr_value_segment_code
6969          , p_side                     => 'NA'
6970          , p_override_seg_flag        => 'Y'
6971    );
6972 
6973    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
6974 
6975       xla_ae_lines_pkg.set_segment(
6976           p_to_segment_code         => 'GL_ACCOUNT'
6977         , p_segment_value           => l_segment
6978         , p_from_segment_code       => l_adr_value_segment_code
6979         , p_from_combination_id     => l_adr_value_combination_id
6980         , p_value_type_code         => l_adr_value_type_code
6981         , p_transaction_coa_id      => l_adr_transaction_coa_id
6982         , p_accounting_coa_id       => l_adr_accounting_coa_id
6983         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
6984         , p_flex_value_set_id       => l_adr_flex_value_set_id
6985         , p_adr_code                => 'PA_421001-C184'
6986         , p_adr_type_code           => 'S'
6987         , p_component_type          => l_component_type
6988         , p_component_code          => l_component_code
6989         , p_component_type_code     => l_component_type_code
6990         , p_component_appl_id       => l_component_appl_id
6991         , p_amb_context_code        => l_amb_context_code
6992         , p_entity_code             => 'BUDGETS'
6993         , p_event_class_code        => 'BUDGET'
6994         , p_side                    => 'NA'
6995         );
6996 
6997   END IF;
6998 
6999    --
7000    --
7001    END IF;
7002    --
7003    -- Bug 4922099
7004    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7005           (NVL(l_enc_upg_option, 'N') = 'O')
7006         ) AND
7007         (l_bflow_method_code = 'PRIOR_ENTRY')
7008       )
7009    THEN
7010       IF
7011       --
7012       1 = 2
7013       --
7014       THEN
7015       xla_accounting_err_pkg.build_message
7016                                     (p_appli_s_name            => 'XLA'
7017                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7018                                     ,p_token_1                 => 'LINE_NUMBER'
7022                                                                              l_component_type
7019                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7020                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7021                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7023                                                                             ,l_component_code
7024                                                                             ,l_component_type_code
7025                                                                             ,l_component_appl_id
7026                                                                             ,l_amb_context_code
7027                                                                             ,l_entity_code
7028                                                                             ,l_event_class_code
7029                                                                            )
7030                                     ,p_token_3                 => 'OWNER'
7031                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7032                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7033                                                                           ,p_lookup_code    => l_component_type_code
7034                                                                          )
7035                                     ,p_token_4                 => 'PRODUCT_NAME'
7036                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7037                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7038                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7039                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7040                                     ,p_ae_header_id            =>  NULL
7041                                        );
7042 
7043         IF (C_LEVEL_ERROR>= g_log_level) THEN
7044                  trace
7045                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7046                       ,p_level    => C_LEVEL_ERROR
7047                       ,p_module   => l_log_module);
7048         END IF;
7049       END IF;
7050    END IF;
7051    --
7052    --
7053    ------------------------------------------------------------------------------------------------
7054    -- 4219869 Business Flow
7055    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7056    -- Prior Entry.  Currently, the following code is always generated.
7057    ------------------------------------------------------------------------------------------------
7058    XLA_AE_LINES_PKG.ValidateCurrentLine;
7059 
7060    ------------------------------------------------------------------------------------
7061    -- 4219869 Business Flow
7062    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7063    ------------------------------------------------------------------------------------
7064    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7065 
7066    ----------------------------------------------------------------------------------
7067    -- 4219869 Business Flow
7068    -- Update journal entry status -- Need to generate this within IF <condition>
7069    ----------------------------------------------------------------------------------
7070    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7071          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7072          ,p_balance_type_code => l_balance_type_code
7073          );
7074 
7075    -------------------------------------------------------------------------------------------
7076    -- 4262811 - Generate the Accrual Reversal lines
7077    -------------------------------------------------------------------------------------------
7078    BEGIN
7079       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7080                               (g_array_event(p_event_id).array_value_num('header_index'));
7081       IF l_acc_rev_flag IS NULL THEN
7082          l_acc_rev_flag := 'N';
7083       END IF;
7084    EXCEPTION
7085       WHEN OTHERS THEN
7086          l_acc_rev_flag := 'N';
7087    END;
7088    --
7089    IF (l_acc_rev_flag = 'Y') THEN
7090 
7091        -- 4645092  ------------------------------------------------------------------------------
7092        -- To allow MPA report to determine if it should generate report process
7093        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7094        ------------------------------------------------------------------------------------------
7095 
7096        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7097        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7098 
7099        --
7100        -- Update the line information that should be overwritten
7101        --
7102        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7103                                          p_header_num   => 1);
7104        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7105 
7106        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7107 
7108        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7109           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7110        END IF;
7111 
7112       --
7113       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7114       --
7115       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7116           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7117       ELSE
7121           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7118           ---------------------------------------------------------------------------------------------------
7119           -- 4262811a Switch Sign
7120           ---------------------------------------------------------------------------------------------------
7122           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7123                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7124           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7125                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7126           -- 5132302
7127           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7128                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7129 
7130       END IF;
7131 
7132       -- 4955764
7133       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7134       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7135 
7136 
7137       XLA_AE_LINES_PKG.ValidateCurrentLine;
7138       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7139 
7140       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7141                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7142                ,p_balance_type_code => l_balance_type_code);
7143 
7144    END IF;
7145 
7146    -----------------------------------------------------------------------------------------
7147    -- 4262811 Multiperiod Accounting
7148    -----------------------------------------------------------------------------------------
7149      -- No MPA option is assigned.
7150 
7151 
7152 END IF;
7153 END IF;
7154 --
7155 
7156 --
7157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7158    trace
7159       (p_msg      => 'END of AcctLineType_34'
7160       ,p_level    => C_LEVEL_PROCEDURE
7161       ,p_module   => l_log_module);
7162 END IF;
7163 --
7164 EXCEPTION
7165   WHEN xla_exceptions_pkg.application_exception THEN
7166       RAISE;
7167   WHEN OTHERS THEN
7168        xla_exceptions_pkg.raise_message
7169            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_34');
7170 END AcctLineType_34;
7171 --
7172 
7173 ---------------------------------------
7174 --
7175 -- PRIVATE FUNCTION
7176 --         AcctLineType_35
7177 --
7178 ---------------------------------------
7179 PROCEDURE AcctLineType_35 (
7180   p_application_id        IN NUMBER
7181  ,p_event_id              IN NUMBER
7182  ,p_calculate_acctd_flag  IN VARCHAR2
7183  ,p_calculate_g_l_flag    IN VARCHAR2
7184  ,p_actual_flag           IN OUT VARCHAR2
7185  ,p_balance_type_code     OUT VARCHAR2
7186  ,p_gain_or_loss_ref      OUT VARCHAR2
7187  
7188 --Revenue CCID
7189  , p_source_19            IN NUMBER
7190 --Entered Currency Code
7191  , p_source_26            IN VARCHAR2
7192 --Exchange Rate Date
7193  , p_source_28            IN DATE
7194 --Exchange Rate
7195  , p_source_29            IN NUMBER
7196 --Exchange Rate Type
7197  , p_source_30            IN VARCHAR2
7198 --Entered Amount
7199  , p_source_42            IN NUMBER
7200 --Accounted Amount
7201  , p_source_43            IN NUMBER
7202 --Revenue Distribution Type
7203  , p_source_46            IN VARCHAR2
7204 --System Linkage Function
7205  , p_source_47            IN VARCHAR2
7206 --Crediting Revenue Flag
7207  , p_source_48            IN VARCHAR2
7208 --Revenue First Distribution ID
7209  , p_source_49            IN NUMBER
7210 --Revenue Second Distribution ID
7211  , p_source_50            IN NUMBER
7212 --Event ID
7213  , p_source_51            IN NUMBER
7214 )
7215 IS
7216 
7217 l_component_type              VARCHAR2(80);
7218 l_component_code              VARCHAR2(30);
7219 l_component_type_code         VARCHAR2(1);
7220 l_component_appl_id           INTEGER;
7221 l_amb_context_code            VARCHAR2(30);
7222 l_entity_code                 VARCHAR2(30);
7223 l_event_class_code            VARCHAR2(30);
7224 l_ae_header_id                NUMBER;
7225 l_event_type_code             VARCHAR2(30);
7226 l_line_definition_code        VARCHAR2(30);
7227 l_line_definition_owner_code  VARCHAR2(1);
7228 --
7229 -- adr variables
7230 l_segment                     VARCHAR2(30);
7231 l_ccid                        NUMBER;
7232 l_adr_transaction_coa_id      NUMBER;
7233 l_adr_accounting_coa_id       NUMBER;
7234 l_adr_flexfield_segment_code  VARCHAR2(30);
7235 l_adr_flex_value_set_id       NUMBER;
7236 l_adr_value_type_code         VARCHAR2(30);
7237 l_adr_value_combination_id    NUMBER;
7238 l_adr_value_segment_code      VARCHAR2(30);
7239 
7240 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7241 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7242 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7243 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7244 
7245 -- 4262811 Variables ------------------------------------------------------------------------------------------
7246 l_entered_amt_idx             NUMBER;
7247 l_accted_amt_idx              NUMBER;
7248 l_acc_rev_flag                VARCHAR2(1);
7249 l_accrual_line_num            NUMBER;
7250 l_tmp_amt                     NUMBER;
7251 l_acc_rev_natural_side_code   VARCHAR2(1);
7252 
7253 l_num_entries                 NUMBER;
7254 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7255 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7259 l_recog_line_2                NUMBER;
7256 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7257 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7258 l_recog_line_1                NUMBER;
7260 
7261 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7262 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7263 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7264 
7265 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7266 
7267 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7268 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7269 
7270 ---------------------------------------------------------------------------------------------------------------
7271 
7272 
7273 --
7274 -- bulk performance
7275 --
7276 l_balance_type_code           VARCHAR2(1);
7277 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7278 l_log_module                  VARCHAR2(240);
7279 
7280 --
7281 -- Upgrade strategy
7282 --
7283 l_actual_upg_option           VARCHAR2(1);
7284 l_enc_upg_option           VARCHAR2(1);
7285 
7286 --
7287 BEGIN
7288 --
7289 IF g_log_enabled THEN
7290       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
7291 END IF;
7292 --
7293 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7294 
7295       trace
7296          (p_msg      => 'BEGIN of AcctLineType_35'
7297          ,p_level    => C_LEVEL_PROCEDURE
7298          ,p_module   => l_log_module);
7299 
7300 END IF;
7301 --
7302 l_component_type             := 'AMB_JLT';
7303 l_component_code             := 'PA_BTC_REV';
7304 l_component_type_code        := 'S';
7305 l_component_appl_id          :=  275;
7306 l_amb_context_code           := 'DEFAULT';
7307 l_entity_code                := 'REVENUE';
7308 l_event_class_code           := 'REVENUE';
7309 l_event_type_code            := 'REVENUE_ALL';
7310 l_line_definition_owner_code := 'S';
7311 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
7312 --
7313 l_balance_type_code          := 'A';
7314 l_segment                     := NULL;
7315 l_ccid                        := NULL;
7316 l_adr_transaction_coa_id      := NULL;
7317 l_adr_accounting_coa_id       := NULL;
7318 l_adr_flexfield_segment_code  := NULL;
7319 l_adr_flex_value_set_id       := NULL;
7320 l_adr_value_type_code         := NULL;
7321 l_adr_value_combination_id    := NULL;
7322 l_adr_value_segment_code      := NULL;
7323 
7324 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7325 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
7326 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7327 l_budgetary_control_flag     := 'N';
7328 
7329 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7330 l_bflow_applied_to_amt       := NULL; -- 5132302
7331 l_entered_amt_idx            := NULL;          -- 4262811
7332 l_accted_amt_idx             := NULL;          -- 4262811
7333 l_acc_rev_flag               := NULL;          -- 4262811
7334 l_accrual_line_num           := NULL;          -- 4262811
7335 l_tmp_amt                    := NULL;          -- 4262811
7336 --
7337  
7338 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7339     l_balance_type_code <> 'B' THEN
7340 IF NVL(p_source_46,'
7341 ') =  'Revenue - Normal Revenue' AND 
7342 NVL(p_source_47,'
7343 ') =  'BTC' AND 
7344 NVL(p_source_48,'
7345 ') =  'N'
7346  THEN 
7347 
7348    --
7349    XLA_AE_LINES_PKG.SetNewLine;
7350 
7351    p_balance_type_code          := l_balance_type_code;
7352    -- set the flag so later we will know whether the gain loss line needs to be created
7353    
7354    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7355      p_actual_flag :='A';
7356    END IF;
7357 
7358    --
7359    -- bulk performance
7360    --
7361    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7362                                       p_header_num   => 0); -- 4262811
7363    --
7364    -- set accounting line options
7365    --
7366    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7367            p_natural_side_code          => 'C'
7368          , p_gain_or_loss_flag          => 'N'
7369          , p_gl_transfer_mode_code      => 'S'
7370          , p_acct_entry_type_code       => 'A'
7371          , p_switch_side_flag           => 'Y'
7372          , p_merge_duplicate_code       => 'N'
7373          );
7374    --
7375    l_acc_rev_natural_side_code := 'D';  -- 4262811
7376    -- 
7377    --
7378    -- set accounting line type info
7379    --
7380    xla_ae_lines_pkg.SetAcctLineType
7381       (p_component_type             => l_component_type
7382       ,p_event_type_code            => l_event_type_code
7383       ,p_line_definition_owner_code => l_line_definition_owner_code
7384       ,p_line_definition_code       => l_line_definition_code
7385       ,p_accounting_line_code       => l_component_code
7386       ,p_accounting_line_type_code  => l_component_type_code
7387       ,p_accounting_line_appl_id    => l_component_appl_id
7388       ,p_amb_context_code           => l_amb_context_code
7389       ,p_entity_code                => l_entity_code
7390       ,p_event_class_code           => l_event_class_code);
7391    --
7392    -- set accounting class
7393    --
7394    xla_ae_lines_pkg.SetAcctClass(
7395            p_accounting_class_code  => 'REVENUE'
7396          , p_ae_header_id           => l_ae_header_id
7397          );
7398 
7399    --
7400    -- set rounding class
7401    --
7405    --
7402    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7403                       'REVENUE';
7404 
7406    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7407    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7408    --
7409    -- bulk performance
7410    --
7411    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7412 
7413    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7414       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7415 
7416    -- 4955764
7417    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7419 
7420    -- 4458381 Public Sector Enh
7421    
7422    --
7423    -- set accounting attributes for the line type
7424    --
7425    l_entered_amt_idx := 4;
7426    l_accted_amt_idx  := 10;
7427    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7428    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7429    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
7430    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
7431    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
7432    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
7433    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
7434    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
7435    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
7436    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
7437    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
7438    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
7439    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
7440    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
7441    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
7442    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
7443    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
7444    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
7445    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
7446    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
7447    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
7448 
7449    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7450    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7451 
7452    ---------------------------------------------------------------------------------------------------------------
7453    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7454    ---------------------------------------------------------------------------------------------------------------
7455    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7456 
7457    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7458    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7459 
7460    IF xla_accounting_cache_pkg.GetValueChar
7461          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7462          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7463    AND l_bflow_method_code = 'PRIOR_ENTRY'
7464 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7465    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7466          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7467        )
7468    THEN
7469          xla_ae_lines_pkg.BflowUpgEntry
7470            (p_business_method_code    => l_bflow_method_code
7471            ,p_business_class_code     => l_bflow_class_code
7472            ,p_balance_type            => l_balance_type_code);
7473    ELSE
7474       NULL;
7475 -- No business flow processing for business flow method of NONE.
7476    END IF;
7477 
7478    --
7479    -- call analytical criteria
7480    --
7481    
7482    --
7483    -- call description
7484    --
7485    -- No description or it is inherited.
7486    --
7487    -- call ADRs
7488    -- Bug 4922099
7489    --
7490    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7491         (NVL(l_actual_upg_option, 'N') = 'O') OR
7492         (NVL(l_enc_upg_option, 'N') = 'O')
7493       )
7494    THEN
7495    NULL;
7496    --
7497    --
7498    
7499   l_ccid := AcctDerRule_26(
7500            p_application_id           => p_application_id
7501          , p_ae_header_id             => l_ae_header_id 
7502 , p_source_19 => p_source_19
7503          , x_transaction_coa_id       => l_adr_transaction_coa_id
7504          , x_accounting_coa_id        => l_adr_accounting_coa_id
7505          , x_value_type_code          => l_adr_value_type_code
7506          , p_side                     => 'NA'
7507    );
7508 
7509    xla_ae_lines_pkg.set_ccid(
7510     p_code_combination_id          => l_ccid
7511   , p_value_type_code              => l_adr_value_type_code
7512   , p_transaction_coa_id           => l_adr_transaction_coa_id
7513   , p_accounting_coa_id            => l_adr_accounting_coa_id
7514   , p_adr_code                     => 'REVENUE_RULE'
7515   , p_adr_type_code                => 'S'
7516   , p_component_type               => l_component_type
7517   , p_component_code               => l_component_code
7518   , p_component_type_code          => l_component_type_code
7519   , p_component_appl_id            => l_component_appl_id
7520   , p_amb_context_code             => l_amb_context_code
7521   , p_side                         => 'NA'
7522   );
7523 
7524 
7528    --
7525    --
7526    --
7527    END IF;
7529    -- Bug 4922099
7530    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7531           (NVL(l_enc_upg_option, 'N') = 'O')
7532         ) AND
7533         (l_bflow_method_code = 'PRIOR_ENTRY')
7534       )
7535    THEN
7536       IF
7537       --
7538       1 = 2
7539       --
7540       THEN
7541       xla_accounting_err_pkg.build_message
7542                                     (p_appli_s_name            => 'XLA'
7543                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7544                                     ,p_token_1                 => 'LINE_NUMBER'
7545                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7546                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7547                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7548                                                                              l_component_type
7549                                                                             ,l_component_code
7550                                                                             ,l_component_type_code
7551                                                                             ,l_component_appl_id
7552                                                                             ,l_amb_context_code
7553                                                                             ,l_entity_code
7554                                                                             ,l_event_class_code
7555                                                                            )
7556                                     ,p_token_3                 => 'OWNER'
7557                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7558                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7559                                                                           ,p_lookup_code    => l_component_type_code
7560                                                                          )
7561                                     ,p_token_4                 => 'PRODUCT_NAME'
7562                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7563                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7564                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7565                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7566                                     ,p_ae_header_id            =>  NULL
7567                                        );
7568 
7569         IF (C_LEVEL_ERROR>= g_log_level) THEN
7570                  trace
7571                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7572                       ,p_level    => C_LEVEL_ERROR
7573                       ,p_module   => l_log_module);
7574         END IF;
7575       END IF;
7576    END IF;
7577    --
7578    --
7579    ------------------------------------------------------------------------------------------------
7580    -- 4219869 Business Flow
7581    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7582    -- Prior Entry.  Currently, the following code is always generated.
7583    ------------------------------------------------------------------------------------------------
7584    XLA_AE_LINES_PKG.ValidateCurrentLine;
7585 
7586    ------------------------------------------------------------------------------------
7587    -- 4219869 Business Flow
7588    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7589    ------------------------------------------------------------------------------------
7590    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7591 
7592    ----------------------------------------------------------------------------------
7593    -- 4219869 Business Flow
7594    -- Update journal entry status -- Need to generate this within IF <condition>
7595    ----------------------------------------------------------------------------------
7596    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7597          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7598          ,p_balance_type_code => l_balance_type_code
7599          );
7600 
7601    -------------------------------------------------------------------------------------------
7602    -- 4262811 - Generate the Accrual Reversal lines
7603    -------------------------------------------------------------------------------------------
7604    BEGIN
7605       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7606                               (g_array_event(p_event_id).array_value_num('header_index'));
7607       IF l_acc_rev_flag IS NULL THEN
7608          l_acc_rev_flag := 'N';
7609       END IF;
7610    EXCEPTION
7611       WHEN OTHERS THEN
7612          l_acc_rev_flag := 'N';
7613    END;
7614    --
7615    IF (l_acc_rev_flag = 'Y') THEN
7616 
7617        -- 4645092  ------------------------------------------------------------------------------
7618        -- To allow MPA report to determine if it should generate report process
7619        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7620        ------------------------------------------------------------------------------------------
7621 
7622        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7623        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7624 
7625        --
7626        -- Update the line information that should be overwritten
7627        --
7628        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7629                                          p_header_num   => 1);
7630        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7631 
7635           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7632        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7633 
7634        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7636        END IF;
7637 
7638       --
7639       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7640       --
7641       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7642           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7643       ELSE
7644           ---------------------------------------------------------------------------------------------------
7645           -- 4262811a Switch Sign
7646           ---------------------------------------------------------------------------------------------------
7647           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7648           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7649                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7650           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7651                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7652           -- 5132302
7653           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7654                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7655 
7656       END IF;
7657 
7658       -- 4955764
7659       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7660       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7661 
7662 
7663       XLA_AE_LINES_PKG.ValidateCurrentLine;
7664       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7665 
7666       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7667                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7668                ,p_balance_type_code => l_balance_type_code);
7669 
7670    END IF;
7671 
7672    -----------------------------------------------------------------------------------------
7673    -- 4262811 Multiperiod Accounting
7674    -----------------------------------------------------------------------------------------
7675      -- No MPA option is assigned.
7676 
7677 
7678 END IF;
7679 END IF;
7680 --
7681 
7682 --
7683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7684    trace
7685       (p_msg      => 'END of AcctLineType_35'
7686       ,p_level    => C_LEVEL_PROCEDURE
7687       ,p_module   => l_log_module);
7688 END IF;
7689 --
7690 EXCEPTION
7691   WHEN xla_exceptions_pkg.application_exception THEN
7692       RAISE;
7693   WHEN OTHERS THEN
7694        xla_exceptions_pkg.raise_message
7695            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_35');
7696 END AcctLineType_35;
7697 --
7698 
7699 ---------------------------------------
7700 --
7701 -- PRIVATE FUNCTION
7702 --         AcctLineType_36
7703 --
7704 ---------------------------------------
7705 PROCEDURE AcctLineType_36 (
7706   p_application_id        IN NUMBER
7707  ,p_event_id              IN NUMBER
7708  ,p_calculate_acctd_flag  IN VARCHAR2
7709  ,p_calculate_g_l_flag    IN VARCHAR2
7710  ,p_actual_flag           IN OUT VARCHAR2
7711  ,p_balance_type_code     OUT VARCHAR2
7712  ,p_gain_or_loss_ref      OUT VARCHAR2
7713  
7714 --Budget Code Combination ID
7715  , p_source_3            IN NUMBER
7716 --Cost CCID
7717  , p_source_4            IN NUMBER
7718 --Allow Account Override Flag
7719  , p_source_5            IN VARCHAR2
7720 --Adjustment Cost CCID
7721  , p_source_6            IN NUMBER
7722 --Cost Clearing CCID
7723  , p_source_7            IN NUMBER
7724 --Reversing Line Flag
7725  , p_source_23            IN VARCHAR2
7726 --Actual Upgrade Credit Accounting Class
7727  , p_source_24            IN VARCHAR2
7728 --Entered Currency Code
7729  , p_source_26            IN VARCHAR2
7730 --Exchange Rate Date
7731  , p_source_28            IN DATE
7732 --Exchange Rate
7733  , p_source_29            IN NUMBER
7734 --Exchange Rate Type
7735  , p_source_30            IN VARCHAR2
7736 --Actual Upgrade Debit Accounting Class
7737  , p_source_31            IN VARCHAR2
7738 --Use Actuals Upgrade Attributes Flag
7739  , p_source_32            IN VARCHAR2
7740 --Expenditure Item ID
7741  , p_source_33            IN NUMBER
7742 --Cost Distribution Line Number
7743  , p_source_34            IN NUMBER
7744 --Line Type
7745  , p_source_35            IN VARCHAR2
7746  , p_source_35_meaning    IN VARCHAR2
7747 --Reversed Line Number
7748  , p_source_36            IN NUMBER
7749 --Encumbrance Upgrade Credit Accounting Class
7750  , p_source_41            IN VARCHAR2
7751 --Use Encumbrance Upgrade Attributes Flag
7752  , p_source_44            IN VARCHAR2
7753 --Entered Burdened Cost
7754  , p_source_52            IN NUMBER
7755 --Accounted Burdened Cost
7756  , p_source_53            IN NUMBER
7757 --Encumbrance Amount
7758  , p_source_54            IN NUMBER
7759 --Project Encumbrance Applied to Application Identifier
7760  , p_source_55            IN NUMBER
7761 --Project Encumbrance Applied to Distribution Type
7762  , p_source_56            IN VARCHAR2
7763 --Project Encumbrance Applied to Entity Code
7764  , p_source_57            IN VARCHAR2
7765 --Project Encumbrance Applied to First Distribution ID
7766  , p_source_58            IN NUMBER
7767 --Project Encumbrance Applied to First System Transaction ID
7771 --Encumbrance Upgrade Debit Accounting Class
7768  , p_source_59            IN NUMBER
7769 --Project Encumbrance Applied to Second Distribution ID
7770  , p_source_60            IN VARCHAR2
7772  , p_source_61            IN VARCHAR2
7773 --Encumbrance Type ID
7774  , p_source_62            IN NUMBER
7775 --Project Encumbrance Type ID
7776  , p_source_63            IN NUMBER
7777 )
7778 IS
7779 
7780 l_component_type              VARCHAR2(80);
7781 l_component_code              VARCHAR2(30);
7782 l_component_type_code         VARCHAR2(1);
7783 l_component_appl_id           INTEGER;
7784 l_amb_context_code            VARCHAR2(30);
7785 l_entity_code                 VARCHAR2(30);
7786 l_event_class_code            VARCHAR2(30);
7787 l_ae_header_id                NUMBER;
7788 l_event_type_code             VARCHAR2(30);
7789 l_line_definition_code        VARCHAR2(30);
7790 l_line_definition_owner_code  VARCHAR2(1);
7791 --
7792 -- adr variables
7793 l_segment                     VARCHAR2(30);
7794 l_ccid                        NUMBER;
7795 l_adr_transaction_coa_id      NUMBER;
7796 l_adr_accounting_coa_id       NUMBER;
7797 l_adr_flexfield_segment_code  VARCHAR2(30);
7798 l_adr_flex_value_set_id       NUMBER;
7799 l_adr_value_type_code         VARCHAR2(30);
7800 l_adr_value_combination_id    NUMBER;
7801 l_adr_value_segment_code      VARCHAR2(30);
7802 
7803 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7804 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7805 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7806 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7807 
7808 -- 4262811 Variables ------------------------------------------------------------------------------------------
7809 l_entered_amt_idx             NUMBER;
7810 l_accted_amt_idx              NUMBER;
7811 l_acc_rev_flag                VARCHAR2(1);
7812 l_accrual_line_num            NUMBER;
7813 l_tmp_amt                     NUMBER;
7814 l_acc_rev_natural_side_code   VARCHAR2(1);
7815 
7816 l_num_entries                 NUMBER;
7817 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7818 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7819 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7820 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7821 l_recog_line_1                NUMBER;
7822 l_recog_line_2                NUMBER;
7823 
7824 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7825 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7826 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7827 
7828 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7829 
7830 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7831 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7832 
7833 ---------------------------------------------------------------------------------------------------------------
7834 
7835 
7836 --
7837 -- bulk performance
7838 --
7839 l_balance_type_code           VARCHAR2(1);
7840 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7841 l_log_module                  VARCHAR2(240);
7842 
7843 --
7844 -- Upgrade strategy
7845 --
7846 l_actual_upg_option           VARCHAR2(1);
7847 l_enc_upg_option           VARCHAR2(1);
7848 
7849 --
7850 BEGIN
7851 --
7852 IF g_log_enabled THEN
7853       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
7854 END IF;
7855 --
7856 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7857 
7858       trace
7859          (p_msg      => 'BEGIN of AcctLineType_36'
7860          ,p_level    => C_LEVEL_PROCEDURE
7861          ,p_module   => l_log_module);
7862 
7863 END IF;
7864 --
7865 l_component_type             := 'AMB_JLT';
7866 l_component_code             := 'PA_BURDEN_COST';
7867 l_component_type_code        := 'S';
7868 l_component_appl_id          :=  275;
7869 l_amb_context_code           := 'DEFAULT';
7870 l_entity_code                := 'EXPENDITURES';
7871 l_event_class_code           := 'BURDEN_COST';
7872 l_event_type_code            := 'BURDEN_COST_ALL';
7873 l_line_definition_owner_code := 'S';
7874 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
7875 --
7876 l_balance_type_code          := 'A';
7877 l_segment                     := NULL;
7878 l_ccid                        := NULL;
7879 l_adr_transaction_coa_id      := NULL;
7880 l_adr_accounting_coa_id       := NULL;
7881 l_adr_flexfield_segment_code  := NULL;
7882 l_adr_flex_value_set_id       := NULL;
7883 l_adr_value_type_code         := NULL;
7884 l_adr_value_combination_id    := NULL;
7885 l_adr_value_segment_code      := NULL;
7886 
7887 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7888 l_bflow_class_code           := '';    -- 4219869 Business Flow
7889 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7890 l_budgetary_control_flag     := 'N';
7891 
7892 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7893 l_bflow_applied_to_amt       := NULL; -- 5132302
7894 l_entered_amt_idx            := NULL;          -- 4262811
7895 l_accted_amt_idx             := NULL;          -- 4262811
7896 l_acc_rev_flag               := NULL;          -- 4262811
7897 l_accrual_line_num           := NULL;          -- 4262811
7898 l_tmp_amt                    := NULL;          -- 4262811
7899 --
7900  
7901 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7902     l_balance_type_code <> 'B' THEN
7903 IF NVL(p_source_35,'
7904 ') =  'R'
7905  THEN 
7906 
7907    --
7908    XLA_AE_LINES_PKG.SetNewLine;
7909 
7913    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7910    p_balance_type_code          := l_balance_type_code;
7911    -- set the flag so later we will know whether the gain loss line needs to be created
7912    
7914      p_actual_flag :='A';
7915    END IF;
7916 
7917    --
7918    -- bulk performance
7919    --
7920    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7921                                       p_header_num   => 0); -- 4262811
7922    --
7923    -- set accounting line options
7924    --
7925    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7926            p_natural_side_code          => 'D'
7927          , p_gain_or_loss_flag          => 'N'
7928          , p_gl_transfer_mode_code      => 'S'
7929          , p_acct_entry_type_code       => 'A'
7930          , p_switch_side_flag           => 'Y'
7931          , p_merge_duplicate_code       => 'N'
7932          );
7933    --
7934    l_acc_rev_natural_side_code := 'C';  -- 4262811
7935    -- 
7936    --
7937    -- set accounting line type info
7938    --
7939    xla_ae_lines_pkg.SetAcctLineType
7940       (p_component_type             => l_component_type
7941       ,p_event_type_code            => l_event_type_code
7942       ,p_line_definition_owner_code => l_line_definition_owner_code
7943       ,p_line_definition_code       => l_line_definition_code
7944       ,p_accounting_line_code       => l_component_code
7945       ,p_accounting_line_type_code  => l_component_type_code
7946       ,p_accounting_line_appl_id    => l_component_appl_id
7947       ,p_amb_context_code           => l_amb_context_code
7948       ,p_entity_code                => l_entity_code
7949       ,p_event_class_code           => l_event_class_code);
7950    --
7951    -- set accounting class
7952    --
7953    xla_ae_lines_pkg.SetAcctClass(
7954            p_accounting_class_code  => 'COST'
7955          , p_ae_header_id           => l_ae_header_id
7956          );
7957 
7958    --
7959    -- set rounding class
7960    --
7961    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7962                       'COST';
7963 
7964    --
7965    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7966    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7967    --
7968    -- bulk performance
7969    --
7970    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7971 
7972    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7973       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7974 
7975    -- 4955764
7976    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7977       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7978 
7979    -- 4458381 Public Sector Enh
7980    
7981    --
7982    -- set accounting attributes for the line type
7983    --
7984    l_entered_amt_idx := 40;
7985    l_accted_amt_idx  := 45;
7986    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
7987    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
7988    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
7989    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
7990    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
7991    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
7992    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
7993    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
7994    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
7995    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
7996    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
7997    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
7998    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
7999    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
8000    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
8001    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
8002    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
8003    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
8004    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
8005    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
8006    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
8007    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
8008    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
8009    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
8010    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
8011    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
8012    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
8013    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
8014    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
8015    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
8016    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
8017    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
8018    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
8019    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
8020    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
8021    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
8022    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
8023    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
8024    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
8025    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
8026    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
8030    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
8027    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8028    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
8029    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
8031    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
8032    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
8033    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8034    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
8035    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
8036    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
8037    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
8038    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
8039    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
8040    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
8041    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
8042    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
8043    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
8044    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
8045    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
8046    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
8047    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
8048    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
8049    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
8050    l_rec_acct_attrs.array_char_value(32)  := p_source_26;
8051    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
8052    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
8053    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
8054    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
8055    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
8056    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
8057    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
8058    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
8059    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
8060    l_rec_acct_attrs.array_char_value(37)  := p_source_26;
8061    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
8062    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
8063    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
8064    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
8065    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
8066    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
8067    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
8068    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
8069    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
8070    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
8071    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
8072    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
8073    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
8074    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
8075    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
8076    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
8077    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
8078    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
8079    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
8080    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
8081    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
8082    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
8083    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
8084    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
8085    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
8086    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
8087 
8088    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8089    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8090 
8091    ---------------------------------------------------------------------------------------------------------------
8092    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8093    ---------------------------------------------------------------------------------------------------------------
8094    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8095 
8096    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8097    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8098 
8099    IF xla_accounting_cache_pkg.GetValueChar
8100          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8101          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8102    AND l_bflow_method_code = 'PRIOR_ENTRY'
8103 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8104    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8105          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8106        )
8107    THEN
8108          xla_ae_lines_pkg.BflowUpgEntry
8109            (p_business_method_code    => l_bflow_method_code
8110            ,p_business_class_code     => l_bflow_class_code
8111            ,p_balance_type            => l_balance_type_code);
8112    ELSE
8113       NULL;
8114 -- No business flow processing for business flow method of NONE.
8115    END IF;
8116 
8117    --
8118    -- call analytical criteria
8119    --
8120    
8121    --
8122    -- call description
8123    --
8124    -- No description or it is inherited.
8125    --
8126    -- call ADRs
8127    -- Bug 4922099
8128    --
8132       )
8129    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8130         (NVL(l_actual_upg_option, 'N') = 'O') OR
8131         (NVL(l_enc_upg_option, 'N') = 'O')
8133    THEN
8134    NULL;
8135    --
8136    --
8137    
8138   l_ccid := AcctDerRule_12(
8139            p_application_id           => p_application_id
8140          , p_ae_header_id             => l_ae_header_id 
8141 , p_source_4 => p_source_4
8142 , p_source_5 => p_source_5
8143 , p_source_6 => p_source_6
8144          , x_transaction_coa_id       => l_adr_transaction_coa_id
8145          , x_accounting_coa_id        => l_adr_accounting_coa_id
8146          , x_value_type_code          => l_adr_value_type_code
8147          , p_side                     => 'NA'
8148    );
8149 
8150    xla_ae_lines_pkg.set_ccid(
8151     p_code_combination_id          => l_ccid
8152   , p_value_type_code              => l_adr_value_type_code
8153   , p_transaction_coa_id           => l_adr_transaction_coa_id
8154   , p_accounting_coa_id            => l_adr_accounting_coa_id
8155   , p_adr_code                     => 'PA_COST_ACCT_RULE'
8156   , p_adr_type_code                => 'S'
8157   , p_component_type               => l_component_type
8158   , p_component_code               => l_component_code
8159   , p_component_type_code          => l_component_type_code
8160   , p_component_appl_id            => l_component_appl_id
8161   , p_amb_context_code             => l_amb_context_code
8162   , p_side                         => 'NA'
8163   );
8164 
8165 
8166    --
8167    --
8168    END IF;
8169    --
8170    -- Bug 4922099
8171    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8172           (NVL(l_enc_upg_option, 'N') = 'O')
8173         ) AND
8174         (l_bflow_method_code = 'PRIOR_ENTRY')
8175       )
8176    THEN
8177       IF
8178       --
8179       1 = 2
8180       --
8181       THEN
8182       xla_accounting_err_pkg.build_message
8183                                     (p_appli_s_name            => 'XLA'
8184                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8185                                     ,p_token_1                 => 'LINE_NUMBER'
8186                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8187                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8188                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8189                                                                              l_component_type
8190                                                                             ,l_component_code
8191                                                                             ,l_component_type_code
8192                                                                             ,l_component_appl_id
8193                                                                             ,l_amb_context_code
8194                                                                             ,l_entity_code
8195                                                                             ,l_event_class_code
8196                                                                            )
8197                                     ,p_token_3                 => 'OWNER'
8198                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8199                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8200                                                                           ,p_lookup_code    => l_component_type_code
8201                                                                          )
8202                                     ,p_token_4                 => 'PRODUCT_NAME'
8203                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8204                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8205                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8206                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8207                                     ,p_ae_header_id            =>  NULL
8208                                        );
8209 
8210         IF (C_LEVEL_ERROR>= g_log_level) THEN
8211                  trace
8212                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8213                       ,p_level    => C_LEVEL_ERROR
8214                       ,p_module   => l_log_module);
8215         END IF;
8216       END IF;
8217    END IF;
8218    --
8219    --
8220    ------------------------------------------------------------------------------------------------
8221    -- 4219869 Business Flow
8222    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8223    -- Prior Entry.  Currently, the following code is always generated.
8224    ------------------------------------------------------------------------------------------------
8225    XLA_AE_LINES_PKG.ValidateCurrentLine;
8226 
8227    ------------------------------------------------------------------------------------
8228    -- 4219869 Business Flow
8229    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8230    ------------------------------------------------------------------------------------
8231    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8232 
8233    ----------------------------------------------------------------------------------
8234    -- 4219869 Business Flow
8235    -- Update journal entry status -- Need to generate this within IF <condition>
8236    ----------------------------------------------------------------------------------
8237    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8238          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8239          ,p_balance_type_code => l_balance_type_code
8243    -- 4262811 - Generate the Accrual Reversal lines
8240          );
8241 
8242    -------------------------------------------------------------------------------------------
8244    -------------------------------------------------------------------------------------------
8245    BEGIN
8246       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8247                               (g_array_event(p_event_id).array_value_num('header_index'));
8248       IF l_acc_rev_flag IS NULL THEN
8249          l_acc_rev_flag := 'N';
8250       END IF;
8251    EXCEPTION
8252       WHEN OTHERS THEN
8253          l_acc_rev_flag := 'N';
8254    END;
8255    --
8256    IF (l_acc_rev_flag = 'Y') THEN
8257 
8258        -- 4645092  ------------------------------------------------------------------------------
8259        -- To allow MPA report to determine if it should generate report process
8260        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8261        ------------------------------------------------------------------------------------------
8262 
8263        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8264        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8265 
8266        --
8267        -- Update the line information that should be overwritten
8268        --
8269        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8270                                          p_header_num   => 1);
8271        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8272 
8273        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8274 
8275        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8276           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8277        END IF;
8278 
8279       --
8280       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8281       --
8282       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8283           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8284       ELSE
8285           ---------------------------------------------------------------------------------------------------
8286           -- 4262811a Switch Sign
8287           ---------------------------------------------------------------------------------------------------
8288           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8289           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8290                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8291           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8292                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8293           -- 5132302
8294           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8295                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8296 
8297       END IF;
8298 
8299       -- 4955764
8300       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8301       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8302 
8303 
8304       XLA_AE_LINES_PKG.ValidateCurrentLine;
8305       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8306 
8307       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8308                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8309                ,p_balance_type_code => l_balance_type_code);
8310 
8311    END IF;
8312 
8313    -----------------------------------------------------------------------------------------
8314    -- 4262811 Multiperiod Accounting
8315    -----------------------------------------------------------------------------------------
8316      -- No MPA option is assigned.
8317 
8318 
8319 END IF;
8320 END IF;
8321 --
8322 
8323 --
8324 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8325    trace
8326       (p_msg      => 'END of AcctLineType_36'
8327       ,p_level    => C_LEVEL_PROCEDURE
8328       ,p_module   => l_log_module);
8329 END IF;
8330 --
8331 EXCEPTION
8332   WHEN xla_exceptions_pkg.application_exception THEN
8333       RAISE;
8334   WHEN OTHERS THEN
8335        xla_exceptions_pkg.raise_message
8336            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_36');
8337 END AcctLineType_36;
8338 --
8339 
8340 ---------------------------------------
8341 --
8342 -- PRIVATE FUNCTION
8343 --         AcctLineType_37
8344 --
8345 ---------------------------------------
8346 PROCEDURE AcctLineType_37 (
8347   p_application_id        IN NUMBER
8348  ,p_event_id              IN NUMBER
8349  ,p_calculate_acctd_flag  IN VARCHAR2
8350  ,p_calculate_g_l_flag    IN VARCHAR2
8351  ,p_actual_flag           IN OUT VARCHAR2
8352  ,p_balance_type_code     OUT VARCHAR2
8353  ,p_gain_or_loss_ref      OUT VARCHAR2
8354  
8355 --Budget Code Combination ID
8356  , p_source_3            IN NUMBER
8357 --Cost CCID
8358  , p_source_4            IN NUMBER
8359 --Allow Account Override Flag
8360  , p_source_5            IN VARCHAR2
8361 --Adjustment Cost CCID
8362  , p_source_6            IN NUMBER
8363 --Cost Clearing CCID
8364  , p_source_7            IN NUMBER
8365 --Reversing Line Flag
8366  , p_source_23            IN VARCHAR2
8367 --Actual Upgrade Credit Accounting Class
8368  , p_source_24            IN VARCHAR2
8369 --Entered Currency Code
8370  , p_source_26            IN VARCHAR2
8371 --Exchange Rate Date
8375 --Exchange Rate Type
8372  , p_source_28            IN DATE
8373 --Exchange Rate
8374  , p_source_29            IN NUMBER
8376  , p_source_30            IN VARCHAR2
8377 --Actual Upgrade Debit Accounting Class
8378  , p_source_31            IN VARCHAR2
8379 --Use Actuals Upgrade Attributes Flag
8380  , p_source_32            IN VARCHAR2
8381 --Expenditure Item ID
8382  , p_source_33            IN NUMBER
8383 --Cost Distribution Line Number
8384  , p_source_34            IN NUMBER
8385 --Line Type
8386  , p_source_35            IN VARCHAR2
8387  , p_source_35_meaning    IN VARCHAR2
8388 --Reversed Line Number
8389  , p_source_36            IN NUMBER
8390 --Encumbrance Upgrade Credit Accounting Class
8391  , p_source_41            IN VARCHAR2
8392 --Use Encumbrance Upgrade Attributes Flag
8393  , p_source_44            IN VARCHAR2
8394 --Entered Burdened Cost
8395  , p_source_52            IN NUMBER
8396 --Accounted Burdened Cost
8397  , p_source_53            IN NUMBER
8398 --Encumbrance Amount
8399  , p_source_54            IN NUMBER
8400 --Project Encumbrance Applied to Application Identifier
8401  , p_source_55            IN NUMBER
8402 --Project Encumbrance Applied to Distribution Type
8403  , p_source_56            IN VARCHAR2
8404 --Project Encumbrance Applied to Entity Code
8405  , p_source_57            IN VARCHAR2
8406 --Project Encumbrance Applied to First Distribution ID
8407  , p_source_58            IN NUMBER
8408 --Project Encumbrance Applied to First System Transaction ID
8409  , p_source_59            IN NUMBER
8410 --Project Encumbrance Applied to Second Distribution ID
8411  , p_source_60            IN VARCHAR2
8412 --Encumbrance Upgrade Debit Accounting Class
8413  , p_source_61            IN VARCHAR2
8414 --Encumbrance Type ID
8415  , p_source_62            IN NUMBER
8416 --Project Encumbrance Type ID
8417  , p_source_63            IN NUMBER
8418 )
8419 IS
8420 
8421 l_component_type              VARCHAR2(80);
8422 l_component_code              VARCHAR2(30);
8423 l_component_type_code         VARCHAR2(1);
8424 l_component_appl_id           INTEGER;
8425 l_amb_context_code            VARCHAR2(30);
8426 l_entity_code                 VARCHAR2(30);
8427 l_event_class_code            VARCHAR2(30);
8428 l_ae_header_id                NUMBER;
8429 l_event_type_code             VARCHAR2(30);
8430 l_line_definition_code        VARCHAR2(30);
8431 l_line_definition_owner_code  VARCHAR2(1);
8432 --
8433 -- adr variables
8434 l_segment                     VARCHAR2(30);
8435 l_ccid                        NUMBER;
8436 l_adr_transaction_coa_id      NUMBER;
8437 l_adr_accounting_coa_id       NUMBER;
8438 l_adr_flexfield_segment_code  VARCHAR2(30);
8439 l_adr_flex_value_set_id       NUMBER;
8440 l_adr_value_type_code         VARCHAR2(30);
8441 l_adr_value_combination_id    NUMBER;
8442 l_adr_value_segment_code      VARCHAR2(30);
8443 
8444 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8445 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8446 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8447 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8448 
8449 -- 4262811 Variables ------------------------------------------------------------------------------------------
8450 l_entered_amt_idx             NUMBER;
8451 l_accted_amt_idx              NUMBER;
8452 l_acc_rev_flag                VARCHAR2(1);
8453 l_accrual_line_num            NUMBER;
8454 l_tmp_amt                     NUMBER;
8455 l_acc_rev_natural_side_code   VARCHAR2(1);
8456 
8457 l_num_entries                 NUMBER;
8458 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8459 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8460 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8461 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8462 l_recog_line_1                NUMBER;
8463 l_recog_line_2                NUMBER;
8464 
8465 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8466 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8467 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8468 
8469 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8470 
8471 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8472 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8473 
8474 ---------------------------------------------------------------------------------------------------------------
8475 
8476 
8477 --
8478 -- bulk performance
8479 --
8480 l_balance_type_code           VARCHAR2(1);
8481 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8482 l_log_module                  VARCHAR2(240);
8483 
8484 --
8485 -- Upgrade strategy
8486 --
8487 l_actual_upg_option           VARCHAR2(1);
8488 l_enc_upg_option           VARCHAR2(1);
8489 
8490 --
8491 BEGIN
8492 --
8493 IF g_log_enabled THEN
8494       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
8495 END IF;
8496 --
8497 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8498 
8499       trace
8500          (p_msg      => 'BEGIN of AcctLineType_37'
8501          ,p_level    => C_LEVEL_PROCEDURE
8502          ,p_module   => l_log_module);
8503 
8504 END IF;
8505 --
8506 l_component_type             := 'AMB_JLT';
8507 l_component_code             := 'PA_BURDEN_COST_ADJ';
8508 l_component_type_code        := 'S';
8509 l_component_appl_id          :=  275;
8510 l_amb_context_code           := 'DEFAULT';
8511 l_entity_code                := 'EXPENDITURES';
8512 l_event_class_code           := 'BURDEN_COST_ADJ';
8513 l_event_type_code            := 'BURDEN_COST_ADJ_ALL';
8517 l_balance_type_code          := 'A';
8514 l_line_definition_owner_code := 'S';
8515 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
8516 --
8518 l_segment                     := NULL;
8519 l_ccid                        := NULL;
8520 l_adr_transaction_coa_id      := NULL;
8521 l_adr_accounting_coa_id       := NULL;
8522 l_adr_flexfield_segment_code  := NULL;
8523 l_adr_flex_value_set_id       := NULL;
8524 l_adr_value_type_code         := NULL;
8525 l_adr_value_combination_id    := NULL;
8526 l_adr_value_segment_code      := NULL;
8527 
8528 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8529 l_bflow_class_code           := '';    -- 4219869 Business Flow
8530 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8531 l_budgetary_control_flag     := 'N';
8532 
8533 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8534 l_bflow_applied_to_amt       := NULL; -- 5132302
8535 l_entered_amt_idx            := NULL;          -- 4262811
8536 l_accted_amt_idx             := NULL;          -- 4262811
8537 l_acc_rev_flag               := NULL;          -- 4262811
8538 l_accrual_line_num           := NULL;          -- 4262811
8539 l_tmp_amt                    := NULL;          -- 4262811
8540 --
8541  
8542 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8543     l_balance_type_code <> 'B' THEN
8544 IF NVL(p_source_35,'
8545 ') =  'R'
8546  THEN 
8547 
8548    --
8549    XLA_AE_LINES_PKG.SetNewLine;
8550 
8551    p_balance_type_code          := l_balance_type_code;
8552    -- set the flag so later we will know whether the gain loss line needs to be created
8553    
8554    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8555      p_actual_flag :='A';
8556    END IF;
8557 
8558    --
8559    -- bulk performance
8560    --
8561    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8562                                       p_header_num   => 0); -- 4262811
8563    --
8564    -- set accounting line options
8565    --
8566    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8567            p_natural_side_code          => 'D'
8568          , p_gain_or_loss_flag          => 'N'
8569          , p_gl_transfer_mode_code      => 'S'
8570          , p_acct_entry_type_code       => 'A'
8571          , p_switch_side_flag           => 'Y'
8572          , p_merge_duplicate_code       => 'N'
8573          );
8574    --
8575    l_acc_rev_natural_side_code := 'C';  -- 4262811
8576    -- 
8577    --
8578    -- set accounting line type info
8579    --
8580    xla_ae_lines_pkg.SetAcctLineType
8581       (p_component_type             => l_component_type
8582       ,p_event_type_code            => l_event_type_code
8583       ,p_line_definition_owner_code => l_line_definition_owner_code
8584       ,p_line_definition_code       => l_line_definition_code
8585       ,p_accounting_line_code       => l_component_code
8586       ,p_accounting_line_type_code  => l_component_type_code
8587       ,p_accounting_line_appl_id    => l_component_appl_id
8588       ,p_amb_context_code           => l_amb_context_code
8589       ,p_entity_code                => l_entity_code
8590       ,p_event_class_code           => l_event_class_code);
8591    --
8592    -- set accounting class
8593    --
8594    xla_ae_lines_pkg.SetAcctClass(
8595            p_accounting_class_code  => 'COST'
8596          , p_ae_header_id           => l_ae_header_id
8597          );
8598 
8599    --
8600    -- set rounding class
8601    --
8602    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8603                       'COST';
8604 
8605    --
8606    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8607    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8608    --
8609    -- bulk performance
8610    --
8611    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8612 
8613    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8614       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8615 
8616    -- 4955764
8617    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8618       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8619 
8620    -- 4458381 Public Sector Enh
8621    
8622    --
8623    -- set accounting attributes for the line type
8624    --
8625    l_entered_amt_idx := 40;
8626    l_accted_amt_idx  := 45;
8627    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
8628    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
8629    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
8630    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
8631    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
8632    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
8633    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
8634    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
8635    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
8636    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
8637    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
8638    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
8639    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
8640    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
8641    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
8642    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
8643    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
8644    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
8648    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
8645    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
8646    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
8647    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
8649    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
8650    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
8651    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
8652    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
8653    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
8654    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
8655    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
8656    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
8657    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
8658    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
8659    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
8660    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
8661    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
8662    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
8663    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
8664    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
8665    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
8666    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
8667    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
8668    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
8669    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
8670    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
8671    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
8672    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
8673    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
8674    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
8675    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
8676    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
8677    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
8678    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
8679    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
8680    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
8681    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
8682    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
8683    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
8684    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
8685    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
8686    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
8687    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
8688    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
8689    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
8690    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
8691    l_rec_acct_attrs.array_char_value(32)  := p_source_26;
8692    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
8693    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
8694    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
8695    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
8696    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
8697    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
8698    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
8699    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
8700    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
8701    l_rec_acct_attrs.array_char_value(37)  := p_source_26;
8702    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
8703    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
8704    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
8705    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
8706    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
8707    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
8708    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
8709    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
8710    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
8711    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
8712    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
8713    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
8714    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
8715    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
8716    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
8717    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
8718    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
8719    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
8720    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
8721    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
8722    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
8723    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
8724    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
8725    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
8726    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
8727    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
8728 
8729    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8730    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8731 
8732    ---------------------------------------------------------------------------------------------------------------
8733    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8737    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8734    ---------------------------------------------------------------------------------------------------------------
8735    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8736 
8738    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8739 
8740    IF xla_accounting_cache_pkg.GetValueChar
8741          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8742          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8743    AND l_bflow_method_code = 'PRIOR_ENTRY'
8744 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8745    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8746          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8747        )
8748    THEN
8749          xla_ae_lines_pkg.BflowUpgEntry
8750            (p_business_method_code    => l_bflow_method_code
8751            ,p_business_class_code     => l_bflow_class_code
8752            ,p_balance_type            => l_balance_type_code);
8753    ELSE
8754       NULL;
8755 -- No business flow processing for business flow method of NONE.
8756    END IF;
8757 
8758    --
8759    -- call analytical criteria
8760    --
8761    
8762    --
8763    -- call description
8764    --
8765    -- No description or it is inherited.
8766    --
8767    -- call ADRs
8768    -- Bug 4922099
8769    --
8770    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8771         (NVL(l_actual_upg_option, 'N') = 'O') OR
8772         (NVL(l_enc_upg_option, 'N') = 'O')
8773       )
8774    THEN
8775    NULL;
8776    --
8777    --
8778    
8779   l_ccid := AcctDerRule_13(
8780            p_application_id           => p_application_id
8781          , p_ae_header_id             => l_ae_header_id 
8782 , p_source_5 => p_source_5
8783 , p_source_6 => p_source_6
8784          , x_transaction_coa_id       => l_adr_transaction_coa_id
8785          , x_accounting_coa_id        => l_adr_accounting_coa_id
8786          , x_value_type_code          => l_adr_value_type_code
8787          , p_side                     => 'NA'
8788    );
8789 
8790    xla_ae_lines_pkg.set_ccid(
8791     p_code_combination_id          => l_ccid
8792   , p_value_type_code              => l_adr_value_type_code
8793   , p_transaction_coa_id           => l_adr_transaction_coa_id
8794   , p_accounting_coa_id            => l_adr_accounting_coa_id
8795   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
8796   , p_adr_type_code                => 'S'
8797   , p_component_type               => l_component_type
8798   , p_component_code               => l_component_code
8799   , p_component_type_code          => l_component_type_code
8800   , p_component_appl_id            => l_component_appl_id
8801   , p_amb_context_code             => l_amb_context_code
8802   , p_side                         => 'NA'
8803   );
8804 
8805 
8806    --
8807    --
8808    END IF;
8809    --
8810    -- Bug 4922099
8811    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8812           (NVL(l_enc_upg_option, 'N') = 'O')
8813         ) AND
8814         (l_bflow_method_code = 'PRIOR_ENTRY')
8815       )
8816    THEN
8817       IF
8818       --
8819       1 = 2
8820       --
8821       THEN
8822       xla_accounting_err_pkg.build_message
8823                                     (p_appli_s_name            => 'XLA'
8824                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8825                                     ,p_token_1                 => 'LINE_NUMBER'
8826                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8827                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8828                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8829                                                                              l_component_type
8830                                                                             ,l_component_code
8831                                                                             ,l_component_type_code
8832                                                                             ,l_component_appl_id
8833                                                                             ,l_amb_context_code
8834                                                                             ,l_entity_code
8835                                                                             ,l_event_class_code
8836                                                                            )
8837                                     ,p_token_3                 => 'OWNER'
8838                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8839                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8840                                                                           ,p_lookup_code    => l_component_type_code
8841                                                                          )
8842                                     ,p_token_4                 => 'PRODUCT_NAME'
8843                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8844                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8845                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8846                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8847                                     ,p_ae_header_id            =>  NULL
8848                                        );
8849 
8850         IF (C_LEVEL_ERROR>= g_log_level) THEN
8854                       ,p_module   => l_log_module);
8851                  trace
8852                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8853                       ,p_level    => C_LEVEL_ERROR
8855         END IF;
8856       END IF;
8857    END IF;
8858    --
8859    --
8860    ------------------------------------------------------------------------------------------------
8861    -- 4219869 Business Flow
8862    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8863    -- Prior Entry.  Currently, the following code is always generated.
8864    ------------------------------------------------------------------------------------------------
8865    XLA_AE_LINES_PKG.ValidateCurrentLine;
8866 
8867    ------------------------------------------------------------------------------------
8868    -- 4219869 Business Flow
8869    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8870    ------------------------------------------------------------------------------------
8871    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8872 
8873    ----------------------------------------------------------------------------------
8874    -- 4219869 Business Flow
8875    -- Update journal entry status -- Need to generate this within IF <condition>
8876    ----------------------------------------------------------------------------------
8877    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8878          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8879          ,p_balance_type_code => l_balance_type_code
8880          );
8881 
8882    -------------------------------------------------------------------------------------------
8883    -- 4262811 - Generate the Accrual Reversal lines
8884    -------------------------------------------------------------------------------------------
8885    BEGIN
8886       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8887                               (g_array_event(p_event_id).array_value_num('header_index'));
8888       IF l_acc_rev_flag IS NULL THEN
8889          l_acc_rev_flag := 'N';
8890       END IF;
8891    EXCEPTION
8892       WHEN OTHERS THEN
8893          l_acc_rev_flag := 'N';
8894    END;
8895    --
8896    IF (l_acc_rev_flag = 'Y') THEN
8897 
8898        -- 4645092  ------------------------------------------------------------------------------
8899        -- To allow MPA report to determine if it should generate report process
8900        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8901        ------------------------------------------------------------------------------------------
8902 
8903        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8904        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8905 
8906        --
8907        -- Update the line information that should be overwritten
8908        --
8909        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8910                                          p_header_num   => 1);
8911        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8912 
8913        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8914 
8915        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8916           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8917        END IF;
8918 
8919       --
8920       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8921       --
8922       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8923           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8924       ELSE
8925           ---------------------------------------------------------------------------------------------------
8926           -- 4262811a Switch Sign
8927           ---------------------------------------------------------------------------------------------------
8928           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8929           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8930                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8931           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8932                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8933           -- 5132302
8934           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8935                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8936 
8937       END IF;
8938 
8939       -- 4955764
8940       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8941       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8942 
8943 
8944       XLA_AE_LINES_PKG.ValidateCurrentLine;
8945       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8946 
8947       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8948                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8949                ,p_balance_type_code => l_balance_type_code);
8950 
8951    END IF;
8952 
8953    -----------------------------------------------------------------------------------------
8954    -- 4262811 Multiperiod Accounting
8955    -----------------------------------------------------------------------------------------
8956      -- No MPA option is assigned.
8957 
8958 
8959 END IF;
8960 END IF;
8961 --
8962 
8963 --
8964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8965    trace
8966       (p_msg      => 'END of AcctLineType_37'
8970 --
8967       ,p_level    => C_LEVEL_PROCEDURE
8968       ,p_module   => l_log_module);
8969 END IF;
8971 EXCEPTION
8972   WHEN xla_exceptions_pkg.application_exception THEN
8973       RAISE;
8974   WHEN OTHERS THEN
8975        xla_exceptions_pkg.raise_message
8976            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_37');
8977 END AcctLineType_37;
8978 --
8979 
8980 ---------------------------------------
8981 --
8982 -- PRIVATE FUNCTION
8983 --         AcctLineType_38
8984 --
8985 ---------------------------------------
8986 PROCEDURE AcctLineType_38 (
8987   p_application_id        IN NUMBER
8988  ,p_event_id              IN NUMBER
8989  ,p_calculate_acctd_flag  IN VARCHAR2
8990  ,p_calculate_g_l_flag    IN VARCHAR2
8991  ,p_actual_flag           IN OUT VARCHAR2
8992  ,p_balance_type_code     OUT VARCHAR2
8993  ,p_gain_or_loss_ref      OUT VARCHAR2
8994  
8995 --Budget Code Combination ID
8996  , p_source_3            IN NUMBER
8997 --Cost CCID
8998  , p_source_4            IN NUMBER
8999 --Allow Account Override Flag
9000  , p_source_5            IN VARCHAR2
9001 --Cost Clearing CCID
9002  , p_source_7            IN NUMBER
9003 --Adjustment Cost Clearing CCID
9004  , p_source_8            IN NUMBER
9005 --Reversing Line Flag
9006  , p_source_23            IN VARCHAR2
9007 --Actual Upgrade Credit Accounting Class
9008  , p_source_24            IN VARCHAR2
9009 --Entered Currency Code
9010  , p_source_26            IN VARCHAR2
9011 --Exchange Rate Date
9012  , p_source_28            IN DATE
9013 --Exchange Rate
9014  , p_source_29            IN NUMBER
9015 --Exchange Rate Type
9016  , p_source_30            IN VARCHAR2
9017 --Actual Upgrade Debit Accounting Class
9018  , p_source_31            IN VARCHAR2
9019 --Use Actuals Upgrade Attributes Flag
9020  , p_source_32            IN VARCHAR2
9021 --Expenditure Item ID
9022  , p_source_33            IN NUMBER
9023 --Cost Distribution Line Number
9024  , p_source_34            IN NUMBER
9025 --Line Type
9026  , p_source_35            IN VARCHAR2
9027  , p_source_35_meaning    IN VARCHAR2
9028 --Reversed Line Number
9029  , p_source_36            IN NUMBER
9030 --Encumbrance Upgrade Credit Accounting Class
9031  , p_source_41            IN VARCHAR2
9032 --Use Encumbrance Upgrade Attributes Flag
9033  , p_source_44            IN VARCHAR2
9034 --Entered Burdened Cost
9035  , p_source_52            IN NUMBER
9036 --Accounted Burdened Cost
9037  , p_source_53            IN NUMBER
9038 --Encumbrance Amount
9039  , p_source_54            IN NUMBER
9040 --Project Encumbrance Applied to Application Identifier
9041  , p_source_55            IN NUMBER
9042 --Project Encumbrance Applied to Distribution Type
9043  , p_source_56            IN VARCHAR2
9044 --Project Encumbrance Applied to Entity Code
9045  , p_source_57            IN VARCHAR2
9046 --Project Encumbrance Applied to First Distribution ID
9047  , p_source_58            IN NUMBER
9048 --Project Encumbrance Applied to First System Transaction ID
9049  , p_source_59            IN NUMBER
9050 --Project Encumbrance Applied to Second Distribution ID
9051  , p_source_60            IN VARCHAR2
9052 --Encumbrance Upgrade Debit Accounting Class
9053  , p_source_61            IN VARCHAR2
9054 --Encumbrance Type ID
9055  , p_source_62            IN NUMBER
9056 --Project Encumbrance Type ID
9057  , p_source_63            IN NUMBER
9058 )
9059 IS
9060 
9061 l_component_type              VARCHAR2(80);
9062 l_component_code              VARCHAR2(30);
9063 l_component_type_code         VARCHAR2(1);
9064 l_component_appl_id           INTEGER;
9065 l_amb_context_code            VARCHAR2(30);
9066 l_entity_code                 VARCHAR2(30);
9067 l_event_class_code            VARCHAR2(30);
9068 l_ae_header_id                NUMBER;
9069 l_event_type_code             VARCHAR2(30);
9070 l_line_definition_code        VARCHAR2(30);
9071 l_line_definition_owner_code  VARCHAR2(1);
9072 --
9073 -- adr variables
9074 l_segment                     VARCHAR2(30);
9075 l_ccid                        NUMBER;
9076 l_adr_transaction_coa_id      NUMBER;
9077 l_adr_accounting_coa_id       NUMBER;
9078 l_adr_flexfield_segment_code  VARCHAR2(30);
9079 l_adr_flex_value_set_id       NUMBER;
9080 l_adr_value_type_code         VARCHAR2(30);
9081 l_adr_value_combination_id    NUMBER;
9082 l_adr_value_segment_code      VARCHAR2(30);
9083 
9084 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9085 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9086 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9087 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9088 
9089 -- 4262811 Variables ------------------------------------------------------------------------------------------
9090 l_entered_amt_idx             NUMBER;
9091 l_accted_amt_idx              NUMBER;
9092 l_acc_rev_flag                VARCHAR2(1);
9093 l_accrual_line_num            NUMBER;
9094 l_tmp_amt                     NUMBER;
9095 l_acc_rev_natural_side_code   VARCHAR2(1);
9096 
9097 l_num_entries                 NUMBER;
9098 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9099 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9100 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9101 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9102 l_recog_line_1                NUMBER;
9103 l_recog_line_2                NUMBER;
9104 
9105 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9106 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9107 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9108 
9112 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9109 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9110 
9111 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9113 
9114 ---------------------------------------------------------------------------------------------------------------
9115 
9116 
9117 --
9118 -- bulk performance
9119 --
9120 l_balance_type_code           VARCHAR2(1);
9121 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9122 l_log_module                  VARCHAR2(240);
9123 
9124 --
9125 -- Upgrade strategy
9126 --
9127 l_actual_upg_option           VARCHAR2(1);
9128 l_enc_upg_option           VARCHAR2(1);
9129 
9130 --
9131 BEGIN
9132 --
9133 IF g_log_enabled THEN
9134       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
9135 END IF;
9136 --
9137 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9138 
9139       trace
9140          (p_msg      => 'BEGIN of AcctLineType_38'
9141          ,p_level    => C_LEVEL_PROCEDURE
9142          ,p_module   => l_log_module);
9143 
9144 END IF;
9145 --
9146 l_component_type             := 'AMB_JLT';
9147 l_component_code             := 'PA_BURDEN_COST_ADJ_CLEARING';
9148 l_component_type_code        := 'S';
9149 l_component_appl_id          :=  275;
9150 l_amb_context_code           := 'DEFAULT';
9151 l_entity_code                := 'EXPENDITURES';
9152 l_event_class_code           := 'BURDEN_COST_ADJ';
9153 l_event_type_code            := 'BURDEN_COST_ADJ_ALL';
9154 l_line_definition_owner_code := 'S';
9155 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
9156 --
9157 l_balance_type_code          := 'A';
9158 l_segment                     := NULL;
9159 l_ccid                        := NULL;
9160 l_adr_transaction_coa_id      := NULL;
9161 l_adr_accounting_coa_id       := NULL;
9162 l_adr_flexfield_segment_code  := NULL;
9163 l_adr_flex_value_set_id       := NULL;
9164 l_adr_value_type_code         := NULL;
9165 l_adr_value_combination_id    := NULL;
9166 l_adr_value_segment_code      := NULL;
9167 
9168 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9169 l_bflow_class_code           := '';    -- 4219869 Business Flow
9170 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9171 l_budgetary_control_flag     := 'N';
9172 
9173 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9174 l_bflow_applied_to_amt       := NULL; -- 5132302
9175 l_entered_amt_idx            := NULL;          -- 4262811
9176 l_accted_amt_idx             := NULL;          -- 4262811
9177 l_acc_rev_flag               := NULL;          -- 4262811
9178 l_accrual_line_num           := NULL;          -- 4262811
9179 l_tmp_amt                    := NULL;          -- 4262811
9180 --
9181  
9182 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9183     l_balance_type_code <> 'B' THEN
9184 IF NVL(p_source_35,'
9185 ') =  'R'
9186  THEN 
9187 
9188    --
9189    XLA_AE_LINES_PKG.SetNewLine;
9190 
9191    p_balance_type_code          := l_balance_type_code;
9192    -- set the flag so later we will know whether the gain loss line needs to be created
9193    
9194    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9195      p_actual_flag :='A';
9196    END IF;
9197 
9198    --
9199    -- bulk performance
9200    --
9201    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9202                                       p_header_num   => 0); -- 4262811
9203    --
9204    -- set accounting line options
9205    --
9206    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9207            p_natural_side_code          => 'C'
9208          , p_gain_or_loss_flag          => 'N'
9209          , p_gl_transfer_mode_code      => 'S'
9210          , p_acct_entry_type_code       => 'A'
9211          , p_switch_side_flag           => 'Y'
9212          , p_merge_duplicate_code       => 'N'
9213          );
9214    --
9215    l_acc_rev_natural_side_code := 'D';  -- 4262811
9216    -- 
9217    --
9218    -- set accounting line type info
9219    --
9220    xla_ae_lines_pkg.SetAcctLineType
9221       (p_component_type             => l_component_type
9222       ,p_event_type_code            => l_event_type_code
9223       ,p_line_definition_owner_code => l_line_definition_owner_code
9224       ,p_line_definition_code       => l_line_definition_code
9225       ,p_accounting_line_code       => l_component_code
9226       ,p_accounting_line_type_code  => l_component_type_code
9227       ,p_accounting_line_appl_id    => l_component_appl_id
9228       ,p_amb_context_code           => l_amb_context_code
9229       ,p_entity_code                => l_entity_code
9230       ,p_event_class_code           => l_event_class_code);
9231    --
9232    -- set accounting class
9233    --
9234    xla_ae_lines_pkg.SetAcctClass(
9235            p_accounting_class_code  => 'COST_CLEARING'
9236          , p_ae_header_id           => l_ae_header_id
9237          );
9238 
9239    --
9240    -- set rounding class
9241    --
9242    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9243                       'COST_CLEARING';
9244 
9245    --
9246    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9247    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9248    --
9249    -- bulk performance
9250    --
9251    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9252 
9253    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9257    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9254       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9255 
9256    -- 4955764
9258       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9259 
9260    -- 4458381 Public Sector Enh
9261    
9262    --
9263    -- set accounting attributes for the line type
9264    --
9265    l_entered_amt_idx := 40;
9266    l_accted_amt_idx  := 45;
9267    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
9268    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9269    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
9270    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
9271    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
9272    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
9273    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
9274    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
9275    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
9276    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
9277    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
9278    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
9279    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
9280    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
9281    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
9282    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
9283    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
9284    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
9285    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
9286    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
9287    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
9288    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
9289    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
9290    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
9291    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
9292    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
9293    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
9294    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
9295    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
9296    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
9297    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
9298    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
9299    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
9300    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
9301    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
9302    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
9303    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
9304    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
9305    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
9306    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
9307    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
9308    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9309    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
9310    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
9311    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
9312    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
9313    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
9314    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9315    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
9316    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
9317    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
9318    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
9319    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
9320    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
9321    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
9322    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
9323    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
9324    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
9325    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
9326    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
9327    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
9328    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
9329    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
9330    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
9331    l_rec_acct_attrs.array_char_value(32)  := p_source_26;
9332    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
9333    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
9334    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
9335    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
9336    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
9337    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
9338    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
9339    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
9340    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
9341    l_rec_acct_attrs.array_char_value(37)  := p_source_26;
9342    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
9343    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
9344    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
9345    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
9346    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
9347    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
9348    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
9352    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
9349    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
9350    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
9351    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
9353    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
9354    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
9355    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
9356    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
9357    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
9358    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
9359    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
9360    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
9361    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
9362    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
9363    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
9364    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
9365    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
9366    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
9367    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
9368 
9369    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9370    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9371 
9372    ---------------------------------------------------------------------------------------------------------------
9373    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9374    ---------------------------------------------------------------------------------------------------------------
9375    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9376 
9377    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9378    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9379 
9380    IF xla_accounting_cache_pkg.GetValueChar
9381          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9382          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9383    AND l_bflow_method_code = 'PRIOR_ENTRY'
9384 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9385    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9386          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9387        )
9388    THEN
9389          xla_ae_lines_pkg.BflowUpgEntry
9390            (p_business_method_code    => l_bflow_method_code
9391            ,p_business_class_code     => l_bflow_class_code
9392            ,p_balance_type            => l_balance_type_code);
9393    ELSE
9394       NULL;
9395 -- No business flow processing for business flow method of NONE.
9396    END IF;
9397 
9398    --
9399    -- call analytical criteria
9400    --
9401    
9402    --
9403    -- call description
9404    --
9405    -- No description or it is inherited.
9406    --
9407    -- call ADRs
9408    -- Bug 4922099
9409    --
9410    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9411         (NVL(l_actual_upg_option, 'N') = 'O') OR
9412         (NVL(l_enc_upg_option, 'N') = 'O')
9413       )
9414    THEN
9415    NULL;
9416    --
9417    --
9418    
9419   l_ccid := AcctDerRule_15(
9420            p_application_id           => p_application_id
9421          , p_ae_header_id             => l_ae_header_id 
9422 , p_source_5 => p_source_5
9423 , p_source_8 => p_source_8
9424          , x_transaction_coa_id       => l_adr_transaction_coa_id
9425          , x_accounting_coa_id        => l_adr_accounting_coa_id
9426          , x_value_type_code          => l_adr_value_type_code
9427          , p_side                     => 'NA'
9428    );
9429 
9430    xla_ae_lines_pkg.set_ccid(
9431     p_code_combination_id          => l_ccid
9432   , p_value_type_code              => l_adr_value_type_code
9433   , p_transaction_coa_id           => l_adr_transaction_coa_id
9434   , p_accounting_coa_id            => l_adr_accounting_coa_id
9435   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
9436   , p_adr_type_code                => 'S'
9437   , p_component_type               => l_component_type
9438   , p_component_code               => l_component_code
9439   , p_component_type_code          => l_component_type_code
9440   , p_component_appl_id            => l_component_appl_id
9441   , p_amb_context_code             => l_amb_context_code
9442   , p_side                         => 'NA'
9443   );
9444 
9445 
9446    --
9447    --
9448    END IF;
9449    --
9450    -- Bug 4922099
9451    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9452           (NVL(l_enc_upg_option, 'N') = 'O')
9453         ) AND
9454         (l_bflow_method_code = 'PRIOR_ENTRY')
9455       )
9456    THEN
9457       IF
9458       --
9459       1 = 2
9460       --
9461       THEN
9462       xla_accounting_err_pkg.build_message
9463                                     (p_appli_s_name            => 'XLA'
9464                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9465                                     ,p_token_1                 => 'LINE_NUMBER'
9466                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9467                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9468                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9469                                                                              l_component_type
9470                                                                             ,l_component_code
9474                                                                             ,l_entity_code
9471                                                                             ,l_component_type_code
9472                                                                             ,l_component_appl_id
9473                                                                             ,l_amb_context_code
9475                                                                             ,l_event_class_code
9476                                                                            )
9477                                     ,p_token_3                 => 'OWNER'
9478                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9479                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9480                                                                           ,p_lookup_code    => l_component_type_code
9481                                                                          )
9482                                     ,p_token_4                 => 'PRODUCT_NAME'
9483                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9484                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9485                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9486                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9487                                     ,p_ae_header_id            =>  NULL
9488                                        );
9489 
9490         IF (C_LEVEL_ERROR>= g_log_level) THEN
9491                  trace
9492                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9493                       ,p_level    => C_LEVEL_ERROR
9494                       ,p_module   => l_log_module);
9495         END IF;
9496       END IF;
9497    END IF;
9498    --
9499    --
9500    ------------------------------------------------------------------------------------------------
9501    -- 4219869 Business Flow
9502    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9503    -- Prior Entry.  Currently, the following code is always generated.
9504    ------------------------------------------------------------------------------------------------
9505    XLA_AE_LINES_PKG.ValidateCurrentLine;
9506 
9507    ------------------------------------------------------------------------------------
9508    -- 4219869 Business Flow
9509    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9510    ------------------------------------------------------------------------------------
9511    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9512 
9513    ----------------------------------------------------------------------------------
9514    -- 4219869 Business Flow
9515    -- Update journal entry status -- Need to generate this within IF <condition>
9516    ----------------------------------------------------------------------------------
9517    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9518          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9519          ,p_balance_type_code => l_balance_type_code
9520          );
9521 
9522    -------------------------------------------------------------------------------------------
9523    -- 4262811 - Generate the Accrual Reversal lines
9524    -------------------------------------------------------------------------------------------
9525    BEGIN
9526       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9527                               (g_array_event(p_event_id).array_value_num('header_index'));
9528       IF l_acc_rev_flag IS NULL THEN
9529          l_acc_rev_flag := 'N';
9530       END IF;
9531    EXCEPTION
9532       WHEN OTHERS THEN
9533          l_acc_rev_flag := 'N';
9534    END;
9535    --
9536    IF (l_acc_rev_flag = 'Y') THEN
9537 
9538        -- 4645092  ------------------------------------------------------------------------------
9539        -- To allow MPA report to determine if it should generate report process
9540        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9541        ------------------------------------------------------------------------------------------
9542 
9543        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9544        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9545 
9546        --
9547        -- Update the line information that should be overwritten
9548        --
9549        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9550                                          p_header_num   => 1);
9551        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9552 
9553        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9554 
9555        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9556           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9557        END IF;
9558 
9559       --
9560       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9561       --
9562       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9563           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9564       ELSE
9565           ---------------------------------------------------------------------------------------------------
9566           -- 4262811a Switch Sign
9567           ---------------------------------------------------------------------------------------------------
9568           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9569           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9573           -- 5132302
9570                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9571           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9572                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9574           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9575                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9576 
9577       END IF;
9578 
9579       -- 4955764
9580       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9581       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9582 
9583 
9584       XLA_AE_LINES_PKG.ValidateCurrentLine;
9585       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9586 
9587       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9588                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9589                ,p_balance_type_code => l_balance_type_code);
9590 
9591    END IF;
9592 
9593    -----------------------------------------------------------------------------------------
9594    -- 4262811 Multiperiod Accounting
9595    -----------------------------------------------------------------------------------------
9596      -- No MPA option is assigned.
9597 
9598 
9599 END IF;
9600 END IF;
9601 --
9602 
9603 --
9604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9605    trace
9606       (p_msg      => 'END of AcctLineType_38'
9607       ,p_level    => C_LEVEL_PROCEDURE
9608       ,p_module   => l_log_module);
9609 END IF;
9610 --
9611 EXCEPTION
9612   WHEN xla_exceptions_pkg.application_exception THEN
9613       RAISE;
9614   WHEN OTHERS THEN
9615        xla_exceptions_pkg.raise_message
9616            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_38');
9617 END AcctLineType_38;
9618 --
9619 
9620 ---------------------------------------
9621 --
9622 -- PRIVATE FUNCTION
9623 --         AcctLineType_39
9624 --
9625 ---------------------------------------
9626 PROCEDURE AcctLineType_39 (
9627   p_application_id        IN NUMBER
9628  ,p_event_id              IN NUMBER
9629  ,p_calculate_acctd_flag  IN VARCHAR2
9630  ,p_calculate_g_l_flag    IN VARCHAR2
9631  ,p_actual_flag           IN OUT VARCHAR2
9632  ,p_balance_type_code     OUT VARCHAR2
9633  ,p_gain_or_loss_ref      OUT VARCHAR2
9634  
9635 --Budget Code Combination ID
9636  , p_source_3            IN NUMBER
9637 --Cost CCID
9638  , p_source_4            IN NUMBER
9639 --Allow Account Override Flag
9640  , p_source_5            IN VARCHAR2
9641 --Cost Clearing CCID
9642  , p_source_7            IN NUMBER
9643 --Adjustment Cost Clearing CCID
9644  , p_source_8            IN NUMBER
9645 --Reversing Line Flag
9646  , p_source_23            IN VARCHAR2
9647 --Actual Upgrade Credit Accounting Class
9648  , p_source_24            IN VARCHAR2
9649 --Entered Currency Code
9650  , p_source_26            IN VARCHAR2
9651 --Exchange Rate Date
9652  , p_source_28            IN DATE
9653 --Exchange Rate
9654  , p_source_29            IN NUMBER
9655 --Exchange Rate Type
9656  , p_source_30            IN VARCHAR2
9657 --Actual Upgrade Debit Accounting Class
9658  , p_source_31            IN VARCHAR2
9659 --Use Actuals Upgrade Attributes Flag
9660  , p_source_32            IN VARCHAR2
9661 --Expenditure Item ID
9662  , p_source_33            IN NUMBER
9663 --Cost Distribution Line Number
9664  , p_source_34            IN NUMBER
9665 --Line Type
9666  , p_source_35            IN VARCHAR2
9667  , p_source_35_meaning    IN VARCHAR2
9668 --Reversed Line Number
9669  , p_source_36            IN NUMBER
9670 --Encumbrance Upgrade Credit Accounting Class
9671  , p_source_41            IN VARCHAR2
9672 --Use Encumbrance Upgrade Attributes Flag
9673  , p_source_44            IN VARCHAR2
9674 --Entered Burdened Cost
9675  , p_source_52            IN NUMBER
9676 --Accounted Burdened Cost
9677  , p_source_53            IN NUMBER
9678 --Encumbrance Amount
9679  , p_source_54            IN NUMBER
9680 --Project Encumbrance Applied to Application Identifier
9681  , p_source_55            IN NUMBER
9682 --Project Encumbrance Applied to Distribution Type
9683  , p_source_56            IN VARCHAR2
9684 --Project Encumbrance Applied to Entity Code
9685  , p_source_57            IN VARCHAR2
9686 --Project Encumbrance Applied to First Distribution ID
9687  , p_source_58            IN NUMBER
9688 --Project Encumbrance Applied to First System Transaction ID
9689  , p_source_59            IN NUMBER
9690 --Project Encumbrance Applied to Second Distribution ID
9691  , p_source_60            IN VARCHAR2
9692 --Encumbrance Upgrade Debit Accounting Class
9693  , p_source_61            IN VARCHAR2
9694 --Encumbrance Type ID
9695  , p_source_62            IN NUMBER
9696 --Project Encumbrance Type ID
9697  , p_source_63            IN NUMBER
9698 )
9699 IS
9700 
9701 l_component_type              VARCHAR2(80);
9702 l_component_code              VARCHAR2(30);
9703 l_component_type_code         VARCHAR2(1);
9704 l_component_appl_id           INTEGER;
9705 l_amb_context_code            VARCHAR2(30);
9706 l_entity_code                 VARCHAR2(30);
9707 l_event_class_code            VARCHAR2(30);
9708 l_ae_header_id                NUMBER;
9709 l_event_type_code             VARCHAR2(30);
9710 l_line_definition_code        VARCHAR2(30);
9711 l_line_definition_owner_code  VARCHAR2(1);
9712 --
9713 -- adr variables
9714 l_segment                     VARCHAR2(30);
9715 l_ccid                        NUMBER;
9716 l_adr_transaction_coa_id      NUMBER;
9720 l_adr_value_type_code         VARCHAR2(30);
9717 l_adr_accounting_coa_id       NUMBER;
9718 l_adr_flexfield_segment_code  VARCHAR2(30);
9719 l_adr_flex_value_set_id       NUMBER;
9721 l_adr_value_combination_id    NUMBER;
9722 l_adr_value_segment_code      VARCHAR2(30);
9723 
9724 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9725 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9726 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9727 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9728 
9729 -- 4262811 Variables ------------------------------------------------------------------------------------------
9730 l_entered_amt_idx             NUMBER;
9731 l_accted_amt_idx              NUMBER;
9732 l_acc_rev_flag                VARCHAR2(1);
9733 l_accrual_line_num            NUMBER;
9734 l_tmp_amt                     NUMBER;
9735 l_acc_rev_natural_side_code   VARCHAR2(1);
9736 
9737 l_num_entries                 NUMBER;
9738 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9739 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9740 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9741 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9742 l_recog_line_1                NUMBER;
9743 l_recog_line_2                NUMBER;
9744 
9745 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9746 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9747 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9748 
9749 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9750 
9751 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9752 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9753 
9754 ---------------------------------------------------------------------------------------------------------------
9755 
9756 
9757 --
9758 -- bulk performance
9759 --
9760 l_balance_type_code           VARCHAR2(1);
9761 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9762 l_log_module                  VARCHAR2(240);
9763 
9764 --
9765 -- Upgrade strategy
9766 --
9767 l_actual_upg_option           VARCHAR2(1);
9768 l_enc_upg_option           VARCHAR2(1);
9769 
9770 --
9771 BEGIN
9772 --
9773 IF g_log_enabled THEN
9774       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
9775 END IF;
9776 --
9777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9778 
9779       trace
9780          (p_msg      => 'BEGIN of AcctLineType_39'
9781          ,p_level    => C_LEVEL_PROCEDURE
9782          ,p_module   => l_log_module);
9783 
9784 END IF;
9785 --
9786 l_component_type             := 'AMB_JLT';
9787 l_component_code             := 'PA_BURDEN_COST_ADJ_CLEAR_FED';
9788 l_component_type_code        := 'S';
9789 l_component_appl_id          :=  275;
9790 l_amb_context_code           := 'DEFAULT';
9791 l_entity_code                := 'EXPENDITURES';
9792 l_event_class_code           := 'BURDEN_COST_ADJ';
9793 l_event_type_code            := 'BURDEN_COST_ADJ_ALL';
9794 l_line_definition_owner_code := 'S';
9795 l_line_definition_code       := 'FV_BUDGET_JLD';
9796 --
9797 l_balance_type_code          := 'A';
9798 l_segment                     := NULL;
9799 l_ccid                        := NULL;
9800 l_adr_transaction_coa_id      := NULL;
9801 l_adr_accounting_coa_id       := NULL;
9802 l_adr_flexfield_segment_code  := NULL;
9803 l_adr_flex_value_set_id       := NULL;
9804 l_adr_value_type_code         := NULL;
9805 l_adr_value_combination_id    := NULL;
9806 l_adr_value_segment_code      := NULL;
9807 
9808 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9809 l_bflow_class_code           := '';    -- 4219869 Business Flow
9810 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9811 l_budgetary_control_flag     := 'N';
9812 
9813 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9814 l_bflow_applied_to_amt       := NULL; -- 5132302
9815 l_entered_amt_idx            := NULL;          -- 4262811
9816 l_accted_amt_idx             := NULL;          -- 4262811
9817 l_acc_rev_flag               := NULL;          -- 4262811
9818 l_accrual_line_num           := NULL;          -- 4262811
9819 l_tmp_amt                    := NULL;          -- 4262811
9820 --
9821  
9822 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9823     l_balance_type_code <> 'B' THEN
9824 IF NVL(p_source_35,'
9825 ') =  'R'
9826  THEN 
9827 
9828    --
9829    XLA_AE_LINES_PKG.SetNewLine;
9830 
9831    p_balance_type_code          := l_balance_type_code;
9832    -- set the flag so later we will know whether the gain loss line needs to be created
9833    
9834    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9835      p_actual_flag :='A';
9836    END IF;
9837 
9838    --
9839    -- bulk performance
9840    --
9841    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9842                                       p_header_num   => 0); -- 4262811
9843    --
9844    -- set accounting line options
9845    --
9846    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9847            p_natural_side_code          => 'C'
9848          , p_gain_or_loss_flag          => 'N'
9849          , p_gl_transfer_mode_code      => 'S'
9850          , p_acct_entry_type_code       => 'A'
9851          , p_switch_side_flag           => 'Y'
9852          , p_merge_duplicate_code       => 'N'
9853          );
9854    --
9855    l_acc_rev_natural_side_code := 'D';  -- 4262811
9856    -- 
9857    --
9858    -- set accounting line type info
9859    --
9863       ,p_line_definition_owner_code => l_line_definition_owner_code
9860    xla_ae_lines_pkg.SetAcctLineType
9861       (p_component_type             => l_component_type
9862       ,p_event_type_code            => l_event_type_code
9864       ,p_line_definition_code       => l_line_definition_code
9865       ,p_accounting_line_code       => l_component_code
9866       ,p_accounting_line_type_code  => l_component_type_code
9867       ,p_accounting_line_appl_id    => l_component_appl_id
9868       ,p_amb_context_code           => l_amb_context_code
9869       ,p_entity_code                => l_entity_code
9870       ,p_event_class_code           => l_event_class_code);
9871    --
9872    -- set accounting class
9873    --
9874    xla_ae_lines_pkg.SetAcctClass(
9875            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
9876          , p_ae_header_id           => l_ae_header_id
9877          );
9878 
9879    --
9880    -- set rounding class
9881    --
9882    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9883                       'FEDERAL_PROJECT_COST_CLEARING';
9884 
9885    --
9886    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9887    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9888    --
9889    -- bulk performance
9890    --
9891    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9892 
9893    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9894       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9895 
9896    -- 4955764
9897    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9898       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9899 
9900    -- 4458381 Public Sector Enh
9901    
9902    --
9903    -- set accounting attributes for the line type
9904    --
9905    l_entered_amt_idx := 40;
9906    l_accted_amt_idx  := 45;
9907    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
9908    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
9909    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
9910    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
9911    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
9912    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
9913    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
9914    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
9915    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
9916    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
9917    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
9918    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
9919    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
9920    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
9921    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
9922    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
9923    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
9924    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
9925    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
9926    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
9927    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
9928    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
9929    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
9930    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
9931    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
9932    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
9933    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
9934    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
9935    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
9936    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
9937    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
9938    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
9939    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
9940    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
9941    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
9942    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
9943    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
9944    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
9945    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
9946    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
9947    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
9948    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
9949    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
9950    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
9951    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
9952    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
9953    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
9954    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
9955    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
9956    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
9957    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
9958    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
9959    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
9960    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
9961    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
9962    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
9963    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
9967    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
9964    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
9965    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
9966    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
9968    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
9969    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
9970    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
9971    l_rec_acct_attrs.array_char_value(32)  := p_source_26;
9972    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
9973    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
9974    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
9975    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
9976    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
9977    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
9978    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
9979    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
9980    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
9981    l_rec_acct_attrs.array_char_value(37)  := p_source_26;
9982    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
9983    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
9984    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
9985    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
9986    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
9987    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
9988    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
9989    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
9990    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
9991    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
9992    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
9993    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
9994    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
9995    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
9996    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
9997    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
9998    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
9999    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
10000    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
10001    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
10002    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
10003    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
10004    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
10005    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
10006    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
10007    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
10008 
10009    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10010    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10011 
10012    ---------------------------------------------------------------------------------------------------------------
10013    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10014    ---------------------------------------------------------------------------------------------------------------
10015    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10016 
10017    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10018    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10019 
10020    IF xla_accounting_cache_pkg.GetValueChar
10021          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10022          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10023    AND l_bflow_method_code = 'PRIOR_ENTRY'
10024 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10025    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10026          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10027        )
10028    THEN
10029          xla_ae_lines_pkg.BflowUpgEntry
10030            (p_business_method_code    => l_bflow_method_code
10031            ,p_business_class_code     => l_bflow_class_code
10032            ,p_balance_type            => l_balance_type_code);
10033    ELSE
10034       NULL;
10035 -- No business flow processing for business flow method of NONE.
10036    END IF;
10037 
10038    --
10039    -- call analytical criteria
10040    --
10041    
10042    --
10043    -- call description
10044    --
10045    -- No description or it is inherited.
10046    --
10047    -- call ADRs
10048    -- Bug 4922099
10049    --
10050    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10051         (NVL(l_actual_upg_option, 'N') = 'O') OR
10052         (NVL(l_enc_upg_option, 'N') = 'O')
10053       )
10054    THEN
10055    NULL;
10056    --
10057    --
10058    
10059   l_ccid := AcctDerRule_15(
10060            p_application_id           => p_application_id
10061          , p_ae_header_id             => l_ae_header_id 
10062 , p_source_5 => p_source_5
10063 , p_source_8 => p_source_8
10064          , x_transaction_coa_id       => l_adr_transaction_coa_id
10065          , x_accounting_coa_id        => l_adr_accounting_coa_id
10066          , x_value_type_code          => l_adr_value_type_code
10067          , p_side                     => 'NA'
10068    );
10069 
10070    xla_ae_lines_pkg.set_ccid(
10071     p_code_combination_id          => l_ccid
10072   , p_value_type_code              => l_adr_value_type_code
10073   , p_transaction_coa_id           => l_adr_transaction_coa_id
10074   , p_accounting_coa_id            => l_adr_accounting_coa_id
10078   , p_component_code               => l_component_code
10075   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
10076   , p_adr_type_code                => 'S'
10077   , p_component_type               => l_component_type
10079   , p_component_type_code          => l_component_type_code
10080   , p_component_appl_id            => l_component_appl_id
10081   , p_amb_context_code             => l_amb_context_code
10082   , p_side                         => 'NA'
10083   );
10084 
10085 
10086    l_segment := AcctDerRule_5(
10087            p_application_id           => p_application_id
10088          , p_ae_header_id             => l_ae_header_id 
10089          , x_transaction_coa_id       => l_adr_transaction_coa_id
10090          , x_accounting_coa_id        => l_adr_accounting_coa_id
10091          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
10092          , x_flex_value_set_id        => l_adr_flex_value_set_id
10093          , x_value_type_code          => l_adr_value_type_code
10094          , x_value_combination_id     => l_adr_value_combination_id
10095          , x_value_segment_code       => l_adr_value_segment_code
10096          , p_side                     => 'NA'
10097          , p_override_seg_flag        => 'Y'
10098    );
10099 
10100    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
10101 
10102       xla_ae_lines_pkg.set_segment(
10103           p_to_segment_code         => 'GL_ACCOUNT'
10104         , p_segment_value           => l_segment
10105         , p_from_segment_code       => l_adr_value_segment_code
10106         , p_from_combination_id     => l_adr_value_combination_id
10107         , p_value_type_code         => l_adr_value_type_code
10108         , p_transaction_coa_id      => l_adr_transaction_coa_id
10109         , p_accounting_coa_id       => l_adr_accounting_coa_id
10110         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
10111         , p_flex_value_set_id       => l_adr_flex_value_set_id
10112         , p_adr_code                => 'FV_490201_PROJECTS'
10113         , p_adr_type_code           => 'S'
10114         , p_component_type          => l_component_type
10115         , p_component_code          => l_component_code
10116         , p_component_type_code     => l_component_type_code
10117         , p_component_appl_id       => l_component_appl_id
10118         , p_amb_context_code        => l_amb_context_code
10119         , p_entity_code             => 'EXPENDITURES'
10120         , p_event_class_code        => 'BURDEN_COST_ADJ'
10121         , p_side                    => 'NA'
10122         );
10123 
10124   END IF;
10125 
10126    --
10127    --
10128    END IF;
10129    --
10130    -- Bug 4922099
10131    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10132           (NVL(l_enc_upg_option, 'N') = 'O')
10133         ) AND
10134         (l_bflow_method_code = 'PRIOR_ENTRY')
10135       )
10136    THEN
10137       IF
10138       --
10139       1 = 2
10140       --
10141       THEN
10142       xla_accounting_err_pkg.build_message
10143                                     (p_appli_s_name            => 'XLA'
10144                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10145                                     ,p_token_1                 => 'LINE_NUMBER'
10146                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10147                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10148                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10149                                                                              l_component_type
10150                                                                             ,l_component_code
10151                                                                             ,l_component_type_code
10152                                                                             ,l_component_appl_id
10153                                                                             ,l_amb_context_code
10154                                                                             ,l_entity_code
10155                                                                             ,l_event_class_code
10156                                                                            )
10157                                     ,p_token_3                 => 'OWNER'
10158                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10159                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10160                                                                           ,p_lookup_code    => l_component_type_code
10161                                                                          )
10162                                     ,p_token_4                 => 'PRODUCT_NAME'
10163                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10164                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10165                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10166                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10167                                     ,p_ae_header_id            =>  NULL
10168                                        );
10169 
10170         IF (C_LEVEL_ERROR>= g_log_level) THEN
10171                  trace
10172                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10173                       ,p_level    => C_LEVEL_ERROR
10174                       ,p_module   => l_log_module);
10175         END IF;
10176       END IF;
10177    END IF;
10178    --
10179    --
10180    ------------------------------------------------------------------------------------------------
10181    -- 4219869 Business Flow
10185    XLA_AE_LINES_PKG.ValidateCurrentLine;
10182    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10183    -- Prior Entry.  Currently, the following code is always generated.
10184    ------------------------------------------------------------------------------------------------
10186 
10187    ------------------------------------------------------------------------------------
10188    -- 4219869 Business Flow
10189    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10190    ------------------------------------------------------------------------------------
10191    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10192 
10193    ----------------------------------------------------------------------------------
10194    -- 4219869 Business Flow
10195    -- Update journal entry status -- Need to generate this within IF <condition>
10196    ----------------------------------------------------------------------------------
10197    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10198          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10199          ,p_balance_type_code => l_balance_type_code
10200          );
10201 
10202    -------------------------------------------------------------------------------------------
10203    -- 4262811 - Generate the Accrual Reversal lines
10204    -------------------------------------------------------------------------------------------
10205    BEGIN
10206       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10207                               (g_array_event(p_event_id).array_value_num('header_index'));
10208       IF l_acc_rev_flag IS NULL THEN
10209          l_acc_rev_flag := 'N';
10210       END IF;
10211    EXCEPTION
10212       WHEN OTHERS THEN
10213          l_acc_rev_flag := 'N';
10214    END;
10215    --
10216    IF (l_acc_rev_flag = 'Y') THEN
10217 
10218        -- 4645092  ------------------------------------------------------------------------------
10219        -- To allow MPA report to determine if it should generate report process
10220        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10221        ------------------------------------------------------------------------------------------
10222 
10223        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10224        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10225 
10226        --
10227        -- Update the line information that should be overwritten
10228        --
10229        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10230                                          p_header_num   => 1);
10231        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10232 
10233        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10234 
10235        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10236           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10237        END IF;
10238 
10239       --
10240       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10241       --
10242       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10243           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10244       ELSE
10245           ---------------------------------------------------------------------------------------------------
10246           -- 4262811a Switch Sign
10247           ---------------------------------------------------------------------------------------------------
10248           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10249           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10250                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10251           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10252                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10253           -- 5132302
10254           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10255                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10256 
10257       END IF;
10258 
10259       -- 4955764
10260       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10261       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10262 
10263 
10264       XLA_AE_LINES_PKG.ValidateCurrentLine;
10265       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10266 
10267       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10268                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10269                ,p_balance_type_code => l_balance_type_code);
10270 
10271    END IF;
10272 
10273    -----------------------------------------------------------------------------------------
10274    -- 4262811 Multiperiod Accounting
10275    -----------------------------------------------------------------------------------------
10276      -- No MPA option is assigned.
10277 
10278 
10279 END IF;
10280 END IF;
10281 --
10282 
10283 --
10284 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10285    trace
10286       (p_msg      => 'END of AcctLineType_39'
10287       ,p_level    => C_LEVEL_PROCEDURE
10288       ,p_module   => l_log_module);
10289 END IF;
10290 --
10291 EXCEPTION
10292   WHEN xla_exceptions_pkg.application_exception THEN
10293       RAISE;
10294   WHEN OTHERS THEN
10295        xla_exceptions_pkg.raise_message
10296            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_39');
10300 ---------------------------------------
10297 END AcctLineType_39;
10298 --
10299 
10301 --
10302 -- PRIVATE FUNCTION
10303 --         AcctLineType_40
10304 --
10305 ---------------------------------------
10306 PROCEDURE AcctLineType_40 (
10307   p_application_id        IN NUMBER
10308  ,p_event_id              IN NUMBER
10309  ,p_calculate_acctd_flag  IN VARCHAR2
10310  ,p_calculate_g_l_flag    IN VARCHAR2
10311  ,p_actual_flag           IN OUT VARCHAR2
10312  ,p_balance_type_code     OUT VARCHAR2
10313  ,p_gain_or_loss_ref      OUT VARCHAR2
10314  
10315 --Budget Code Combination ID
10316  , p_source_3            IN NUMBER
10317 --Cost CCID
10318  , p_source_4            IN NUMBER
10319 --Allow Account Override Flag
10320  , p_source_5            IN VARCHAR2
10321 --Adjustment Cost CCID
10322  , p_source_6            IN NUMBER
10323 --Cost Clearing CCID
10324  , p_source_7            IN NUMBER
10325 --Reversing Line Flag
10326  , p_source_23            IN VARCHAR2
10327 --Actual Upgrade Credit Accounting Class
10328  , p_source_24            IN VARCHAR2
10329 --Entered Currency Code
10330  , p_source_26            IN VARCHAR2
10331 --Exchange Rate Date
10332  , p_source_28            IN DATE
10333 --Exchange Rate
10334  , p_source_29            IN NUMBER
10335 --Exchange Rate Type
10336  , p_source_30            IN VARCHAR2
10337 --Actual Upgrade Debit Accounting Class
10338  , p_source_31            IN VARCHAR2
10339 --Use Actuals Upgrade Attributes Flag
10340  , p_source_32            IN VARCHAR2
10341 --Expenditure Item ID
10342  , p_source_33            IN NUMBER
10343 --Cost Distribution Line Number
10344  , p_source_34            IN NUMBER
10345 --Line Type
10346  , p_source_35            IN VARCHAR2
10347  , p_source_35_meaning    IN VARCHAR2
10348 --Reversed Line Number
10349  , p_source_36            IN NUMBER
10350 --Encumbrance Upgrade Credit Accounting Class
10351  , p_source_41            IN VARCHAR2
10352 --Use Encumbrance Upgrade Attributes Flag
10353  , p_source_44            IN VARCHAR2
10354 --Entered Burdened Cost
10355  , p_source_52            IN NUMBER
10356 --Accounted Burdened Cost
10357  , p_source_53            IN NUMBER
10358 --Encumbrance Amount
10359  , p_source_54            IN NUMBER
10360 --Project Encumbrance Applied to Application Identifier
10361  , p_source_55            IN NUMBER
10362 --Project Encumbrance Applied to Distribution Type
10363  , p_source_56            IN VARCHAR2
10364 --Project Encumbrance Applied to Entity Code
10365  , p_source_57            IN VARCHAR2
10366 --Project Encumbrance Applied to First Distribution ID
10367  , p_source_58            IN NUMBER
10368 --Project Encumbrance Applied to First System Transaction ID
10369  , p_source_59            IN NUMBER
10370 --Project Encumbrance Applied to Second Distribution ID
10371  , p_source_60            IN VARCHAR2
10372 --Encumbrance Upgrade Debit Accounting Class
10373  , p_source_61            IN VARCHAR2
10374 --Encumbrance Type ID
10375  , p_source_62            IN NUMBER
10376 --Project Encumbrance Type ID
10377  , p_source_63            IN NUMBER
10378 )
10379 IS
10380 
10381 l_component_type              VARCHAR2(80);
10382 l_component_code              VARCHAR2(30);
10383 l_component_type_code         VARCHAR2(1);
10384 l_component_appl_id           INTEGER;
10385 l_amb_context_code            VARCHAR2(30);
10386 l_entity_code                 VARCHAR2(30);
10387 l_event_class_code            VARCHAR2(30);
10388 l_ae_header_id                NUMBER;
10389 l_event_type_code             VARCHAR2(30);
10390 l_line_definition_code        VARCHAR2(30);
10391 l_line_definition_owner_code  VARCHAR2(1);
10392 --
10393 -- adr variables
10394 l_segment                     VARCHAR2(30);
10395 l_ccid                        NUMBER;
10396 l_adr_transaction_coa_id      NUMBER;
10397 l_adr_accounting_coa_id       NUMBER;
10398 l_adr_flexfield_segment_code  VARCHAR2(30);
10399 l_adr_flex_value_set_id       NUMBER;
10400 l_adr_value_type_code         VARCHAR2(30);
10401 l_adr_value_combination_id    NUMBER;
10402 l_adr_value_segment_code      VARCHAR2(30);
10403 
10404 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10405 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10406 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10407 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10408 
10409 -- 4262811 Variables ------------------------------------------------------------------------------------------
10410 l_entered_amt_idx             NUMBER;
10411 l_accted_amt_idx              NUMBER;
10412 l_acc_rev_flag                VARCHAR2(1);
10413 l_accrual_line_num            NUMBER;
10414 l_tmp_amt                     NUMBER;
10415 l_acc_rev_natural_side_code   VARCHAR2(1);
10416 
10417 l_num_entries                 NUMBER;
10418 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10419 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10420 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10421 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10422 l_recog_line_1                NUMBER;
10423 l_recog_line_2                NUMBER;
10424 
10425 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10426 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10427 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10428 
10429 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10430 
10431 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10432 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10433 
10437 --
10434 ---------------------------------------------------------------------------------------------------------------
10435 
10436 
10438 -- bulk performance
10439 --
10440 l_balance_type_code           VARCHAR2(1);
10441 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10442 l_log_module                  VARCHAR2(240);
10443 
10444 --
10445 -- Upgrade strategy
10446 --
10447 l_actual_upg_option           VARCHAR2(1);
10448 l_enc_upg_option           VARCHAR2(1);
10449 
10450 --
10451 BEGIN
10452 --
10453 IF g_log_enabled THEN
10454       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
10455 END IF;
10456 --
10457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10458 
10459       trace
10460          (p_msg      => 'BEGIN of AcctLineType_40'
10461          ,p_level    => C_LEVEL_PROCEDURE
10462          ,p_module   => l_log_module);
10463 
10464 END IF;
10465 --
10466 l_component_type             := 'AMB_JLT';
10467 l_component_code             := 'PA_BURDEN_COST_ADJ_FED';
10468 l_component_type_code        := 'S';
10469 l_component_appl_id          :=  275;
10470 l_amb_context_code           := 'DEFAULT';
10471 l_entity_code                := 'EXPENDITURES';
10472 l_event_class_code           := 'BURDEN_COST_ADJ';
10473 l_event_type_code            := 'BURDEN_COST_ADJ_ALL';
10474 l_line_definition_owner_code := 'S';
10475 l_line_definition_code       := 'FV_BUDGET_JLD';
10476 --
10477 l_balance_type_code          := 'A';
10478 l_segment                     := NULL;
10479 l_ccid                        := NULL;
10480 l_adr_transaction_coa_id      := NULL;
10481 l_adr_accounting_coa_id       := NULL;
10482 l_adr_flexfield_segment_code  := NULL;
10483 l_adr_flex_value_set_id       := NULL;
10484 l_adr_value_type_code         := NULL;
10485 l_adr_value_combination_id    := NULL;
10486 l_adr_value_segment_code      := NULL;
10487 
10488 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10489 l_bflow_class_code           := '';    -- 4219869 Business Flow
10490 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10491 l_budgetary_control_flag     := 'N';
10492 
10493 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10494 l_bflow_applied_to_amt       := NULL; -- 5132302
10495 l_entered_amt_idx            := NULL;          -- 4262811
10496 l_accted_amt_idx             := NULL;          -- 4262811
10497 l_acc_rev_flag               := NULL;          -- 4262811
10498 l_accrual_line_num           := NULL;          -- 4262811
10499 l_tmp_amt                    := NULL;          -- 4262811
10500 --
10501  
10502 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10503     l_balance_type_code <> 'B' THEN
10504 IF NVL(p_source_35,'
10505 ') =  'R'
10506  THEN 
10507 
10508    --
10509    XLA_AE_LINES_PKG.SetNewLine;
10510 
10511    p_balance_type_code          := l_balance_type_code;
10512    -- set the flag so later we will know whether the gain loss line needs to be created
10513    
10514    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10515      p_actual_flag :='A';
10516    END IF;
10517 
10518    --
10519    -- bulk performance
10520    --
10521    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10522                                       p_header_num   => 0); -- 4262811
10523    --
10524    -- set accounting line options
10525    --
10526    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10527            p_natural_side_code          => 'D'
10528          , p_gain_or_loss_flag          => 'N'
10529          , p_gl_transfer_mode_code      => 'S'
10530          , p_acct_entry_type_code       => 'A'
10531          , p_switch_side_flag           => 'Y'
10532          , p_merge_duplicate_code       => 'N'
10533          );
10534    --
10535    l_acc_rev_natural_side_code := 'C';  -- 4262811
10536    -- 
10537    --
10538    -- set accounting line type info
10539    --
10540    xla_ae_lines_pkg.SetAcctLineType
10541       (p_component_type             => l_component_type
10542       ,p_event_type_code            => l_event_type_code
10543       ,p_line_definition_owner_code => l_line_definition_owner_code
10544       ,p_line_definition_code       => l_line_definition_code
10545       ,p_accounting_line_code       => l_component_code
10546       ,p_accounting_line_type_code  => l_component_type_code
10547       ,p_accounting_line_appl_id    => l_component_appl_id
10548       ,p_amb_context_code           => l_amb_context_code
10549       ,p_entity_code                => l_entity_code
10550       ,p_event_class_code           => l_event_class_code);
10551    --
10552    -- set accounting class
10553    --
10554    xla_ae_lines_pkg.SetAcctClass(
10555            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
10556          , p_ae_header_id           => l_ae_header_id
10557          );
10558 
10559    --
10560    -- set rounding class
10561    --
10562    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10563                       'FEDERAL_PROJECT_COST';
10564 
10565    --
10566    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10567    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10568    --
10569    -- bulk performance
10570    --
10571    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10572 
10573    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10574       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10575 
10576    -- 4955764
10577    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10581    
10578       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10579 
10580    -- 4458381 Public Sector Enh
10582    --
10583    -- set accounting attributes for the line type
10584    --
10585    l_entered_amt_idx := 40;
10586    l_accted_amt_idx  := 45;
10587    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
10588    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
10589    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
10590    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
10591    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
10592    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
10593    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
10594    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
10595    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
10596    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
10597    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
10598    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
10599    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
10600    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
10601    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
10602    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
10603    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
10604    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
10605    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
10606    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
10607    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
10608    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
10609    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
10610    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
10611    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
10612    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
10613    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
10614    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
10615    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
10616    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
10617    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
10618    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
10619    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
10620    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
10621    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
10622    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
10623    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
10624    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
10625    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
10626    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
10627    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
10628    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
10629    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
10630    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
10631    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
10632    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
10633    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
10634    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
10635    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
10636    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
10637    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
10638    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
10639    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
10640    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
10641    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
10642    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
10643    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
10644    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
10645    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
10646    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
10647    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
10648    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
10649    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
10650    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
10651    l_rec_acct_attrs.array_char_value(32)  := p_source_26;
10652    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
10653    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
10654    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
10655    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
10656    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
10657    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
10658    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
10659    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
10660    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
10661    l_rec_acct_attrs.array_char_value(37)  := p_source_26;
10662    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
10663    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
10664    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
10665    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
10666    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
10667    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
10668    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
10669    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
10673    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
10670    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
10671    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
10672    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
10674    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
10675    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
10676    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
10677    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
10678    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
10679    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
10680    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
10681    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
10682    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
10683    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
10684    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
10685    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
10686    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
10687    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
10688 
10689    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10690    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10691 
10692    ---------------------------------------------------------------------------------------------------------------
10693    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10694    ---------------------------------------------------------------------------------------------------------------
10695    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10696 
10697    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10698    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10699 
10700    IF xla_accounting_cache_pkg.GetValueChar
10701          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10702          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10703    AND l_bflow_method_code = 'PRIOR_ENTRY'
10704 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10705    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10706          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10707        )
10708    THEN
10709          xla_ae_lines_pkg.BflowUpgEntry
10710            (p_business_method_code    => l_bflow_method_code
10711            ,p_business_class_code     => l_bflow_class_code
10712            ,p_balance_type            => l_balance_type_code);
10713    ELSE
10714       NULL;
10715 -- No business flow processing for business flow method of NONE.
10716    END IF;
10717 
10718    --
10719    -- call analytical criteria
10720    --
10721    
10722    --
10723    -- call description
10724    --
10725    -- No description or it is inherited.
10726    --
10727    -- call ADRs
10728    -- Bug 4922099
10729    --
10730    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10731         (NVL(l_actual_upg_option, 'N') = 'O') OR
10732         (NVL(l_enc_upg_option, 'N') = 'O')
10733       )
10734    THEN
10735    NULL;
10736    --
10737    --
10738    
10739   l_ccid := AcctDerRule_13(
10740            p_application_id           => p_application_id
10741          , p_ae_header_id             => l_ae_header_id 
10742 , p_source_5 => p_source_5
10743 , p_source_6 => p_source_6
10744          , x_transaction_coa_id       => l_adr_transaction_coa_id
10745          , x_accounting_coa_id        => l_adr_accounting_coa_id
10746          , x_value_type_code          => l_adr_value_type_code
10747          , p_side                     => 'NA'
10748    );
10749 
10750    xla_ae_lines_pkg.set_ccid(
10751     p_code_combination_id          => l_ccid
10752   , p_value_type_code              => l_adr_value_type_code
10753   , p_transaction_coa_id           => l_adr_transaction_coa_id
10754   , p_accounting_coa_id            => l_adr_accounting_coa_id
10755   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
10756   , p_adr_type_code                => 'S'
10757   , p_component_type               => l_component_type
10758   , p_component_code               => l_component_code
10759   , p_component_type_code          => l_component_type_code
10760   , p_component_appl_id            => l_component_appl_id
10761   , p_amb_context_code             => l_amb_context_code
10762   , p_side                         => 'NA'
10763   );
10764 
10765 
10766    l_segment := AcctDerRule_4(
10767            p_application_id           => p_application_id
10768          , p_ae_header_id             => l_ae_header_id 
10769          , x_transaction_coa_id       => l_adr_transaction_coa_id
10770          , x_accounting_coa_id        => l_adr_accounting_coa_id
10771          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
10772          , x_flex_value_set_id        => l_adr_flex_value_set_id
10773          , x_value_type_code          => l_adr_value_type_code
10774          , x_value_combination_id     => l_adr_value_combination_id
10775          , x_value_segment_code       => l_adr_value_segment_code
10776          , p_side                     => 'NA'
10777          , p_override_seg_flag        => 'Y'
10778    );
10779 
10780    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
10781 
10782       xla_ae_lines_pkg.set_segment(
10783           p_to_segment_code         => 'GL_ACCOUNT'
10784         , p_segment_value           => l_segment
10785         , p_from_segment_code       => l_adr_value_segment_code
10786         , p_from_combination_id     => l_adr_value_combination_id
10787         , p_value_type_code         => l_adr_value_type_code
10791         , p_flex_value_set_id       => l_adr_flex_value_set_id
10788         , p_transaction_coa_id      => l_adr_transaction_coa_id
10789         , p_accounting_coa_id       => l_adr_accounting_coa_id
10790         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
10792         , p_adr_code                => 'FV_461001_PROJECTS'
10793         , p_adr_type_code           => 'S'
10794         , p_component_type          => l_component_type
10795         , p_component_code          => l_component_code
10796         , p_component_type_code     => l_component_type_code
10797         , p_component_appl_id       => l_component_appl_id
10798         , p_amb_context_code        => l_amb_context_code
10799         , p_entity_code             => 'EXPENDITURES'
10800         , p_event_class_code        => 'BURDEN_COST_ADJ'
10801         , p_side                    => 'NA'
10802         );
10803 
10804   END IF;
10805 
10806    --
10807    --
10808    END IF;
10809    --
10810    -- Bug 4922099
10811    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10812           (NVL(l_enc_upg_option, 'N') = 'O')
10813         ) AND
10814         (l_bflow_method_code = 'PRIOR_ENTRY')
10815       )
10816    THEN
10817       IF
10818       --
10819       1 = 2
10820       --
10821       THEN
10822       xla_accounting_err_pkg.build_message
10823                                     (p_appli_s_name            => 'XLA'
10824                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10825                                     ,p_token_1                 => 'LINE_NUMBER'
10826                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10827                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10828                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10829                                                                              l_component_type
10830                                                                             ,l_component_code
10831                                                                             ,l_component_type_code
10832                                                                             ,l_component_appl_id
10833                                                                             ,l_amb_context_code
10834                                                                             ,l_entity_code
10835                                                                             ,l_event_class_code
10836                                                                            )
10837                                     ,p_token_3                 => 'OWNER'
10838                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10839                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10840                                                                           ,p_lookup_code    => l_component_type_code
10841                                                                          )
10842                                     ,p_token_4                 => 'PRODUCT_NAME'
10843                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10844                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10845                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10846                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10847                                     ,p_ae_header_id            =>  NULL
10848                                        );
10849 
10850         IF (C_LEVEL_ERROR>= g_log_level) THEN
10851                  trace
10852                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10853                       ,p_level    => C_LEVEL_ERROR
10854                       ,p_module   => l_log_module);
10855         END IF;
10856       END IF;
10857    END IF;
10858    --
10859    --
10860    ------------------------------------------------------------------------------------------------
10861    -- 4219869 Business Flow
10862    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10863    -- Prior Entry.  Currently, the following code is always generated.
10864    ------------------------------------------------------------------------------------------------
10865    XLA_AE_LINES_PKG.ValidateCurrentLine;
10866 
10867    ------------------------------------------------------------------------------------
10868    -- 4219869 Business Flow
10869    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10870    ------------------------------------------------------------------------------------
10871    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10872 
10873    ----------------------------------------------------------------------------------
10874    -- 4219869 Business Flow
10875    -- Update journal entry status -- Need to generate this within IF <condition>
10876    ----------------------------------------------------------------------------------
10877    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10878          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10879          ,p_balance_type_code => l_balance_type_code
10880          );
10881 
10882    -------------------------------------------------------------------------------------------
10883    -- 4262811 - Generate the Accrual Reversal lines
10884    -------------------------------------------------------------------------------------------
10885    BEGIN
10886       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10887                               (g_array_event(p_event_id).array_value_num('header_index'));
10888       IF l_acc_rev_flag IS NULL THEN
10889          l_acc_rev_flag := 'N';
10890       END IF;
10894    END;
10891    EXCEPTION
10892       WHEN OTHERS THEN
10893          l_acc_rev_flag := 'N';
10895    --
10896    IF (l_acc_rev_flag = 'Y') THEN
10897 
10898        -- 4645092  ------------------------------------------------------------------------------
10899        -- To allow MPA report to determine if it should generate report process
10900        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10901        ------------------------------------------------------------------------------------------
10902 
10903        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10904        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10905 
10906        --
10907        -- Update the line information that should be overwritten
10908        --
10909        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10910                                          p_header_num   => 1);
10911        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10912 
10913        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10914 
10915        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10916           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10917        END IF;
10918 
10919       --
10920       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10921       --
10922       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10923           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10924       ELSE
10925           ---------------------------------------------------------------------------------------------------
10926           -- 4262811a Switch Sign
10927           ---------------------------------------------------------------------------------------------------
10928           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10929           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10930                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10931           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10932                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10933           -- 5132302
10934           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10935                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10936 
10937       END IF;
10938 
10939       -- 4955764
10940       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10941       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10942 
10943 
10944       XLA_AE_LINES_PKG.ValidateCurrentLine;
10945       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10946 
10947       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10948                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10949                ,p_balance_type_code => l_balance_type_code);
10950 
10951    END IF;
10952 
10953    -----------------------------------------------------------------------------------------
10954    -- 4262811 Multiperiod Accounting
10955    -----------------------------------------------------------------------------------------
10956      -- No MPA option is assigned.
10957 
10958 
10959 END IF;
10960 END IF;
10961 --
10962 
10963 --
10964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10965    trace
10966       (p_msg      => 'END of AcctLineType_40'
10967       ,p_level    => C_LEVEL_PROCEDURE
10968       ,p_module   => l_log_module);
10969 END IF;
10970 --
10971 EXCEPTION
10972   WHEN xla_exceptions_pkg.application_exception THEN
10973       RAISE;
10974   WHEN OTHERS THEN
10975        xla_exceptions_pkg.raise_message
10976            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_40');
10977 END AcctLineType_40;
10978 --
10979 
10980 ---------------------------------------
10981 --
10982 -- PRIVATE FUNCTION
10983 --         AcctLineType_41
10984 --
10985 ---------------------------------------
10986 PROCEDURE AcctLineType_41 (
10987   p_application_id        IN NUMBER
10988  ,p_event_id              IN NUMBER
10989  ,p_calculate_acctd_flag  IN VARCHAR2
10990  ,p_calculate_g_l_flag    IN VARCHAR2
10991  ,p_actual_flag           IN OUT VARCHAR2
10992  ,p_balance_type_code     OUT VARCHAR2
10993  ,p_gain_or_loss_ref      OUT VARCHAR2
10994  
10995 --Budget Code Combination ID
10996  , p_source_3            IN NUMBER
10997 --Cost CCID
10998  , p_source_4            IN NUMBER
10999 --Allow Account Override Flag
11000  , p_source_5            IN VARCHAR2
11001 --Cost Clearing CCID
11002  , p_source_7            IN NUMBER
11003 --Adjustment Cost Clearing CCID
11004  , p_source_8            IN NUMBER
11005 --Reversing Line Flag
11006  , p_source_23            IN VARCHAR2
11007 --Actual Upgrade Credit Accounting Class
11008  , p_source_24            IN VARCHAR2
11009 --Entered Currency Code
11010  , p_source_26            IN VARCHAR2
11011 --Exchange Rate Date
11012  , p_source_28            IN DATE
11013 --Exchange Rate
11014  , p_source_29            IN NUMBER
11015 --Exchange Rate Type
11016  , p_source_30            IN VARCHAR2
11017 --Actual Upgrade Debit Accounting Class
11018  , p_source_31            IN VARCHAR2
11019 --Use Actuals Upgrade Attributes Flag
11020  , p_source_32            IN VARCHAR2
11021 --Expenditure Item ID
11022  , p_source_33            IN NUMBER
11023 --Cost Distribution Line Number
11027  , p_source_35_meaning    IN VARCHAR2
11024  , p_source_34            IN NUMBER
11025 --Line Type
11026  , p_source_35            IN VARCHAR2
11028 --Reversed Line Number
11029  , p_source_36            IN NUMBER
11030 --Encumbrance Upgrade Credit Accounting Class
11031  , p_source_41            IN VARCHAR2
11032 --Use Encumbrance Upgrade Attributes Flag
11033  , p_source_44            IN VARCHAR2
11034 --Entered Burdened Cost
11035  , p_source_52            IN NUMBER
11036 --Accounted Burdened Cost
11037  , p_source_53            IN NUMBER
11038 --Encumbrance Amount
11039  , p_source_54            IN NUMBER
11040 --Project Encumbrance Applied to Application Identifier
11041  , p_source_55            IN NUMBER
11042 --Project Encumbrance Applied to Distribution Type
11043  , p_source_56            IN VARCHAR2
11044 --Project Encumbrance Applied to Entity Code
11045  , p_source_57            IN VARCHAR2
11046 --Project Encumbrance Applied to First Distribution ID
11047  , p_source_58            IN NUMBER
11048 --Project Encumbrance Applied to First System Transaction ID
11049  , p_source_59            IN NUMBER
11050 --Project Encumbrance Applied to Second Distribution ID
11051  , p_source_60            IN VARCHAR2
11052 --Encumbrance Upgrade Debit Accounting Class
11053  , p_source_61            IN VARCHAR2
11054 --Encumbrance Type ID
11055  , p_source_62            IN NUMBER
11056 --Project Encumbrance Type ID
11057  , p_source_63            IN NUMBER
11058 )
11059 IS
11060 
11061 l_component_type              VARCHAR2(80);
11062 l_component_code              VARCHAR2(30);
11063 l_component_type_code         VARCHAR2(1);
11064 l_component_appl_id           INTEGER;
11065 l_amb_context_code            VARCHAR2(30);
11066 l_entity_code                 VARCHAR2(30);
11067 l_event_class_code            VARCHAR2(30);
11068 l_ae_header_id                NUMBER;
11069 l_event_type_code             VARCHAR2(30);
11070 l_line_definition_code        VARCHAR2(30);
11071 l_line_definition_owner_code  VARCHAR2(1);
11072 --
11073 -- adr variables
11074 l_segment                     VARCHAR2(30);
11075 l_ccid                        NUMBER;
11076 l_adr_transaction_coa_id      NUMBER;
11077 l_adr_accounting_coa_id       NUMBER;
11078 l_adr_flexfield_segment_code  VARCHAR2(30);
11079 l_adr_flex_value_set_id       NUMBER;
11080 l_adr_value_type_code         VARCHAR2(30);
11081 l_adr_value_combination_id    NUMBER;
11082 l_adr_value_segment_code      VARCHAR2(30);
11083 
11084 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11085 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11086 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11087 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11088 
11089 -- 4262811 Variables ------------------------------------------------------------------------------------------
11090 l_entered_amt_idx             NUMBER;
11091 l_accted_amt_idx              NUMBER;
11092 l_acc_rev_flag                VARCHAR2(1);
11093 l_accrual_line_num            NUMBER;
11094 l_tmp_amt                     NUMBER;
11095 l_acc_rev_natural_side_code   VARCHAR2(1);
11096 
11097 l_num_entries                 NUMBER;
11098 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11099 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11100 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11101 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11102 l_recog_line_1                NUMBER;
11103 l_recog_line_2                NUMBER;
11104 
11105 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11106 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11107 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11108 
11109 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11110 
11111 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11112 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11113 
11114 ---------------------------------------------------------------------------------------------------------------
11115 
11116 
11117 --
11118 -- bulk performance
11119 --
11120 l_balance_type_code           VARCHAR2(1);
11121 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11122 l_log_module                  VARCHAR2(240);
11123 
11124 --
11125 -- Upgrade strategy
11126 --
11127 l_actual_upg_option           VARCHAR2(1);
11128 l_enc_upg_option           VARCHAR2(1);
11129 
11130 --
11131 BEGIN
11132 --
11133 IF g_log_enabled THEN
11134       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
11135 END IF;
11136 --
11137 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11138 
11139       trace
11140          (p_msg      => 'BEGIN of AcctLineType_41'
11141          ,p_level    => C_LEVEL_PROCEDURE
11142          ,p_module   => l_log_module);
11143 
11144 END IF;
11145 --
11146 l_component_type             := 'AMB_JLT';
11147 l_component_code             := 'PA_BURDEN_COST_CLEARING';
11148 l_component_type_code        := 'S';
11149 l_component_appl_id          :=  275;
11150 l_amb_context_code           := 'DEFAULT';
11151 l_entity_code                := 'EXPENDITURES';
11152 l_event_class_code           := 'BURDEN_COST';
11153 l_event_type_code            := 'BURDEN_COST_ALL';
11154 l_line_definition_owner_code := 'S';
11155 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
11156 --
11157 l_balance_type_code          := 'A';
11158 l_segment                     := NULL;
11159 l_ccid                        := NULL;
11160 l_adr_transaction_coa_id      := NULL;
11161 l_adr_accounting_coa_id       := NULL;
11165 l_adr_value_combination_id    := NULL;
11162 l_adr_flexfield_segment_code  := NULL;
11163 l_adr_flex_value_set_id       := NULL;
11164 l_adr_value_type_code         := NULL;
11166 l_adr_value_segment_code      := NULL;
11167 
11168 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11169 l_bflow_class_code           := '';    -- 4219869 Business Flow
11170 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11171 l_budgetary_control_flag     := 'N';
11172 
11173 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11174 l_bflow_applied_to_amt       := NULL; -- 5132302
11175 l_entered_amt_idx            := NULL;          -- 4262811
11176 l_accted_amt_idx             := NULL;          -- 4262811
11177 l_acc_rev_flag               := NULL;          -- 4262811
11178 l_accrual_line_num           := NULL;          -- 4262811
11179 l_tmp_amt                    := NULL;          -- 4262811
11180 --
11181  
11182 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11183     l_balance_type_code <> 'B' THEN
11184 IF NVL(p_source_35,'
11185 ') =  'R'
11186  THEN 
11187 
11188    --
11189    XLA_AE_LINES_PKG.SetNewLine;
11190 
11191    p_balance_type_code          := l_balance_type_code;
11192    -- set the flag so later we will know whether the gain loss line needs to be created
11193    
11194    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11195      p_actual_flag :='A';
11196    END IF;
11197 
11198    --
11199    -- bulk performance
11200    --
11201    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11202                                       p_header_num   => 0); -- 4262811
11203    --
11204    -- set accounting line options
11205    --
11206    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11207            p_natural_side_code          => 'C'
11208          , p_gain_or_loss_flag          => 'N'
11209          , p_gl_transfer_mode_code      => 'S'
11210          , p_acct_entry_type_code       => 'A'
11211          , p_switch_side_flag           => 'Y'
11212          , p_merge_duplicate_code       => 'N'
11213          );
11214    --
11215    l_acc_rev_natural_side_code := 'D';  -- 4262811
11216    -- 
11217    --
11218    -- set accounting line type info
11219    --
11220    xla_ae_lines_pkg.SetAcctLineType
11221       (p_component_type             => l_component_type
11222       ,p_event_type_code            => l_event_type_code
11223       ,p_line_definition_owner_code => l_line_definition_owner_code
11224       ,p_line_definition_code       => l_line_definition_code
11225       ,p_accounting_line_code       => l_component_code
11226       ,p_accounting_line_type_code  => l_component_type_code
11227       ,p_accounting_line_appl_id    => l_component_appl_id
11228       ,p_amb_context_code           => l_amb_context_code
11229       ,p_entity_code                => l_entity_code
11230       ,p_event_class_code           => l_event_class_code);
11231    --
11232    -- set accounting class
11233    --
11234    xla_ae_lines_pkg.SetAcctClass(
11235            p_accounting_class_code  => 'COST_CLEARING'
11236          , p_ae_header_id           => l_ae_header_id
11237          );
11238 
11239    --
11240    -- set rounding class
11241    --
11242    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11243                       'COST_CLEARING';
11244 
11245    --
11246    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11247    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11248    --
11249    -- bulk performance
11250    --
11251    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11252 
11253    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11254       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11255 
11256    -- 4955764
11257    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11258       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11259 
11260    -- 4458381 Public Sector Enh
11261    
11262    --
11263    -- set accounting attributes for the line type
11264    --
11265    l_entered_amt_idx := 40;
11266    l_accted_amt_idx  := 45;
11267    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
11268    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
11269    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
11270    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
11271    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
11272    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
11273    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
11274    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
11275    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
11276    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
11277    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
11278    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
11279    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
11280    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
11281    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
11282    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
11283    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
11284    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
11285    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
11286    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
11287    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
11291    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
11288    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
11289    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
11290    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
11292    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
11293    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
11294    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
11295    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
11296    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
11297    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
11298    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
11299    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
11300    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
11301    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
11302    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
11303    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
11304    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
11305    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
11306    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
11307    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
11308    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11309    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
11310    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
11311    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
11312    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
11313    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
11314    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11315    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
11316    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
11317    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
11318    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
11319    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
11320    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
11321    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
11322    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
11323    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
11324    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
11325    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
11326    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
11327    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
11328    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
11329    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
11330    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
11331    l_rec_acct_attrs.array_char_value(32)  := p_source_26;
11332    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
11333    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
11334    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
11335    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
11336    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
11337    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
11338    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
11339    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
11340    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
11341    l_rec_acct_attrs.array_char_value(37)  := p_source_26;
11342    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
11343    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
11344    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
11345    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
11346    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
11347    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
11348    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
11349    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
11350    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
11351    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
11352    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
11353    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
11354    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
11355    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
11356    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
11357    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
11358    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
11359    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
11360    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
11361    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
11362    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
11363    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
11364    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
11365    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
11366    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
11367    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
11368 
11369    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11370    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11371 
11372    ---------------------------------------------------------------------------------------------------------------
11373    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11374    ---------------------------------------------------------------------------------------------------------------
11378    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11375    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11376 
11377    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11379 
11380    IF xla_accounting_cache_pkg.GetValueChar
11381          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11382          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11383    AND l_bflow_method_code = 'PRIOR_ENTRY'
11384 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11385    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11386          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11387        )
11388    THEN
11389          xla_ae_lines_pkg.BflowUpgEntry
11390            (p_business_method_code    => l_bflow_method_code
11391            ,p_business_class_code     => l_bflow_class_code
11392            ,p_balance_type            => l_balance_type_code);
11393    ELSE
11394       NULL;
11395 -- No business flow processing for business flow method of NONE.
11396    END IF;
11397 
11398    --
11399    -- call analytical criteria
11400    --
11401    
11402    --
11403    -- call description
11404    --
11405    -- No description or it is inherited.
11406    --
11407    -- call ADRs
11408    -- Bug 4922099
11409    --
11410    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11411         (NVL(l_actual_upg_option, 'N') = 'O') OR
11412         (NVL(l_enc_upg_option, 'N') = 'O')
11413       )
11414    THEN
11415    NULL;
11416    --
11417    --
11418    
11419   l_ccid := AcctDerRule_14(
11420            p_application_id           => p_application_id
11421          , p_ae_header_id             => l_ae_header_id 
11422 , p_source_5 => p_source_5
11423 , p_source_7 => p_source_7
11424 , p_source_8 => p_source_8
11425          , x_transaction_coa_id       => l_adr_transaction_coa_id
11426          , x_accounting_coa_id        => l_adr_accounting_coa_id
11427          , x_value_type_code          => l_adr_value_type_code
11428          , p_side                     => 'NA'
11429    );
11430 
11431    xla_ae_lines_pkg.set_ccid(
11432     p_code_combination_id          => l_ccid
11433   , p_value_type_code              => l_adr_value_type_code
11434   , p_transaction_coa_id           => l_adr_transaction_coa_id
11435   , p_accounting_coa_id            => l_adr_accounting_coa_id
11436   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
11437   , p_adr_type_code                => 'S'
11438   , p_component_type               => l_component_type
11439   , p_component_code               => l_component_code
11440   , p_component_type_code          => l_component_type_code
11441   , p_component_appl_id            => l_component_appl_id
11442   , p_amb_context_code             => l_amb_context_code
11443   , p_side                         => 'NA'
11444   );
11445 
11446 
11447    --
11448    --
11449    END IF;
11450    --
11451    -- Bug 4922099
11452    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11453           (NVL(l_enc_upg_option, 'N') = 'O')
11454         ) AND
11455         (l_bflow_method_code = 'PRIOR_ENTRY')
11456       )
11457    THEN
11458       IF
11459       --
11460       1 = 2
11461       --
11462       THEN
11463       xla_accounting_err_pkg.build_message
11464                                     (p_appli_s_name            => 'XLA'
11465                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11466                                     ,p_token_1                 => 'LINE_NUMBER'
11467                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11468                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11469                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11470                                                                              l_component_type
11471                                                                             ,l_component_code
11472                                                                             ,l_component_type_code
11473                                                                             ,l_component_appl_id
11474                                                                             ,l_amb_context_code
11475                                                                             ,l_entity_code
11476                                                                             ,l_event_class_code
11477                                                                            )
11478                                     ,p_token_3                 => 'OWNER'
11479                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11480                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11481                                                                           ,p_lookup_code    => l_component_type_code
11482                                                                          )
11483                                     ,p_token_4                 => 'PRODUCT_NAME'
11484                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11485                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11486                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11487                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11488                                     ,p_ae_header_id            =>  NULL
11489                                        );
11490 
11491         IF (C_LEVEL_ERROR>= g_log_level) THEN
11495                       ,p_module   => l_log_module);
11492                  trace
11493                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11494                       ,p_level    => C_LEVEL_ERROR
11496         END IF;
11497       END IF;
11498    END IF;
11499    --
11500    --
11501    ------------------------------------------------------------------------------------------------
11502    -- 4219869 Business Flow
11503    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11504    -- Prior Entry.  Currently, the following code is always generated.
11505    ------------------------------------------------------------------------------------------------
11506    XLA_AE_LINES_PKG.ValidateCurrentLine;
11507 
11508    ------------------------------------------------------------------------------------
11509    -- 4219869 Business Flow
11510    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11511    ------------------------------------------------------------------------------------
11512    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11513 
11514    ----------------------------------------------------------------------------------
11515    -- 4219869 Business Flow
11516    -- Update journal entry status -- Need to generate this within IF <condition>
11517    ----------------------------------------------------------------------------------
11518    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11519          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11520          ,p_balance_type_code => l_balance_type_code
11521          );
11522 
11523    -------------------------------------------------------------------------------------------
11524    -- 4262811 - Generate the Accrual Reversal lines
11525    -------------------------------------------------------------------------------------------
11526    BEGIN
11527       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11528                               (g_array_event(p_event_id).array_value_num('header_index'));
11529       IF l_acc_rev_flag IS NULL THEN
11530          l_acc_rev_flag := 'N';
11531       END IF;
11532    EXCEPTION
11533       WHEN OTHERS THEN
11534          l_acc_rev_flag := 'N';
11535    END;
11536    --
11537    IF (l_acc_rev_flag = 'Y') THEN
11538 
11539        -- 4645092  ------------------------------------------------------------------------------
11540        -- To allow MPA report to determine if it should generate report process
11541        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11542        ------------------------------------------------------------------------------------------
11543 
11544        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11545        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11546 
11547        --
11548        -- Update the line information that should be overwritten
11549        --
11550        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11551                                          p_header_num   => 1);
11552        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11553 
11554        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11555 
11556        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11557           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11558        END IF;
11559 
11560       --
11561       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11562       --
11563       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11564           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11565       ELSE
11566           ---------------------------------------------------------------------------------------------------
11567           -- 4262811a Switch Sign
11568           ---------------------------------------------------------------------------------------------------
11569           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11570           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11571                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11572           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11573                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11574           -- 5132302
11575           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11576                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11577 
11578       END IF;
11579 
11580       -- 4955764
11581       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11582       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11583 
11584 
11585       XLA_AE_LINES_PKG.ValidateCurrentLine;
11586       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11587 
11588       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11589                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11590                ,p_balance_type_code => l_balance_type_code);
11591 
11592    END IF;
11593 
11594    -----------------------------------------------------------------------------------------
11595    -- 4262811 Multiperiod Accounting
11596    -----------------------------------------------------------------------------------------
11597      -- No MPA option is assigned.
11598 
11599 
11600 END IF;
11601 END IF;
11602 --
11603 
11604 --
11605 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11609       ,p_module   => l_log_module);
11606    trace
11607       (p_msg      => 'END of AcctLineType_41'
11608       ,p_level    => C_LEVEL_PROCEDURE
11610 END IF;
11611 --
11612 EXCEPTION
11613   WHEN xla_exceptions_pkg.application_exception THEN
11614       RAISE;
11615   WHEN OTHERS THEN
11616        xla_exceptions_pkg.raise_message
11617            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_41');
11618 END AcctLineType_41;
11619 --
11620 
11621 ---------------------------------------
11622 --
11623 -- PRIVATE FUNCTION
11624 --         AcctLineType_42
11625 --
11626 ---------------------------------------
11627 PROCEDURE AcctLineType_42 (
11628   p_application_id        IN NUMBER
11629  ,p_event_id              IN NUMBER
11630  ,p_calculate_acctd_flag  IN VARCHAR2
11631  ,p_calculate_g_l_flag    IN VARCHAR2
11632  ,p_actual_flag           IN OUT VARCHAR2
11633  ,p_balance_type_code     OUT VARCHAR2
11634  ,p_gain_or_loss_ref      OUT VARCHAR2
11635  
11636 --Budget Code Combination ID
11637  , p_source_3            IN NUMBER
11638 --Cost CCID
11639  , p_source_4            IN NUMBER
11640 --Allow Account Override Flag
11641  , p_source_5            IN VARCHAR2
11642 --Cost Clearing CCID
11643  , p_source_7            IN NUMBER
11644 --Adjustment Cost Clearing CCID
11645  , p_source_8            IN NUMBER
11646 --Reversing Line Flag
11647  , p_source_23            IN VARCHAR2
11648 --Actual Upgrade Credit Accounting Class
11649  , p_source_24            IN VARCHAR2
11650 --Entered Currency Code
11651  , p_source_26            IN VARCHAR2
11652 --Exchange Rate Date
11653  , p_source_28            IN DATE
11654 --Exchange Rate
11655  , p_source_29            IN NUMBER
11656 --Exchange Rate Type
11657  , p_source_30            IN VARCHAR2
11658 --Actual Upgrade Debit Accounting Class
11659  , p_source_31            IN VARCHAR2
11660 --Use Actuals Upgrade Attributes Flag
11661  , p_source_32            IN VARCHAR2
11662 --Expenditure Item ID
11663  , p_source_33            IN NUMBER
11664 --Cost Distribution Line Number
11665  , p_source_34            IN NUMBER
11666 --Line Type
11667  , p_source_35            IN VARCHAR2
11668  , p_source_35_meaning    IN VARCHAR2
11669 --Reversed Line Number
11670  , p_source_36            IN NUMBER
11671 --Encumbrance Upgrade Credit Accounting Class
11672  , p_source_41            IN VARCHAR2
11673 --Use Encumbrance Upgrade Attributes Flag
11674  , p_source_44            IN VARCHAR2
11675 --Entered Burdened Cost
11676  , p_source_52            IN NUMBER
11677 --Accounted Burdened Cost
11678  , p_source_53            IN NUMBER
11679 --Encumbrance Amount
11680  , p_source_54            IN NUMBER
11681 --Project Encumbrance Applied to Application Identifier
11682  , p_source_55            IN NUMBER
11683 --Project Encumbrance Applied to Distribution Type
11684  , p_source_56            IN VARCHAR2
11685 --Project Encumbrance Applied to Entity Code
11686  , p_source_57            IN VARCHAR2
11687 --Project Encumbrance Applied to First Distribution ID
11688  , p_source_58            IN NUMBER
11689 --Project Encumbrance Applied to First System Transaction ID
11690  , p_source_59            IN NUMBER
11691 --Project Encumbrance Applied to Second Distribution ID
11692  , p_source_60            IN VARCHAR2
11693 --Encumbrance Upgrade Debit Accounting Class
11694  , p_source_61            IN VARCHAR2
11695 --Encumbrance Type ID
11696  , p_source_62            IN NUMBER
11697 --Project Encumbrance Type ID
11698  , p_source_63            IN NUMBER
11699 )
11700 IS
11701 
11702 l_component_type              VARCHAR2(80);
11703 l_component_code              VARCHAR2(30);
11704 l_component_type_code         VARCHAR2(1);
11705 l_component_appl_id           INTEGER;
11706 l_amb_context_code            VARCHAR2(30);
11707 l_entity_code                 VARCHAR2(30);
11708 l_event_class_code            VARCHAR2(30);
11709 l_ae_header_id                NUMBER;
11710 l_event_type_code             VARCHAR2(30);
11711 l_line_definition_code        VARCHAR2(30);
11712 l_line_definition_owner_code  VARCHAR2(1);
11713 --
11714 -- adr variables
11715 l_segment                     VARCHAR2(30);
11716 l_ccid                        NUMBER;
11717 l_adr_transaction_coa_id      NUMBER;
11718 l_adr_accounting_coa_id       NUMBER;
11719 l_adr_flexfield_segment_code  VARCHAR2(30);
11720 l_adr_flex_value_set_id       NUMBER;
11721 l_adr_value_type_code         VARCHAR2(30);
11722 l_adr_value_combination_id    NUMBER;
11723 l_adr_value_segment_code      VARCHAR2(30);
11724 
11725 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11726 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11727 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11728 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11729 
11730 -- 4262811 Variables ------------------------------------------------------------------------------------------
11731 l_entered_amt_idx             NUMBER;
11732 l_accted_amt_idx              NUMBER;
11733 l_acc_rev_flag                VARCHAR2(1);
11734 l_accrual_line_num            NUMBER;
11735 l_tmp_amt                     NUMBER;
11736 l_acc_rev_natural_side_code   VARCHAR2(1);
11737 
11738 l_num_entries                 NUMBER;
11739 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11740 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11741 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11742 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11743 l_recog_line_1                NUMBER;
11744 l_recog_line_2                NUMBER;
11745 
11746 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11750 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11747 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11748 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11749 
11751 
11752 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11753 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11754 
11755 ---------------------------------------------------------------------------------------------------------------
11756 
11757 
11758 --
11759 -- bulk performance
11760 --
11761 l_balance_type_code           VARCHAR2(1);
11762 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11763 l_log_module                  VARCHAR2(240);
11764 
11765 --
11766 -- Upgrade strategy
11767 --
11768 l_actual_upg_option           VARCHAR2(1);
11769 l_enc_upg_option           VARCHAR2(1);
11770 
11771 --
11772 BEGIN
11773 --
11774 IF g_log_enabled THEN
11775       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
11776 END IF;
11777 --
11778 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11779 
11780       trace
11781          (p_msg      => 'BEGIN of AcctLineType_42'
11782          ,p_level    => C_LEVEL_PROCEDURE
11783          ,p_module   => l_log_module);
11784 
11785 END IF;
11786 --
11787 l_component_type             := 'AMB_JLT';
11788 l_component_code             := 'PA_BURDEN_COST_CLEAR_FED';
11789 l_component_type_code        := 'S';
11790 l_component_appl_id          :=  275;
11791 l_amb_context_code           := 'DEFAULT';
11792 l_entity_code                := 'EXPENDITURES';
11793 l_event_class_code           := 'BURDEN_COST';
11794 l_event_type_code            := 'BURDEN_COST_ALL';
11795 l_line_definition_owner_code := 'S';
11796 l_line_definition_code       := 'FV_PROJECTS_JLD';
11797 --
11798 l_balance_type_code          := 'A';
11799 l_segment                     := NULL;
11800 l_ccid                        := NULL;
11801 l_adr_transaction_coa_id      := NULL;
11802 l_adr_accounting_coa_id       := NULL;
11803 l_adr_flexfield_segment_code  := NULL;
11804 l_adr_flex_value_set_id       := NULL;
11805 l_adr_value_type_code         := NULL;
11806 l_adr_value_combination_id    := NULL;
11807 l_adr_value_segment_code      := NULL;
11808 
11809 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11810 l_bflow_class_code           := '';    -- 4219869 Business Flow
11811 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11812 l_budgetary_control_flag     := 'N';
11813 
11814 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11815 l_bflow_applied_to_amt       := NULL; -- 5132302
11816 l_entered_amt_idx            := NULL;          -- 4262811
11817 l_accted_amt_idx             := NULL;          -- 4262811
11818 l_acc_rev_flag               := NULL;          -- 4262811
11819 l_accrual_line_num           := NULL;          -- 4262811
11820 l_tmp_amt                    := NULL;          -- 4262811
11821 --
11822  
11823 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11824     l_balance_type_code <> 'B' THEN
11825 IF NVL(p_source_35,'
11826 ') =  'R'
11827  THEN 
11828 
11829    --
11830    XLA_AE_LINES_PKG.SetNewLine;
11831 
11832    p_balance_type_code          := l_balance_type_code;
11833    -- set the flag so later we will know whether the gain loss line needs to be created
11834    
11835    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11836      p_actual_flag :='A';
11837    END IF;
11838 
11839    --
11840    -- bulk performance
11841    --
11842    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11843                                       p_header_num   => 0); -- 4262811
11844    --
11845    -- set accounting line options
11846    --
11847    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11848            p_natural_side_code          => 'C'
11849          , p_gain_or_loss_flag          => 'N'
11850          , p_gl_transfer_mode_code      => 'S'
11851          , p_acct_entry_type_code       => 'A'
11852          , p_switch_side_flag           => 'Y'
11853          , p_merge_duplicate_code       => 'N'
11854          );
11855    --
11856    l_acc_rev_natural_side_code := 'D';  -- 4262811
11857    -- 
11858    --
11859    -- set accounting line type info
11860    --
11861    xla_ae_lines_pkg.SetAcctLineType
11862       (p_component_type             => l_component_type
11863       ,p_event_type_code            => l_event_type_code
11864       ,p_line_definition_owner_code => l_line_definition_owner_code
11865       ,p_line_definition_code       => l_line_definition_code
11866       ,p_accounting_line_code       => l_component_code
11867       ,p_accounting_line_type_code  => l_component_type_code
11868       ,p_accounting_line_appl_id    => l_component_appl_id
11869       ,p_amb_context_code           => l_amb_context_code
11870       ,p_entity_code                => l_entity_code
11871       ,p_event_class_code           => l_event_class_code);
11872    --
11873    -- set accounting class
11874    --
11875    xla_ae_lines_pkg.SetAcctClass(
11876            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
11877          , p_ae_header_id           => l_ae_header_id
11878          );
11879 
11880    --
11881    -- set rounding class
11882    --
11883    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11884                       'FEDERAL_PROJECT_COST_CLEARING';
11885 
11886    --
11887    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11891    --
11888    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11889    --
11890    -- bulk performance
11892    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11893 
11894    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11895       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11896 
11897    -- 4955764
11898    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11899       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11900 
11901    -- 4458381 Public Sector Enh
11902    
11903    --
11904    -- set accounting attributes for the line type
11905    --
11906    l_entered_amt_idx := 39;
11907    l_accted_amt_idx  := 44;
11908    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11909    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
11910    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
11911    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
11912    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
11913    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
11914    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
11915    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
11916    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
11917    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
11918    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
11919    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
11920    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
11921    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
11922    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
11923    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
11924    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
11925    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
11926    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
11927    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
11928    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
11929    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
11930    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
11931    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
11932    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
11933    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
11934    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
11935    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
11936    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
11937    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
11938    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
11939    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
11940    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
11941    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
11942    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
11943    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
11944    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
11945    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_APPLICATION_ID';
11946    l_rec_acct_attrs.array_num_value(19)  := p_source_55;
11947    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_DISTRIBUTION_TYPE';
11948    l_rec_acct_attrs.array_char_value(20)  := p_source_56;
11949    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_ENTITY_CODE';
11950    l_rec_acct_attrs.array_char_value(21)  := p_source_57;
11951    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_DIST_ID';
11952    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_58);
11953    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
11954    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_59);
11955    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_DIST_ID';
11956    l_rec_acct_attrs.array_char_value(24)  := p_source_60;
11957    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
11958    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_33);
11959    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
11960    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_34);
11961    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
11962    l_rec_acct_attrs.array_char_value(27)  := p_source_35;
11963    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_CR_ACCT_CLASS';
11964    l_rec_acct_attrs.array_char_value(28)  := p_source_41;
11965    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_CCID';
11966    l_rec_acct_attrs.array_num_value(29)  := p_source_3;
11967    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_ENTERED_AMT';
11968    l_rec_acct_attrs.array_num_value(30)  := p_source_54;
11969    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_CURR';
11970    l_rec_acct_attrs.array_char_value(31)  := p_source_26;
11971    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_LEDGER_AMT';
11972    l_rec_acct_attrs.array_num_value(32)  := p_source_54;
11973    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_ACCT_CLASS';
11974    l_rec_acct_attrs.array_char_value(33)  := p_source_61;
11975    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_CCID';
11976    l_rec_acct_attrs.array_num_value(34)  := p_source_3;
11977    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_ENTERED_AMT';
11978    l_rec_acct_attrs.array_num_value(35)  := p_source_54;
11979    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_CURR';
11980    l_rec_acct_attrs.array_char_value(36)  := p_source_26;
11981    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_LEDGER_AMT';
11982    l_rec_acct_attrs.array_num_value(37)  := p_source_54;
11986    l_rec_acct_attrs.array_num_value(39)  := p_source_52;
11983    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_OPTION';
11984    l_rec_acct_attrs.array_char_value(38)  := p_source_44;
11985    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENTERED_CURRENCY_AMOUNT';
11987    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_CODE';
11988    l_rec_acct_attrs.array_char_value(40)  := p_source_26;
11989    l_rec_acct_attrs.array_acct_attr_code(41) := 'EXCHANGE_DATE';
11990    l_rec_acct_attrs.array_date_value(41)  := p_source_28;
11991    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_RATE';
11992    l_rec_acct_attrs.array_num_value(42)  := p_source_29;
11993    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE_TYPE';
11994    l_rec_acct_attrs.array_char_value(43)  := p_source_30;
11995    l_rec_acct_attrs.array_acct_attr_code(44) := 'LEDGER_AMOUNT';
11996    l_rec_acct_attrs.array_num_value(44)  := p_source_53;
11997    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID1';
11998    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_33);
11999    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID2';
12000    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_36);
12001    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_TYPE';
12002    l_rec_acct_attrs.array_char_value(47)  := p_source_35;
12003    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_CR_ENC_TYPE_ID';
12004    l_rec_acct_attrs.array_num_value(48)  := p_source_62;
12005    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_DR_ENC_TYPE_ID';
12006    l_rec_acct_attrs.array_num_value(49)  := p_source_63;
12007 
12008    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12009    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12010 
12011    ---------------------------------------------------------------------------------------------------------------
12012    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12013    ---------------------------------------------------------------------------------------------------------------
12014    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12015 
12016    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12017    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12018 
12019    IF xla_accounting_cache_pkg.GetValueChar
12020          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12021          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12022    AND l_bflow_method_code = 'PRIOR_ENTRY'
12023 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12024    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12025          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12026        )
12027    THEN
12028          xla_ae_lines_pkg.BflowUpgEntry
12029            (p_business_method_code    => l_bflow_method_code
12030            ,p_business_class_code     => l_bflow_class_code
12031            ,p_balance_type            => l_balance_type_code);
12032    ELSE
12033       NULL;
12034 -- No business flow processing for business flow method of NONE.
12035    END IF;
12036 
12037    --
12038    -- call analytical criteria
12039    --
12040    
12041    --
12042    -- call description
12043    --
12044    -- No description or it is inherited.
12045    --
12046    -- call ADRs
12047    -- Bug 4922099
12048    --
12049    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12050         (NVL(l_actual_upg_option, 'N') = 'O') OR
12051         (NVL(l_enc_upg_option, 'N') = 'O')
12052       )
12053    THEN
12054    NULL;
12055    --
12056    --
12057    
12058   l_ccid := AcctDerRule_14(
12059            p_application_id           => p_application_id
12060          , p_ae_header_id             => l_ae_header_id 
12061 , p_source_5 => p_source_5
12062 , p_source_7 => p_source_7
12063 , p_source_8 => p_source_8
12064          , x_transaction_coa_id       => l_adr_transaction_coa_id
12065          , x_accounting_coa_id        => l_adr_accounting_coa_id
12066          , x_value_type_code          => l_adr_value_type_code
12067          , p_side                     => 'NA'
12068    );
12069 
12070    xla_ae_lines_pkg.set_ccid(
12071     p_code_combination_id          => l_ccid
12072   , p_value_type_code              => l_adr_value_type_code
12073   , p_transaction_coa_id           => l_adr_transaction_coa_id
12074   , p_accounting_coa_id            => l_adr_accounting_coa_id
12075   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
12076   , p_adr_type_code                => 'S'
12077   , p_component_type               => l_component_type
12078   , p_component_code               => l_component_code
12079   , p_component_type_code          => l_component_type_code
12080   , p_component_appl_id            => l_component_appl_id
12081   , p_amb_context_code             => l_amb_context_code
12082   , p_side                         => 'NA'
12083   );
12084 
12085 
12086    l_segment := AcctDerRule_5(
12087            p_application_id           => p_application_id
12088          , p_ae_header_id             => l_ae_header_id 
12089          , x_transaction_coa_id       => l_adr_transaction_coa_id
12090          , x_accounting_coa_id        => l_adr_accounting_coa_id
12091          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
12092          , x_flex_value_set_id        => l_adr_flex_value_set_id
12093          , x_value_type_code          => l_adr_value_type_code
12094          , x_value_combination_id     => l_adr_value_combination_id
12095          , x_value_segment_code       => l_adr_value_segment_code
12096          , p_side                     => 'NA'
12097          , p_override_seg_flag        => 'Y'
12098    );
12099 
12103           p_to_segment_code         => 'GL_ACCOUNT'
12100    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
12101 
12102       xla_ae_lines_pkg.set_segment(
12104         , p_segment_value           => l_segment
12105         , p_from_segment_code       => l_adr_value_segment_code
12106         , p_from_combination_id     => l_adr_value_combination_id
12107         , p_value_type_code         => l_adr_value_type_code
12108         , p_transaction_coa_id      => l_adr_transaction_coa_id
12109         , p_accounting_coa_id       => l_adr_accounting_coa_id
12110         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
12111         , p_flex_value_set_id       => l_adr_flex_value_set_id
12112         , p_adr_code                => 'FV_490201_PROJECTS'
12113         , p_adr_type_code           => 'S'
12114         , p_component_type          => l_component_type
12115         , p_component_code          => l_component_code
12116         , p_component_type_code     => l_component_type_code
12117         , p_component_appl_id       => l_component_appl_id
12118         , p_amb_context_code        => l_amb_context_code
12119         , p_entity_code             => 'EXPENDITURES'
12120         , p_event_class_code        => 'BURDEN_COST'
12121         , p_side                    => 'NA'
12122         );
12123 
12124   END IF;
12125 
12126    --
12127    --
12128    END IF;
12129    --
12130    -- Bug 4922099
12131    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12132           (NVL(l_enc_upg_option, 'N') = 'O')
12133         ) AND
12134         (l_bflow_method_code = 'PRIOR_ENTRY')
12135       )
12136    THEN
12137       IF
12138       --
12139       1 = 2
12140       --
12141       THEN
12142       xla_accounting_err_pkg.build_message
12143                                     (p_appli_s_name            => 'XLA'
12144                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12145                                     ,p_token_1                 => 'LINE_NUMBER'
12146                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12147                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12148                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12149                                                                              l_component_type
12150                                                                             ,l_component_code
12151                                                                             ,l_component_type_code
12152                                                                             ,l_component_appl_id
12153                                                                             ,l_amb_context_code
12154                                                                             ,l_entity_code
12155                                                                             ,l_event_class_code
12156                                                                            )
12157                                     ,p_token_3                 => 'OWNER'
12158                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12159                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12160                                                                           ,p_lookup_code    => l_component_type_code
12161                                                                          )
12162                                     ,p_token_4                 => 'PRODUCT_NAME'
12163                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12164                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12165                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12166                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12167                                     ,p_ae_header_id            =>  NULL
12168                                        );
12169 
12170         IF (C_LEVEL_ERROR>= g_log_level) THEN
12171                  trace
12172                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12173                       ,p_level    => C_LEVEL_ERROR
12174                       ,p_module   => l_log_module);
12175         END IF;
12176       END IF;
12177    END IF;
12178    --
12179    --
12180    ------------------------------------------------------------------------------------------------
12181    -- 4219869 Business Flow
12182    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12183    -- Prior Entry.  Currently, the following code is always generated.
12184    ------------------------------------------------------------------------------------------------
12185    XLA_AE_LINES_PKG.ValidateCurrentLine;
12186 
12187    ------------------------------------------------------------------------------------
12188    -- 4219869 Business Flow
12189    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12190    ------------------------------------------------------------------------------------
12191    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12192 
12193    ----------------------------------------------------------------------------------
12194    -- 4219869 Business Flow
12195    -- Update journal entry status -- Need to generate this within IF <condition>
12196    ----------------------------------------------------------------------------------
12197    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12198          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12199          ,p_balance_type_code => l_balance_type_code
12200          );
12201 
12202    -------------------------------------------------------------------------------------------
12206       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12203    -- 4262811 - Generate the Accrual Reversal lines
12204    -------------------------------------------------------------------------------------------
12205    BEGIN
12207                               (g_array_event(p_event_id).array_value_num('header_index'));
12208       IF l_acc_rev_flag IS NULL THEN
12209          l_acc_rev_flag := 'N';
12210       END IF;
12211    EXCEPTION
12212       WHEN OTHERS THEN
12213          l_acc_rev_flag := 'N';
12214    END;
12215    --
12216    IF (l_acc_rev_flag = 'Y') THEN
12217 
12218        -- 4645092  ------------------------------------------------------------------------------
12219        -- To allow MPA report to determine if it should generate report process
12220        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12221        ------------------------------------------------------------------------------------------
12222 
12223        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12224        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12225 
12226        --
12227        -- Update the line information that should be overwritten
12228        --
12229        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12230                                          p_header_num   => 1);
12231        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12232 
12233        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12234 
12235        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12236           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12237        END IF;
12238 
12239       --
12240       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12241       --
12242       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12243           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12244       ELSE
12245           ---------------------------------------------------------------------------------------------------
12246           -- 4262811a Switch Sign
12247           ---------------------------------------------------------------------------------------------------
12248           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12249           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12250                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12251           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12252                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12253           -- 5132302
12254           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12255                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12256 
12257       END IF;
12258 
12259       -- 4955764
12260       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12261       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12262 
12263 
12264       XLA_AE_LINES_PKG.ValidateCurrentLine;
12265       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12266 
12267       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12268                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12269                ,p_balance_type_code => l_balance_type_code);
12270 
12271    END IF;
12272 
12273    -----------------------------------------------------------------------------------------
12274    -- 4262811 Multiperiod Accounting
12275    -----------------------------------------------------------------------------------------
12276      -- No MPA option is assigned.
12277 
12278 
12279 END IF;
12280 END IF;
12281 --
12282 
12283 --
12284 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12285    trace
12286       (p_msg      => 'END of AcctLineType_42'
12287       ,p_level    => C_LEVEL_PROCEDURE
12288       ,p_module   => l_log_module);
12289 END IF;
12290 --
12291 EXCEPTION
12292   WHEN xla_exceptions_pkg.application_exception THEN
12293       RAISE;
12294   WHEN OTHERS THEN
12295        xla_exceptions_pkg.raise_message
12296            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_42');
12297 END AcctLineType_42;
12298 --
12299 
12300 ---------------------------------------
12301 --
12302 -- PRIVATE FUNCTION
12303 --         AcctLineType_43
12304 --
12305 ---------------------------------------
12306 PROCEDURE AcctLineType_43 (
12307   p_application_id        IN NUMBER
12308  ,p_event_id              IN NUMBER
12309  ,p_calculate_acctd_flag  IN VARCHAR2
12310  ,p_calculate_g_l_flag    IN VARCHAR2
12311  ,p_actual_flag           IN OUT VARCHAR2
12312  ,p_balance_type_code     OUT VARCHAR2
12313  ,p_gain_or_loss_ref      OUT VARCHAR2
12314  
12315 --Budget Code Combination ID
12316  , p_source_3            IN NUMBER
12317 --Cost CCID
12318  , p_source_4            IN NUMBER
12319 --Allow Account Override Flag
12320  , p_source_5            IN VARCHAR2
12321 --Adjustment Cost CCID
12322  , p_source_6            IN NUMBER
12323 --Cost Clearing CCID
12324  , p_source_7            IN NUMBER
12325 --Reversing Line Flag
12326  , p_source_23            IN VARCHAR2
12327 --Actual Upgrade Credit Accounting Class
12328  , p_source_24            IN VARCHAR2
12329 --Entered Currency Code
12330  , p_source_26            IN VARCHAR2
12331 --Exchange Rate Date
12335 --Exchange Rate Type
12332  , p_source_28            IN DATE
12333 --Exchange Rate
12334  , p_source_29            IN NUMBER
12336  , p_source_30            IN VARCHAR2
12337 --Actual Upgrade Debit Accounting Class
12338  , p_source_31            IN VARCHAR2
12339 --Use Actuals Upgrade Attributes Flag
12340  , p_source_32            IN VARCHAR2
12341 --Expenditure Item ID
12342  , p_source_33            IN NUMBER
12343 --Cost Distribution Line Number
12344  , p_source_34            IN NUMBER
12345 --Line Type
12346  , p_source_35            IN VARCHAR2
12347  , p_source_35_meaning    IN VARCHAR2
12348 --Reversed Line Number
12349  , p_source_36            IN NUMBER
12350 --Encumbrance Upgrade Credit Accounting Class
12351  , p_source_41            IN VARCHAR2
12352 --Use Encumbrance Upgrade Attributes Flag
12353  , p_source_44            IN VARCHAR2
12354 --Entered Burdened Cost
12355  , p_source_52            IN NUMBER
12356 --Accounted Burdened Cost
12357  , p_source_53            IN NUMBER
12358 --Encumbrance Amount
12359  , p_source_54            IN NUMBER
12360 --Project Encumbrance Applied to Application Identifier
12361  , p_source_55            IN NUMBER
12362 --Project Encumbrance Applied to Distribution Type
12363  , p_source_56            IN VARCHAR2
12364 --Project Encumbrance Applied to Entity Code
12365  , p_source_57            IN VARCHAR2
12366 --Project Encumbrance Applied to First Distribution ID
12367  , p_source_58            IN NUMBER
12368 --Project Encumbrance Applied to First System Transaction ID
12369  , p_source_59            IN NUMBER
12370 --Project Encumbrance Applied to Second Distribution ID
12371  , p_source_60            IN VARCHAR2
12372 --Encumbrance Upgrade Debit Accounting Class
12373  , p_source_61            IN VARCHAR2
12374 --Encumbrance Type ID
12375  , p_source_62            IN NUMBER
12376 --Project Encumbrance Type ID
12377  , p_source_63            IN NUMBER
12378 )
12379 IS
12380 
12381 l_component_type              VARCHAR2(80);
12382 l_component_code              VARCHAR2(30);
12383 l_component_type_code         VARCHAR2(1);
12384 l_component_appl_id           INTEGER;
12385 l_amb_context_code            VARCHAR2(30);
12386 l_entity_code                 VARCHAR2(30);
12387 l_event_class_code            VARCHAR2(30);
12388 l_ae_header_id                NUMBER;
12389 l_event_type_code             VARCHAR2(30);
12390 l_line_definition_code        VARCHAR2(30);
12391 l_line_definition_owner_code  VARCHAR2(1);
12392 --
12393 -- adr variables
12394 l_segment                     VARCHAR2(30);
12395 l_ccid                        NUMBER;
12396 l_adr_transaction_coa_id      NUMBER;
12397 l_adr_accounting_coa_id       NUMBER;
12398 l_adr_flexfield_segment_code  VARCHAR2(30);
12399 l_adr_flex_value_set_id       NUMBER;
12400 l_adr_value_type_code         VARCHAR2(30);
12401 l_adr_value_combination_id    NUMBER;
12402 l_adr_value_segment_code      VARCHAR2(30);
12403 
12404 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12405 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12406 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12407 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12408 
12409 -- 4262811 Variables ------------------------------------------------------------------------------------------
12410 l_entered_amt_idx             NUMBER;
12411 l_accted_amt_idx              NUMBER;
12412 l_acc_rev_flag                VARCHAR2(1);
12413 l_accrual_line_num            NUMBER;
12414 l_tmp_amt                     NUMBER;
12415 l_acc_rev_natural_side_code   VARCHAR2(1);
12416 
12417 l_num_entries                 NUMBER;
12418 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12419 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12420 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12421 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12422 l_recog_line_1                NUMBER;
12423 l_recog_line_2                NUMBER;
12424 
12425 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12426 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12427 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12428 
12429 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12430 
12431 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12432 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12433 
12434 ---------------------------------------------------------------------------------------------------------------
12435 
12436 
12437 --
12438 -- bulk performance
12439 --
12440 l_balance_type_code           VARCHAR2(1);
12441 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12442 l_log_module                  VARCHAR2(240);
12443 
12444 --
12445 -- Upgrade strategy
12446 --
12447 l_actual_upg_option           VARCHAR2(1);
12448 l_enc_upg_option           VARCHAR2(1);
12449 
12450 --
12451 BEGIN
12452 --
12453 IF g_log_enabled THEN
12454       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
12455 END IF;
12456 --
12457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12458 
12459       trace
12460          (p_msg      => 'BEGIN of AcctLineType_43'
12461          ,p_level    => C_LEVEL_PROCEDURE
12462          ,p_module   => l_log_module);
12463 
12464 END IF;
12465 --
12466 l_component_type             := 'AMB_JLT';
12467 l_component_code             := 'PA_BURDEN_COST_FED';
12468 l_component_type_code        := 'S';
12469 l_component_appl_id          :=  275;
12470 l_amb_context_code           := 'DEFAULT';
12471 l_entity_code                := 'EXPENDITURES';
12475 l_line_definition_code       := 'FV_PROJECTS_JLD';
12472 l_event_class_code           := 'BURDEN_COST';
12473 l_event_type_code            := 'BURDEN_COST_ALL';
12474 l_line_definition_owner_code := 'S';
12476 --
12477 l_balance_type_code          := 'A';
12478 l_segment                     := NULL;
12479 l_ccid                        := NULL;
12480 l_adr_transaction_coa_id      := NULL;
12481 l_adr_accounting_coa_id       := NULL;
12482 l_adr_flexfield_segment_code  := NULL;
12483 l_adr_flex_value_set_id       := NULL;
12484 l_adr_value_type_code         := NULL;
12485 l_adr_value_combination_id    := NULL;
12486 l_adr_value_segment_code      := NULL;
12487 
12488 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12489 l_bflow_class_code           := '';    -- 4219869 Business Flow
12490 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12491 l_budgetary_control_flag     := 'N';
12492 
12493 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12494 l_bflow_applied_to_amt       := NULL; -- 5132302
12495 l_entered_amt_idx            := NULL;          -- 4262811
12496 l_accted_amt_idx             := NULL;          -- 4262811
12497 l_acc_rev_flag               := NULL;          -- 4262811
12498 l_accrual_line_num           := NULL;          -- 4262811
12499 l_tmp_amt                    := NULL;          -- 4262811
12500 --
12501  
12502 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12503     l_balance_type_code <> 'B' THEN
12504 IF NVL(p_source_35,'
12505 ') =  'R'
12506  THEN 
12507 
12508    --
12509    XLA_AE_LINES_PKG.SetNewLine;
12510 
12511    p_balance_type_code          := l_balance_type_code;
12512    -- set the flag so later we will know whether the gain loss line needs to be created
12513    
12514    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12515      p_actual_flag :='A';
12516    END IF;
12517 
12518    --
12519    -- bulk performance
12520    --
12521    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12522                                       p_header_num   => 0); -- 4262811
12523    --
12524    -- set accounting line options
12525    --
12526    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12527            p_natural_side_code          => 'D'
12528          , p_gain_or_loss_flag          => 'N'
12529          , p_gl_transfer_mode_code      => 'S'
12530          , p_acct_entry_type_code       => 'A'
12531          , p_switch_side_flag           => 'Y'
12532          , p_merge_duplicate_code       => 'N'
12533          );
12534    --
12535    l_acc_rev_natural_side_code := 'C';  -- 4262811
12536    -- 
12537    --
12538    -- set accounting line type info
12539    --
12540    xla_ae_lines_pkg.SetAcctLineType
12541       (p_component_type             => l_component_type
12542       ,p_event_type_code            => l_event_type_code
12543       ,p_line_definition_owner_code => l_line_definition_owner_code
12544       ,p_line_definition_code       => l_line_definition_code
12545       ,p_accounting_line_code       => l_component_code
12546       ,p_accounting_line_type_code  => l_component_type_code
12547       ,p_accounting_line_appl_id    => l_component_appl_id
12548       ,p_amb_context_code           => l_amb_context_code
12549       ,p_entity_code                => l_entity_code
12550       ,p_event_class_code           => l_event_class_code);
12551    --
12552    -- set accounting class
12553    --
12554    xla_ae_lines_pkg.SetAcctClass(
12555            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
12556          , p_ae_header_id           => l_ae_header_id
12557          );
12558 
12559    --
12560    -- set rounding class
12561    --
12562    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12563                       'FEDERAL_PROJECT_COST';
12564 
12565    --
12566    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12567    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12568    --
12569    -- bulk performance
12570    --
12571    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12572 
12573    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12574       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12575 
12576    -- 4955764
12577    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12578       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12579 
12580    -- 4458381 Public Sector Enh
12581    
12582    --
12583    -- set accounting attributes for the line type
12584    --
12585    l_entered_amt_idx := 39;
12586    l_accted_amt_idx  := 44;
12587    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12588    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
12589    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
12590    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
12591    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
12592    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
12593    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
12594    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
12595    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
12596    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
12597    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
12598    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
12599    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
12600    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
12604    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
12601    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
12602    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
12603    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
12605    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
12606    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
12607    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
12608    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
12609    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
12610    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
12611    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
12612    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
12613    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
12614    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
12615    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
12616    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
12617    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
12618    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
12619    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
12620    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
12621    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
12622    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
12623    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
12624    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_APPLICATION_ID';
12625    l_rec_acct_attrs.array_num_value(19)  := p_source_55;
12626    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_DISTRIBUTION_TYPE';
12627    l_rec_acct_attrs.array_char_value(20)  := p_source_56;
12628    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_ENTITY_CODE';
12629    l_rec_acct_attrs.array_char_value(21)  := p_source_57;
12630    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_DIST_ID';
12631    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_58);
12632    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
12633    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_59);
12634    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_DIST_ID';
12635    l_rec_acct_attrs.array_char_value(24)  := p_source_60;
12636    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
12637    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_33);
12638    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
12639    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_34);
12640    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
12641    l_rec_acct_attrs.array_char_value(27)  := p_source_35;
12642    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_CR_ACCT_CLASS';
12643    l_rec_acct_attrs.array_char_value(28)  := p_source_41;
12644    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_CCID';
12645    l_rec_acct_attrs.array_num_value(29)  := p_source_3;
12646    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_ENTERED_AMT';
12647    l_rec_acct_attrs.array_num_value(30)  := p_source_54;
12648    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_CURR';
12649    l_rec_acct_attrs.array_char_value(31)  := p_source_26;
12650    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_LEDGER_AMT';
12651    l_rec_acct_attrs.array_num_value(32)  := p_source_54;
12652    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_ACCT_CLASS';
12653    l_rec_acct_attrs.array_char_value(33)  := p_source_61;
12654    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_CCID';
12655    l_rec_acct_attrs.array_num_value(34)  := p_source_3;
12656    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_ENTERED_AMT';
12657    l_rec_acct_attrs.array_num_value(35)  := p_source_54;
12658    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_CURR';
12659    l_rec_acct_attrs.array_char_value(36)  := p_source_26;
12660    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_LEDGER_AMT';
12661    l_rec_acct_attrs.array_num_value(37)  := p_source_54;
12662    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_OPTION';
12663    l_rec_acct_attrs.array_char_value(38)  := p_source_44;
12664    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENTERED_CURRENCY_AMOUNT';
12665    l_rec_acct_attrs.array_num_value(39)  := p_source_52;
12666    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_CODE';
12667    l_rec_acct_attrs.array_char_value(40)  := p_source_26;
12668    l_rec_acct_attrs.array_acct_attr_code(41) := 'EXCHANGE_DATE';
12669    l_rec_acct_attrs.array_date_value(41)  := p_source_28;
12670    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_RATE';
12671    l_rec_acct_attrs.array_num_value(42)  := p_source_29;
12672    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE_TYPE';
12673    l_rec_acct_attrs.array_char_value(43)  := p_source_30;
12674    l_rec_acct_attrs.array_acct_attr_code(44) := 'LEDGER_AMOUNT';
12675    l_rec_acct_attrs.array_num_value(44)  := p_source_53;
12676    l_rec_acct_attrs.array_acct_attr_code(45) := 'REVERSED_DISTRIBUTION_ID1';
12677    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_33);
12678    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID2';
12679    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_36);
12680    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_TYPE';
12681    l_rec_acct_attrs.array_char_value(47)  := p_source_35;
12682    l_rec_acct_attrs.array_acct_attr_code(48) := 'UPG_CR_ENC_TYPE_ID';
12683    l_rec_acct_attrs.array_num_value(48)  := p_source_62;
12684    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_DR_ENC_TYPE_ID';
12685    l_rec_acct_attrs.array_num_value(49)  := p_source_63;
12686 
12687    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12688    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12689 
12693    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12690    ---------------------------------------------------------------------------------------------------------------
12691    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12692    ---------------------------------------------------------------------------------------------------------------
12694 
12695    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12696    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12697 
12698    IF xla_accounting_cache_pkg.GetValueChar
12699          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12700          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12701    AND l_bflow_method_code = 'PRIOR_ENTRY'
12702 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12703    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12704          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12705        )
12706    THEN
12707          xla_ae_lines_pkg.BflowUpgEntry
12708            (p_business_method_code    => l_bflow_method_code
12709            ,p_business_class_code     => l_bflow_class_code
12710            ,p_balance_type            => l_balance_type_code);
12711    ELSE
12712       NULL;
12713 -- No business flow processing for business flow method of NONE.
12714    END IF;
12715 
12716    --
12717    -- call analytical criteria
12718    --
12719    
12720    --
12721    -- call description
12722    --
12723    -- No description or it is inherited.
12724    --
12725    -- call ADRs
12726    -- Bug 4922099
12727    --
12728    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12729         (NVL(l_actual_upg_option, 'N') = 'O') OR
12730         (NVL(l_enc_upg_option, 'N') = 'O')
12731       )
12732    THEN
12733    NULL;
12734    --
12735    --
12736    
12737   l_ccid := AcctDerRule_12(
12738            p_application_id           => p_application_id
12739          , p_ae_header_id             => l_ae_header_id 
12740 , p_source_4 => p_source_4
12741 , p_source_5 => p_source_5
12742 , p_source_6 => p_source_6
12743          , x_transaction_coa_id       => l_adr_transaction_coa_id
12744          , x_accounting_coa_id        => l_adr_accounting_coa_id
12745          , x_value_type_code          => l_adr_value_type_code
12746          , p_side                     => 'NA'
12747    );
12748 
12749    xla_ae_lines_pkg.set_ccid(
12750     p_code_combination_id          => l_ccid
12751   , p_value_type_code              => l_adr_value_type_code
12752   , p_transaction_coa_id           => l_adr_transaction_coa_id
12753   , p_accounting_coa_id            => l_adr_accounting_coa_id
12754   , p_adr_code                     => 'PA_COST_ACCT_RULE'
12755   , p_adr_type_code                => 'S'
12756   , p_component_type               => l_component_type
12757   , p_component_code               => l_component_code
12758   , p_component_type_code          => l_component_type_code
12759   , p_component_appl_id            => l_component_appl_id
12760   , p_amb_context_code             => l_amb_context_code
12761   , p_side                         => 'NA'
12762   );
12763 
12764 
12765    l_segment := AcctDerRule_4(
12766            p_application_id           => p_application_id
12767          , p_ae_header_id             => l_ae_header_id 
12768          , x_transaction_coa_id       => l_adr_transaction_coa_id
12769          , x_accounting_coa_id        => l_adr_accounting_coa_id
12770          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
12771          , x_flex_value_set_id        => l_adr_flex_value_set_id
12772          , x_value_type_code          => l_adr_value_type_code
12773          , x_value_combination_id     => l_adr_value_combination_id
12774          , x_value_segment_code       => l_adr_value_segment_code
12775          , p_side                     => 'NA'
12776          , p_override_seg_flag        => 'Y'
12777    );
12778 
12779    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
12780 
12781       xla_ae_lines_pkg.set_segment(
12782           p_to_segment_code         => 'GL_ACCOUNT'
12783         , p_segment_value           => l_segment
12784         , p_from_segment_code       => l_adr_value_segment_code
12785         , p_from_combination_id     => l_adr_value_combination_id
12786         , p_value_type_code         => l_adr_value_type_code
12787         , p_transaction_coa_id      => l_adr_transaction_coa_id
12788         , p_accounting_coa_id       => l_adr_accounting_coa_id
12789         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
12790         , p_flex_value_set_id       => l_adr_flex_value_set_id
12791         , p_adr_code                => 'FV_461001_PROJECTS'
12792         , p_adr_type_code           => 'S'
12793         , p_component_type          => l_component_type
12794         , p_component_code          => l_component_code
12795         , p_component_type_code     => l_component_type_code
12796         , p_component_appl_id       => l_component_appl_id
12797         , p_amb_context_code        => l_amb_context_code
12798         , p_entity_code             => 'EXPENDITURES'
12799         , p_event_class_code        => 'BURDEN_COST'
12800         , p_side                    => 'NA'
12801         );
12802 
12803   END IF;
12804 
12805    --
12806    --
12807    END IF;
12808    --
12809    -- Bug 4922099
12810    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12811           (NVL(l_enc_upg_option, 'N') = 'O')
12812         ) AND
12813         (l_bflow_method_code = 'PRIOR_ENTRY')
12814       )
12815    THEN
12816       IF
12817       --
12818       1 = 2
12819       --
12820       THEN
12824                                     ,p_token_1                 => 'LINE_NUMBER'
12821       xla_accounting_err_pkg.build_message
12822                                     (p_appli_s_name            => 'XLA'
12823                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12825                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12826                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12827                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12828                                                                              l_component_type
12829                                                                             ,l_component_code
12830                                                                             ,l_component_type_code
12831                                                                             ,l_component_appl_id
12832                                                                             ,l_amb_context_code
12833                                                                             ,l_entity_code
12834                                                                             ,l_event_class_code
12835                                                                            )
12836                                     ,p_token_3                 => 'OWNER'
12837                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12838                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12839                                                                           ,p_lookup_code    => l_component_type_code
12840                                                                          )
12841                                     ,p_token_4                 => 'PRODUCT_NAME'
12842                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12843                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12844                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12845                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12846                                     ,p_ae_header_id            =>  NULL
12847                                        );
12848 
12849         IF (C_LEVEL_ERROR>= g_log_level) THEN
12850                  trace
12851                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12852                       ,p_level    => C_LEVEL_ERROR
12853                       ,p_module   => l_log_module);
12854         END IF;
12855       END IF;
12856    END IF;
12857    --
12858    --
12859    ------------------------------------------------------------------------------------------------
12860    -- 4219869 Business Flow
12861    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12862    -- Prior Entry.  Currently, the following code is always generated.
12863    ------------------------------------------------------------------------------------------------
12864    XLA_AE_LINES_PKG.ValidateCurrentLine;
12865 
12866    ------------------------------------------------------------------------------------
12867    -- 4219869 Business Flow
12868    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12869    ------------------------------------------------------------------------------------
12870    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12871 
12872    ----------------------------------------------------------------------------------
12873    -- 4219869 Business Flow
12874    -- Update journal entry status -- Need to generate this within IF <condition>
12875    ----------------------------------------------------------------------------------
12876    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12877          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12878          ,p_balance_type_code => l_balance_type_code
12879          );
12880 
12881    -------------------------------------------------------------------------------------------
12882    -- 4262811 - Generate the Accrual Reversal lines
12883    -------------------------------------------------------------------------------------------
12884    BEGIN
12885       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12886                               (g_array_event(p_event_id).array_value_num('header_index'));
12887       IF l_acc_rev_flag IS NULL THEN
12888          l_acc_rev_flag := 'N';
12889       END IF;
12890    EXCEPTION
12891       WHEN OTHERS THEN
12892          l_acc_rev_flag := 'N';
12893    END;
12894    --
12895    IF (l_acc_rev_flag = 'Y') THEN
12896 
12897        -- 4645092  ------------------------------------------------------------------------------
12898        -- To allow MPA report to determine if it should generate report process
12899        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12900        ------------------------------------------------------------------------------------------
12901 
12902        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12903        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12904 
12905        --
12906        -- Update the line information that should be overwritten
12907        --
12908        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12909                                          p_header_num   => 1);
12910        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12911 
12912        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12913 
12914        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12915           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12916        END IF;
12917 
12921       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12918       --
12919       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12920       --
12922           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12923       ELSE
12924           ---------------------------------------------------------------------------------------------------
12925           -- 4262811a Switch Sign
12926           ---------------------------------------------------------------------------------------------------
12927           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12928           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12929                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12930           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12931                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12932           -- 5132302
12933           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12934                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12935 
12936       END IF;
12937 
12938       -- 4955764
12939       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12940       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12941 
12942 
12943       XLA_AE_LINES_PKG.ValidateCurrentLine;
12944       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12945 
12946       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12947                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12948                ,p_balance_type_code => l_balance_type_code);
12949 
12950    END IF;
12951 
12952    -----------------------------------------------------------------------------------------
12953    -- 4262811 Multiperiod Accounting
12954    -----------------------------------------------------------------------------------------
12955      -- No MPA option is assigned.
12956 
12957 
12958 END IF;
12959 END IF;
12960 --
12961 
12962 --
12963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12964    trace
12965       (p_msg      => 'END of AcctLineType_43'
12966       ,p_level    => C_LEVEL_PROCEDURE
12967       ,p_module   => l_log_module);
12968 END IF;
12969 --
12970 EXCEPTION
12971   WHEN xla_exceptions_pkg.application_exception THEN
12972       RAISE;
12973   WHEN OTHERS THEN
12974        xla_exceptions_pkg.raise_message
12975            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_43');
12976 END AcctLineType_43;
12977 --
12978 
12979 ---------------------------------------
12980 --
12981 -- PRIVATE FUNCTION
12982 --         AcctLineType_44
12983 --
12984 ---------------------------------------
12985 PROCEDURE AcctLineType_44 (
12986   p_application_id        IN NUMBER
12987  ,p_event_id              IN NUMBER
12988  ,p_calculate_acctd_flag  IN VARCHAR2
12989  ,p_calculate_g_l_flag    IN VARCHAR2
12990  ,p_actual_flag           IN OUT VARCHAR2
12991  ,p_balance_type_code     OUT VARCHAR2
12992  ,p_gain_or_loss_ref      OUT VARCHAR2
12993  
12994 --Revenue CCID
12995  , p_source_19            IN NUMBER
12996 --Actual Upgrade Credit Accounting Class
12997  , p_source_24            IN VARCHAR2
12998 --Entered Currency Code
12999  , p_source_26            IN VARCHAR2
13000 --Exchange Rate Date
13001  , p_source_28            IN DATE
13002 --Exchange Rate
13003  , p_source_29            IN NUMBER
13004 --Exchange Rate Type
13005  , p_source_30            IN VARCHAR2
13006 --Actual Upgrade Debit Accounting Class
13007  , p_source_31            IN VARCHAR2
13008 --Use Actuals Upgrade Attributes Flag
13009  , p_source_32            IN VARCHAR2
13010 --Entered Amount
13011  , p_source_42            IN NUMBER
13012 --Accounted Amount
13013  , p_source_43            IN NUMBER
13014 --Revenue Distribution Type
13015  , p_source_46            IN VARCHAR2
13016 --Crediting Revenue Flag
13017  , p_source_48            IN VARCHAR2
13018 --Revenue First Distribution ID
13019  , p_source_49            IN NUMBER
13020 --Revenue Second Distribution ID
13021  , p_source_50            IN NUMBER
13022 --Event ID
13023  , p_source_51            IN NUMBER
13024 --Actual Upgrade Credit CCID
13025  , p_source_64            IN NUMBER
13026 --Actual Upgrade Debit CCID
13027  , p_source_65            IN NUMBER
13028 --Application ID
13029  , p_source_66            IN NUMBER
13030 --Revenue Entity Code
13031  , p_source_67            IN VARCHAR2
13032 --Crediting Revenue First Distribution ID
13033  , p_source_68            IN NUMBER
13034 --Project ID
13035  , p_source_69            IN NUMBER
13036 --Crediting Revenue Second Distribution ID
13037  , p_source_70            IN NUMBER
13038 --Draft Revenue Number Credited
13039  , p_source_71            IN NUMBER
13040 )
13041 IS
13042 
13043 l_component_type              VARCHAR2(80);
13044 l_component_code              VARCHAR2(30);
13045 l_component_type_code         VARCHAR2(1);
13046 l_component_appl_id           INTEGER;
13047 l_amb_context_code            VARCHAR2(30);
13048 l_entity_code                 VARCHAR2(30);
13049 l_event_class_code            VARCHAR2(30);
13050 l_ae_header_id                NUMBER;
13051 l_event_type_code             VARCHAR2(30);
13052 l_line_definition_code        VARCHAR2(30);
13053 l_line_definition_owner_code  VARCHAR2(1);
13054 --
13055 -- adr variables
13056 l_segment                     VARCHAR2(30);
13060 l_adr_flexfield_segment_code  VARCHAR2(30);
13057 l_ccid                        NUMBER;
13058 l_adr_transaction_coa_id      NUMBER;
13059 l_adr_accounting_coa_id       NUMBER;
13061 l_adr_flex_value_set_id       NUMBER;
13062 l_adr_value_type_code         VARCHAR2(30);
13063 l_adr_value_combination_id    NUMBER;
13064 l_adr_value_segment_code      VARCHAR2(30);
13065 
13066 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13067 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13068 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13069 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13070 
13071 -- 4262811 Variables ------------------------------------------------------------------------------------------
13072 l_entered_amt_idx             NUMBER;
13073 l_accted_amt_idx              NUMBER;
13074 l_acc_rev_flag                VARCHAR2(1);
13075 l_accrual_line_num            NUMBER;
13076 l_tmp_amt                     NUMBER;
13077 l_acc_rev_natural_side_code   VARCHAR2(1);
13078 
13079 l_num_entries                 NUMBER;
13080 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13081 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13082 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13083 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13084 l_recog_line_1                NUMBER;
13085 l_recog_line_2                NUMBER;
13086 
13087 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13088 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13089 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13090 
13091 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13092 
13093 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13094 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13095 
13096 ---------------------------------------------------------------------------------------------------------------
13097 
13098 
13099 --
13100 -- bulk performance
13101 --
13102 l_balance_type_code           VARCHAR2(1);
13103 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13104 l_log_module                  VARCHAR2(240);
13105 
13106 --
13107 -- Upgrade strategy
13108 --
13109 l_actual_upg_option           VARCHAR2(1);
13110 l_enc_upg_option           VARCHAR2(1);
13111 
13112 --
13113 BEGIN
13114 --
13115 IF g_log_enabled THEN
13116       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
13117 END IF;
13118 --
13119 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13120 
13121       trace
13122          (p_msg      => 'BEGIN of AcctLineType_44'
13123          ,p_level    => C_LEVEL_PROCEDURE
13124          ,p_module   => l_log_module);
13125 
13126 END IF;
13127 --
13128 l_component_type             := 'AMB_JLT';
13129 l_component_code             := 'PA_COST_REV_ADJ_FED';
13130 l_component_type_code        := 'S';
13131 l_component_appl_id          :=  275;
13132 l_amb_context_code           := 'DEFAULT';
13133 l_entity_code                := 'REVENUE';
13134 l_event_class_code           := 'REVENUE_ADJ';
13135 l_event_type_code            := 'REVENUE_ADJ_ALL';
13136 l_line_definition_owner_code := 'S';
13137 l_line_definition_code       := 'FV_PROJECTS_JLD';
13138 --
13139 l_balance_type_code          := 'A';
13140 l_segment                     := NULL;
13141 l_ccid                        := NULL;
13142 l_adr_transaction_coa_id      := NULL;
13143 l_adr_accounting_coa_id       := NULL;
13144 l_adr_flexfield_segment_code  := NULL;
13145 l_adr_flex_value_set_id       := NULL;
13146 l_adr_value_type_code         := NULL;
13147 l_adr_value_combination_id    := NULL;
13148 l_adr_value_segment_code      := NULL;
13149 
13150 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13151 l_bflow_class_code           := '';    -- 4219869 Business Flow
13152 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13153 l_budgetary_control_flag     := 'N';
13154 
13155 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13156 l_bflow_applied_to_amt       := NULL; -- 5132302
13157 l_entered_amt_idx            := NULL;          -- 4262811
13158 l_accted_amt_idx             := NULL;          -- 4262811
13159 l_acc_rev_flag               := NULL;          -- 4262811
13160 l_accrual_line_num           := NULL;          -- 4262811
13161 l_tmp_amt                    := NULL;          -- 4262811
13162 --
13163  
13164 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13165     l_balance_type_code <> 'B' THEN
13166 IF NVL(p_source_46,'
13167 ') =  'Revenue - Normal Revenue' AND 
13168 NVL(p_source_48,'
13169 ') =  'Y'
13170  THEN 
13171 
13172    --
13173    XLA_AE_LINES_PKG.SetNewLine;
13174 
13175    p_balance_type_code          := l_balance_type_code;
13176    -- set the flag so later we will know whether the gain loss line needs to be created
13177    
13178    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13179      p_actual_flag :='A';
13180    END IF;
13181 
13182    --
13183    -- bulk performance
13184    --
13185    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13186                                       p_header_num   => 0); -- 4262811
13187    --
13188    -- set accounting line options
13189    --
13190    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13191            p_natural_side_code          => 'D'
13192          , p_gain_or_loss_flag          => 'N'
13193          , p_gl_transfer_mode_code      => 'S'
13194          , p_acct_entry_type_code       => 'A'
13198    --
13195          , p_switch_side_flag           => 'Y'
13196          , p_merge_duplicate_code       => 'N'
13197          );
13199    l_acc_rev_natural_side_code := 'C';  -- 4262811
13200    -- 
13201    --
13202    -- set accounting line type info
13203    --
13204    xla_ae_lines_pkg.SetAcctLineType
13205       (p_component_type             => l_component_type
13206       ,p_event_type_code            => l_event_type_code
13207       ,p_line_definition_owner_code => l_line_definition_owner_code
13208       ,p_line_definition_code       => l_line_definition_code
13209       ,p_accounting_line_code       => l_component_code
13210       ,p_accounting_line_type_code  => l_component_type_code
13211       ,p_accounting_line_appl_id    => l_component_appl_id
13212       ,p_amb_context_code           => l_amb_context_code
13213       ,p_entity_code                => l_entity_code
13214       ,p_event_class_code           => l_event_class_code);
13215    --
13216    -- set accounting class
13217    --
13218    xla_ae_lines_pkg.SetAcctClass(
13219            p_accounting_class_code  => 'FEDERAL_REVENUE_ADJUSTMENT'
13220          , p_ae_header_id           => l_ae_header_id
13221          );
13222 
13223    --
13224    -- set rounding class
13225    --
13226    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13227                       'FEDERAL_REVENUE_ADJUSTMENT';
13228 
13229    --
13230    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13231    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13232    --
13233    -- bulk performance
13234    --
13235    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13236 
13237    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13238       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13239 
13240    -- 4955764
13241    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13242       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13243 
13244    -- 4458381 Public Sector Enh
13245    
13246    --
13247    -- set accounting attributes for the line type
13248    --
13249    l_entered_amt_idx := 28;
13250    l_accted_amt_idx  := 31;
13251    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13252    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
13253    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
13254    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
13255    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
13256    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
13257    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
13258    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
13259    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
13260    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
13261    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
13262    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
13263    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
13264    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
13265    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
13266    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
13267    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
13268    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
13269    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
13270    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
13271    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
13272    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
13273    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
13274    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
13275    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
13276    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
13277    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
13278    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
13279    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
13280    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
13281    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
13282    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
13283    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
13284    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
13285    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
13286    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
13287    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
13288    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
13289    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
13290    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
13291    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
13292    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
13293    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
13294    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
13295    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
13296    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
13297    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
13298    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
13299    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
13300    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
13301    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
13305    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
13302    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
13303    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
13304    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
13306    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
13307    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
13308    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
13309    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
13310    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
13311    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
13312    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
13313    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
13314 
13315    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13316    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13317 
13318    ---------------------------------------------------------------------------------------------------------------
13319    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13320    ---------------------------------------------------------------------------------------------------------------
13321    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13322 
13323    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13324    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13325 
13326    IF xla_accounting_cache_pkg.GetValueChar
13327          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13328          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13329    AND l_bflow_method_code = 'PRIOR_ENTRY'
13330 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13331    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13332          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13333        )
13334    THEN
13335          xla_ae_lines_pkg.BflowUpgEntry
13336            (p_business_method_code    => l_bflow_method_code
13337            ,p_business_class_code     => l_bflow_class_code
13338            ,p_balance_type            => l_balance_type_code);
13339    ELSE
13340       NULL;
13341 -- No business flow processing for business flow method of NONE.
13342    END IF;
13343 
13344    --
13345    -- call analytical criteria
13346    --
13347    
13348    --
13349    -- call description
13350    --
13351    -- No description or it is inherited.
13352    --
13353    -- call ADRs
13354    -- Bug 4922099
13355    --
13356    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13357         (NVL(l_actual_upg_option, 'N') = 'O') OR
13358         (NVL(l_enc_upg_option, 'N') = 'O')
13359       )
13360    THEN
13361    NULL;
13362    --
13363    --
13364    
13365   l_ccid := AcctDerRule_26(
13366            p_application_id           => p_application_id
13367          , p_ae_header_id             => l_ae_header_id 
13368 , p_source_19 => p_source_19
13369          , x_transaction_coa_id       => l_adr_transaction_coa_id
13370          , x_accounting_coa_id        => l_adr_accounting_coa_id
13371          , x_value_type_code          => l_adr_value_type_code
13372          , p_side                     => 'NA'
13373    );
13374 
13375    xla_ae_lines_pkg.set_ccid(
13376     p_code_combination_id          => l_ccid
13377   , p_value_type_code              => l_adr_value_type_code
13378   , p_transaction_coa_id           => l_adr_transaction_coa_id
13379   , p_accounting_coa_id            => l_adr_accounting_coa_id
13380   , p_adr_code                     => 'REVENUE_RULE'
13381   , p_adr_type_code                => 'S'
13382   , p_component_type               => l_component_type
13383   , p_component_code               => l_component_code
13384   , p_component_type_code          => l_component_type_code
13385   , p_component_appl_id            => l_component_appl_id
13386   , p_amb_context_code             => l_amb_context_code
13387   , p_side                         => 'NA'
13388   );
13389 
13390 
13391    l_segment := AcctDerRule_2(
13392            p_application_id           => p_application_id
13393          , p_ae_header_id             => l_ae_header_id 
13394          , x_transaction_coa_id       => l_adr_transaction_coa_id
13395          , x_accounting_coa_id        => l_adr_accounting_coa_id
13396          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
13397          , x_flex_value_set_id        => l_adr_flex_value_set_id
13398          , x_value_type_code          => l_adr_value_type_code
13399          , x_value_combination_id     => l_adr_value_combination_id
13400          , x_value_segment_code       => l_adr_value_segment_code
13401          , p_side                     => 'NA'
13402          , p_override_seg_flag        => 'Y'
13403    );
13404 
13405    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
13406 
13407       xla_ae_lines_pkg.set_segment(
13408           p_to_segment_code         => 'GL_ACCOUNT'
13409         , p_segment_value           => l_segment
13410         , p_from_segment_code       => l_adr_value_segment_code
13411         , p_from_combination_id     => l_adr_value_combination_id
13412         , p_value_type_code         => l_adr_value_type_code
13413         , p_transaction_coa_id      => l_adr_transaction_coa_id
13414         , p_accounting_coa_id       => l_adr_accounting_coa_id
13415         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
13416         , p_flex_value_set_id       => l_adr_flex_value_set_id
13417         , p_adr_code                => 'FV_422X01_PROJECTS'
13418         , p_adr_type_code           => 'S'
13419         , p_component_type          => l_component_type
13423         , p_amb_context_code        => l_amb_context_code
13420         , p_component_code          => l_component_code
13421         , p_component_type_code     => l_component_type_code
13422         , p_component_appl_id       => l_component_appl_id
13424         , p_entity_code             => 'REVENUE'
13425         , p_event_class_code        => 'REVENUE_ADJ'
13426         , p_side                    => 'NA'
13427         );
13428 
13429   END IF;
13430 
13431    --
13432    --
13433    END IF;
13434    --
13435    -- Bug 4922099
13436    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13437           (NVL(l_enc_upg_option, 'N') = 'O')
13438         ) AND
13439         (l_bflow_method_code = 'PRIOR_ENTRY')
13440       )
13441    THEN
13442       IF
13443       --
13444       1 = 2
13445       --
13446       THEN
13447       xla_accounting_err_pkg.build_message
13448                                     (p_appli_s_name            => 'XLA'
13449                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13450                                     ,p_token_1                 => 'LINE_NUMBER'
13451                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13452                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13453                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13454                                                                              l_component_type
13455                                                                             ,l_component_code
13456                                                                             ,l_component_type_code
13457                                                                             ,l_component_appl_id
13458                                                                             ,l_amb_context_code
13459                                                                             ,l_entity_code
13460                                                                             ,l_event_class_code
13461                                                                            )
13462                                     ,p_token_3                 => 'OWNER'
13463                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13464                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13465                                                                           ,p_lookup_code    => l_component_type_code
13466                                                                          )
13467                                     ,p_token_4                 => 'PRODUCT_NAME'
13468                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13469                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13470                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13471                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13472                                     ,p_ae_header_id            =>  NULL
13473                                        );
13474 
13475         IF (C_LEVEL_ERROR>= g_log_level) THEN
13476                  trace
13477                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13478                       ,p_level    => C_LEVEL_ERROR
13479                       ,p_module   => l_log_module);
13480         END IF;
13481       END IF;
13482    END IF;
13483    --
13484    --
13485    ------------------------------------------------------------------------------------------------
13486    -- 4219869 Business Flow
13487    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13488    -- Prior Entry.  Currently, the following code is always generated.
13489    ------------------------------------------------------------------------------------------------
13490    XLA_AE_LINES_PKG.ValidateCurrentLine;
13491 
13492    ------------------------------------------------------------------------------------
13493    -- 4219869 Business Flow
13494    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13495    ------------------------------------------------------------------------------------
13496    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13497 
13498    ----------------------------------------------------------------------------------
13499    -- 4219869 Business Flow
13500    -- Update journal entry status -- Need to generate this within IF <condition>
13501    ----------------------------------------------------------------------------------
13502    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13503          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13504          ,p_balance_type_code => l_balance_type_code
13505          );
13506 
13507    -------------------------------------------------------------------------------------------
13508    -- 4262811 - Generate the Accrual Reversal lines
13509    -------------------------------------------------------------------------------------------
13510    BEGIN
13511       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13512                               (g_array_event(p_event_id).array_value_num('header_index'));
13513       IF l_acc_rev_flag IS NULL THEN
13514          l_acc_rev_flag := 'N';
13515       END IF;
13516    EXCEPTION
13517       WHEN OTHERS THEN
13518          l_acc_rev_flag := 'N';
13519    END;
13520    --
13521    IF (l_acc_rev_flag = 'Y') THEN
13522 
13523        -- 4645092  ------------------------------------------------------------------------------
13524        -- To allow MPA report to determine if it should generate report process
13525        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13529        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13526        ------------------------------------------------------------------------------------------
13527 
13528        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13530 
13531        --
13532        -- Update the line information that should be overwritten
13533        --
13534        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13535                                          p_header_num   => 1);
13536        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13537 
13538        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13539 
13540        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13541           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13542        END IF;
13543 
13544       --
13545       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13546       --
13547       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13548           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13549       ELSE
13550           ---------------------------------------------------------------------------------------------------
13551           -- 4262811a Switch Sign
13552           ---------------------------------------------------------------------------------------------------
13553           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13554           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13555                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13556           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13557                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13558           -- 5132302
13559           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13560                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13561 
13562       END IF;
13563 
13564       -- 4955764
13565       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13566       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13567 
13568 
13569       XLA_AE_LINES_PKG.ValidateCurrentLine;
13570       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13571 
13572       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13573                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13574                ,p_balance_type_code => l_balance_type_code);
13575 
13576    END IF;
13577 
13578    -----------------------------------------------------------------------------------------
13579    -- 4262811 Multiperiod Accounting
13580    -----------------------------------------------------------------------------------------
13581      -- No MPA option is assigned.
13582 
13583 
13584 END IF;
13585 END IF;
13586 --
13587 
13588 --
13589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13590    trace
13591       (p_msg      => 'END of AcctLineType_44'
13592       ,p_level    => C_LEVEL_PROCEDURE
13593       ,p_module   => l_log_module);
13594 END IF;
13595 --
13596 EXCEPTION
13597   WHEN xla_exceptions_pkg.application_exception THEN
13598       RAISE;
13599   WHEN OTHERS THEN
13600        xla_exceptions_pkg.raise_message
13601            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_44');
13602 END AcctLineType_44;
13603 --
13604 
13605 ---------------------------------------
13606 --
13607 -- PRIVATE FUNCTION
13608 --         AcctLineType_45
13609 --
13610 ---------------------------------------
13611 PROCEDURE AcctLineType_45 (
13612   p_application_id        IN NUMBER
13613  ,p_event_id              IN NUMBER
13614  ,p_calculate_acctd_flag  IN VARCHAR2
13615  ,p_calculate_g_l_flag    IN VARCHAR2
13616  ,p_actual_flag           IN OUT VARCHAR2
13617  ,p_balance_type_code     OUT VARCHAR2
13618  ,p_gain_or_loss_ref      OUT VARCHAR2
13619  
13620 --Revenue CCID
13621  , p_source_19            IN NUMBER
13622 --Entered Currency Code
13623  , p_source_26            IN VARCHAR2
13624 --Entered Amount
13625  , p_source_42            IN NUMBER
13626 --Accounted Amount
13627  , p_source_43            IN NUMBER
13628 --Revenue Distribution Type
13629  , p_source_46            IN VARCHAR2
13630 --Crediting Revenue Flag
13631  , p_source_48            IN VARCHAR2
13632 --Revenue First Distribution ID
13633  , p_source_49            IN NUMBER
13634 --Revenue Second Distribution ID
13635  , p_source_50            IN NUMBER
13636 --Event ID
13637  , p_source_51            IN NUMBER
13638 )
13639 IS
13640 
13641 l_component_type              VARCHAR2(80);
13642 l_component_code              VARCHAR2(30);
13643 l_component_type_code         VARCHAR2(1);
13644 l_component_appl_id           INTEGER;
13645 l_amb_context_code            VARCHAR2(30);
13646 l_entity_code                 VARCHAR2(30);
13647 l_event_class_code            VARCHAR2(30);
13648 l_ae_header_id                NUMBER;
13649 l_event_type_code             VARCHAR2(30);
13650 l_line_definition_code        VARCHAR2(30);
13651 l_line_definition_owner_code  VARCHAR2(1);
13652 --
13653 -- adr variables
13654 l_segment                     VARCHAR2(30);
13655 l_ccid                        NUMBER;
13656 l_adr_transaction_coa_id      NUMBER;
13657 l_adr_accounting_coa_id       NUMBER;
13658 l_adr_flexfield_segment_code  VARCHAR2(30);
13662 l_adr_value_segment_code      VARCHAR2(30);
13659 l_adr_flex_value_set_id       NUMBER;
13660 l_adr_value_type_code         VARCHAR2(30);
13661 l_adr_value_combination_id    NUMBER;
13663 
13664 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13665 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13666 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13667 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13668 
13669 -- 4262811 Variables ------------------------------------------------------------------------------------------
13670 l_entered_amt_idx             NUMBER;
13671 l_accted_amt_idx              NUMBER;
13672 l_acc_rev_flag                VARCHAR2(1);
13673 l_accrual_line_num            NUMBER;
13674 l_tmp_amt                     NUMBER;
13675 l_acc_rev_natural_side_code   VARCHAR2(1);
13676 
13677 l_num_entries                 NUMBER;
13678 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13679 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13680 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13681 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13682 l_recog_line_1                NUMBER;
13683 l_recog_line_2                NUMBER;
13684 
13685 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13686 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13687 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13688 
13689 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13690 
13691 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13692 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13693 
13694 ---------------------------------------------------------------------------------------------------------------
13695 
13696 
13697 --
13698 -- bulk performance
13699 --
13700 l_balance_type_code           VARCHAR2(1);
13701 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13702 l_log_module                  VARCHAR2(240);
13703 
13704 --
13705 -- Upgrade strategy
13706 --
13707 l_actual_upg_option           VARCHAR2(1);
13708 l_enc_upg_option           VARCHAR2(1);
13709 
13710 --
13711 BEGIN
13712 --
13713 IF g_log_enabled THEN
13714       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
13715 END IF;
13716 --
13717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13718 
13719       trace
13720          (p_msg      => 'BEGIN of AcctLineType_45'
13721          ,p_level    => C_LEVEL_PROCEDURE
13722          ,p_module   => l_log_module);
13723 
13724 END IF;
13725 --
13726 l_component_type             := 'AMB_JLT';
13727 l_component_code             := 'PA_COST_REV_FED';
13728 l_component_type_code        := 'S';
13729 l_component_appl_id          :=  275;
13730 l_amb_context_code           := 'DEFAULT';
13731 l_entity_code                := 'REVENUE';
13732 l_event_class_code           := 'REVENUE';
13733 l_event_type_code            := 'REVENUE_ALL';
13734 l_line_definition_owner_code := 'S';
13735 l_line_definition_code       := 'FV_PROJECTS_JLD';
13736 --
13737 l_balance_type_code          := 'A';
13738 l_segment                     := NULL;
13739 l_ccid                        := NULL;
13740 l_adr_transaction_coa_id      := NULL;
13741 l_adr_accounting_coa_id       := NULL;
13742 l_adr_flexfield_segment_code  := NULL;
13743 l_adr_flex_value_set_id       := NULL;
13744 l_adr_value_type_code         := NULL;
13745 l_adr_value_combination_id    := NULL;
13746 l_adr_value_segment_code      := NULL;
13747 
13748 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13749 l_bflow_class_code           := '';    -- 4219869 Business Flow
13750 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13751 l_budgetary_control_flag     := 'N';
13752 
13753 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13754 l_bflow_applied_to_amt       := NULL; -- 5132302
13755 l_entered_amt_idx            := NULL;          -- 4262811
13756 l_accted_amt_idx             := NULL;          -- 4262811
13757 l_acc_rev_flag               := NULL;          -- 4262811
13758 l_accrual_line_num           := NULL;          -- 4262811
13759 l_tmp_amt                    := NULL;          -- 4262811
13760 --
13761  
13762 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13763     l_balance_type_code <> 'B' THEN
13764 IF NVL(p_source_46,'
13765 ') =  'Revenue - Normal Revenue' AND 
13766 NVL(p_source_48,'
13767 ') =  'N'
13768  THEN 
13769 
13770    --
13771    XLA_AE_LINES_PKG.SetNewLine;
13772 
13773    p_balance_type_code          := l_balance_type_code;
13774    -- set the flag so later we will know whether the gain loss line needs to be created
13775    
13776    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13777      p_actual_flag :='A';
13778    END IF;
13779 
13780    --
13781    -- bulk performance
13782    --
13783    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13784                                       p_header_num   => 0); -- 4262811
13785    --
13786    -- set accounting line options
13787    --
13788    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13789            p_natural_side_code          => 'C'
13790          , p_gain_or_loss_flag          => 'N'
13791          , p_gl_transfer_mode_code      => 'S'
13792          , p_acct_entry_type_code       => 'A'
13793          , p_switch_side_flag           => 'Y'
13794          , p_merge_duplicate_code       => 'N'
13795          );
13796    --
13797    l_acc_rev_natural_side_code := 'D';  -- 4262811
13798    -- 
13802    xla_ae_lines_pkg.SetAcctLineType
13799    --
13800    -- set accounting line type info
13801    --
13803       (p_component_type             => l_component_type
13804       ,p_event_type_code            => l_event_type_code
13805       ,p_line_definition_owner_code => l_line_definition_owner_code
13806       ,p_line_definition_code       => l_line_definition_code
13807       ,p_accounting_line_code       => l_component_code
13808       ,p_accounting_line_type_code  => l_component_type_code
13809       ,p_accounting_line_appl_id    => l_component_appl_id
13810       ,p_amb_context_code           => l_amb_context_code
13811       ,p_entity_code                => l_entity_code
13812       ,p_event_class_code           => l_event_class_code);
13813    --
13814    -- set accounting class
13815    --
13816    xla_ae_lines_pkg.SetAcctClass(
13817            p_accounting_class_code  => 'FEDERAL_REVENUE'
13818          , p_ae_header_id           => l_ae_header_id
13819          );
13820 
13821    --
13822    -- set rounding class
13823    --
13824    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13825                       'FEDERAL_REVENUE';
13826 
13827    --
13828    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13829    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13830    --
13831    -- bulk performance
13832    --
13833    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13834 
13835    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13836       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13837 
13838    -- 4955764
13839    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13841 
13842    -- 4458381 Public Sector Enh
13843    
13844    --
13845    -- set accounting attributes for the line type
13846    --
13847    l_entered_amt_idx := 4;
13848    l_accted_amt_idx  := 7;
13849    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13850    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13851    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
13852    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
13853    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
13854    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
13855    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
13856    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
13857    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
13858    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
13859    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
13860    l_rec_acct_attrs.array_acct_attr_code(6) := 'GAIN_LOSS_REFERENCE';
13861    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_51);
13862    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
13863    l_rec_acct_attrs.array_num_value(7)  := p_source_43;
13864 
13865    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13866    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13867 
13868    ---------------------------------------------------------------------------------------------------------------
13869    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13870    ---------------------------------------------------------------------------------------------------------------
13871    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13872 
13873    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13874    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13875 
13876    IF xla_accounting_cache_pkg.GetValueChar
13877          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13878          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13879    AND l_bflow_method_code = 'PRIOR_ENTRY'
13880 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13881    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13882          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13883        )
13884    THEN
13885          xla_ae_lines_pkg.BflowUpgEntry
13886            (p_business_method_code    => l_bflow_method_code
13887            ,p_business_class_code     => l_bflow_class_code
13888            ,p_balance_type            => l_balance_type_code);
13889    ELSE
13890       NULL;
13891 -- No business flow processing for business flow method of NONE.
13892    END IF;
13893 
13894    --
13895    -- call analytical criteria
13896    --
13897    
13898    --
13899    -- call description
13900    --
13901    -- No description or it is inherited.
13902    --
13903    -- call ADRs
13904    -- Bug 4922099
13905    --
13906    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13907         (NVL(l_actual_upg_option, 'N') = 'O') OR
13908         (NVL(l_enc_upg_option, 'N') = 'O')
13909       )
13910    THEN
13911    NULL;
13912    --
13913    --
13914    
13915   l_ccid := AcctDerRule_26(
13916            p_application_id           => p_application_id
13917          , p_ae_header_id             => l_ae_header_id 
13918 , p_source_19 => p_source_19
13919          , x_transaction_coa_id       => l_adr_transaction_coa_id
13920          , x_accounting_coa_id        => l_adr_accounting_coa_id
13921          , x_value_type_code          => l_adr_value_type_code
13922          , p_side                     => 'NA'
13923    );
13927   , p_value_type_code              => l_adr_value_type_code
13924 
13925    xla_ae_lines_pkg.set_ccid(
13926     p_code_combination_id          => l_ccid
13928   , p_transaction_coa_id           => l_adr_transaction_coa_id
13929   , p_accounting_coa_id            => l_adr_accounting_coa_id
13930   , p_adr_code                     => 'REVENUE_RULE'
13931   , p_adr_type_code                => 'S'
13932   , p_component_type               => l_component_type
13933   , p_component_code               => l_component_code
13934   , p_component_type_code          => l_component_type_code
13935   , p_component_appl_id            => l_component_appl_id
13936   , p_amb_context_code             => l_amb_context_code
13937   , p_side                         => 'NA'
13938   );
13939 
13940 
13941    l_segment := AcctDerRule_2(
13942            p_application_id           => p_application_id
13943          , p_ae_header_id             => l_ae_header_id 
13944          , x_transaction_coa_id       => l_adr_transaction_coa_id
13945          , x_accounting_coa_id        => l_adr_accounting_coa_id
13946          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
13947          , x_flex_value_set_id        => l_adr_flex_value_set_id
13948          , x_value_type_code          => l_adr_value_type_code
13949          , x_value_combination_id     => l_adr_value_combination_id
13950          , x_value_segment_code       => l_adr_value_segment_code
13951          , p_side                     => 'NA'
13952          , p_override_seg_flag        => 'Y'
13953    );
13954 
13955    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
13956 
13957       xla_ae_lines_pkg.set_segment(
13958           p_to_segment_code         => 'GL_ACCOUNT'
13959         , p_segment_value           => l_segment
13960         , p_from_segment_code       => l_adr_value_segment_code
13961         , p_from_combination_id     => l_adr_value_combination_id
13962         , p_value_type_code         => l_adr_value_type_code
13963         , p_transaction_coa_id      => l_adr_transaction_coa_id
13964         , p_accounting_coa_id       => l_adr_accounting_coa_id
13965         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
13966         , p_flex_value_set_id       => l_adr_flex_value_set_id
13967         , p_adr_code                => 'FV_422X01_PROJECTS'
13968         , p_adr_type_code           => 'S'
13969         , p_component_type          => l_component_type
13970         , p_component_code          => l_component_code
13971         , p_component_type_code     => l_component_type_code
13972         , p_component_appl_id       => l_component_appl_id
13973         , p_amb_context_code        => l_amb_context_code
13974         , p_entity_code             => 'REVENUE'
13975         , p_event_class_code        => 'REVENUE'
13976         , p_side                    => 'NA'
13977         );
13978 
13979   END IF;
13980 
13981    --
13982    --
13983    END IF;
13984    --
13985    -- Bug 4922099
13986    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13987           (NVL(l_enc_upg_option, 'N') = 'O')
13988         ) AND
13989         (l_bflow_method_code = 'PRIOR_ENTRY')
13990       )
13991    THEN
13992       IF
13993       --
13994       1 = 2
13995       --
13996       THEN
13997       xla_accounting_err_pkg.build_message
13998                                     (p_appli_s_name            => 'XLA'
13999                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14000                                     ,p_token_1                 => 'LINE_NUMBER'
14001                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14002                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14003                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14004                                                                              l_component_type
14005                                                                             ,l_component_code
14006                                                                             ,l_component_type_code
14007                                                                             ,l_component_appl_id
14008                                                                             ,l_amb_context_code
14009                                                                             ,l_entity_code
14010                                                                             ,l_event_class_code
14011                                                                            )
14012                                     ,p_token_3                 => 'OWNER'
14013                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14014                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14015                                                                           ,p_lookup_code    => l_component_type_code
14016                                                                          )
14017                                     ,p_token_4                 => 'PRODUCT_NAME'
14018                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14019                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14020                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14021                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14022                                     ,p_ae_header_id            =>  NULL
14023                                        );
14024 
14025         IF (C_LEVEL_ERROR>= g_log_level) THEN
14026                  trace
14027                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14028                       ,p_level    => C_LEVEL_ERROR
14029                       ,p_module   => l_log_module);
14033    --
14030         END IF;
14031       END IF;
14032    END IF;
14034    --
14035    ------------------------------------------------------------------------------------------------
14036    -- 4219869 Business Flow
14037    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14038    -- Prior Entry.  Currently, the following code is always generated.
14039    ------------------------------------------------------------------------------------------------
14040    XLA_AE_LINES_PKG.ValidateCurrentLine;
14041 
14042    ------------------------------------------------------------------------------------
14043    -- 4219869 Business Flow
14044    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14045    ------------------------------------------------------------------------------------
14046    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14047 
14048    ----------------------------------------------------------------------------------
14049    -- 4219869 Business Flow
14050    -- Update journal entry status -- Need to generate this within IF <condition>
14051    ----------------------------------------------------------------------------------
14052    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14053          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14054          ,p_balance_type_code => l_balance_type_code
14055          );
14056 
14057    -------------------------------------------------------------------------------------------
14058    -- 4262811 - Generate the Accrual Reversal lines
14059    -------------------------------------------------------------------------------------------
14060    BEGIN
14061       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14062                               (g_array_event(p_event_id).array_value_num('header_index'));
14063       IF l_acc_rev_flag IS NULL THEN
14064          l_acc_rev_flag := 'N';
14065       END IF;
14066    EXCEPTION
14067       WHEN OTHERS THEN
14068          l_acc_rev_flag := 'N';
14069    END;
14070    --
14071    IF (l_acc_rev_flag = 'Y') THEN
14072 
14073        -- 4645092  ------------------------------------------------------------------------------
14074        -- To allow MPA report to determine if it should generate report process
14075        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14076        ------------------------------------------------------------------------------------------
14077 
14078        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14079        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14080 
14081        --
14082        -- Update the line information that should be overwritten
14083        --
14084        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14085                                          p_header_num   => 1);
14086        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14087 
14088        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14089 
14090        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14091           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14092        END IF;
14093 
14094       --
14095       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14096       --
14097       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14098           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14099       ELSE
14100           ---------------------------------------------------------------------------------------------------
14101           -- 4262811a Switch Sign
14102           ---------------------------------------------------------------------------------------------------
14103           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14104           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14105                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14106           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14107                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14108           -- 5132302
14109           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14110                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14111 
14112       END IF;
14113 
14114       -- 4955764
14115       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14116       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14117 
14118 
14119       XLA_AE_LINES_PKG.ValidateCurrentLine;
14120       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14121 
14122       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14123                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14124                ,p_balance_type_code => l_balance_type_code);
14125 
14126    END IF;
14127 
14128    -----------------------------------------------------------------------------------------
14129    -- 4262811 Multiperiod Accounting
14130    -----------------------------------------------------------------------------------------
14131      -- No MPA option is assigned.
14132 
14133 
14134 END IF;
14135 END IF;
14136 --
14137 
14138 --
14139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14140    trace
14141       (p_msg      => 'END of AcctLineType_45'
14142       ,p_level    => C_LEVEL_PROCEDURE
14143       ,p_module   => l_log_module);
14144 END IF;
14145 --
14146 EXCEPTION
14150        xla_exceptions_pkg.raise_message
14147   WHEN xla_exceptions_pkg.application_exception THEN
14148       RAISE;
14149   WHEN OTHERS THEN
14151            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_45');
14152 END AcctLineType_45;
14153 --
14154 
14155 ---------------------------------------
14156 --
14157 -- PRIVATE FUNCTION
14158 --         AcctLineType_46
14159 --
14160 ---------------------------------------
14161 PROCEDURE AcctLineType_46 (
14162   p_application_id        IN NUMBER
14163  ,p_event_id              IN NUMBER
14164  ,p_calculate_acctd_flag  IN VARCHAR2
14165  ,p_calculate_g_l_flag    IN VARCHAR2
14166  ,p_actual_flag           IN OUT VARCHAR2
14167  ,p_balance_type_code     OUT VARCHAR2
14168  ,p_gain_or_loss_ref      OUT VARCHAR2
14169  
14170 --Revenue CCID
14171  , p_source_19            IN NUMBER
14172 --Entered Currency Code
14173  , p_source_26            IN VARCHAR2
14174 --Exchange Rate Date
14175  , p_source_28            IN DATE
14176 --Exchange Rate
14177  , p_source_29            IN NUMBER
14178 --Exchange Rate Type
14179  , p_source_30            IN VARCHAR2
14180 --Entered Amount
14181  , p_source_42            IN NUMBER
14182 --Accounted Amount
14183  , p_source_43            IN NUMBER
14184 --Revenue Distribution Type
14185  , p_source_46            IN VARCHAR2
14186 --System Linkage Function
14187  , p_source_47            IN VARCHAR2
14188 --Crediting Revenue Flag
14189  , p_source_48            IN VARCHAR2
14190 --Revenue First Distribution ID
14191  , p_source_49            IN NUMBER
14192 --Revenue Second Distribution ID
14193  , p_source_50            IN NUMBER
14194 --Event ID
14195  , p_source_51            IN NUMBER
14196 )
14197 IS
14198 
14199 l_component_type              VARCHAR2(80);
14200 l_component_code              VARCHAR2(30);
14201 l_component_type_code         VARCHAR2(1);
14202 l_component_appl_id           INTEGER;
14203 l_amb_context_code            VARCHAR2(30);
14204 l_entity_code                 VARCHAR2(30);
14205 l_event_class_code            VARCHAR2(30);
14206 l_ae_header_id                NUMBER;
14207 l_event_type_code             VARCHAR2(30);
14208 l_line_definition_code        VARCHAR2(30);
14209 l_line_definition_owner_code  VARCHAR2(1);
14210 --
14211 -- adr variables
14212 l_segment                     VARCHAR2(30);
14213 l_ccid                        NUMBER;
14214 l_adr_transaction_coa_id      NUMBER;
14215 l_adr_accounting_coa_id       NUMBER;
14216 l_adr_flexfield_segment_code  VARCHAR2(30);
14217 l_adr_flex_value_set_id       NUMBER;
14218 l_adr_value_type_code         VARCHAR2(30);
14219 l_adr_value_combination_id    NUMBER;
14220 l_adr_value_segment_code      VARCHAR2(30);
14221 
14222 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14223 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14224 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14225 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14226 
14227 -- 4262811 Variables ------------------------------------------------------------------------------------------
14228 l_entered_amt_idx             NUMBER;
14229 l_accted_amt_idx              NUMBER;
14230 l_acc_rev_flag                VARCHAR2(1);
14231 l_accrual_line_num            NUMBER;
14232 l_tmp_amt                     NUMBER;
14233 l_acc_rev_natural_side_code   VARCHAR2(1);
14234 
14235 l_num_entries                 NUMBER;
14236 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14237 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14238 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14239 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14240 l_recog_line_1                NUMBER;
14241 l_recog_line_2                NUMBER;
14242 
14243 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14244 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14245 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14246 
14247 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14248 
14249 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14250 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14251 
14252 ---------------------------------------------------------------------------------------------------------------
14253 
14254 
14255 --
14256 -- bulk performance
14257 --
14258 l_balance_type_code           VARCHAR2(1);
14259 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14260 l_log_module                  VARCHAR2(240);
14261 
14262 --
14263 -- Upgrade strategy
14264 --
14265 l_actual_upg_option           VARCHAR2(1);
14266 l_enc_upg_option           VARCHAR2(1);
14267 
14268 --
14269 BEGIN
14270 --
14271 IF g_log_enabled THEN
14272       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
14273 END IF;
14274 --
14275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14276 
14277       trace
14278          (p_msg      => 'BEGIN of AcctLineType_46'
14279          ,p_level    => C_LEVEL_PROCEDURE
14280          ,p_module   => l_log_module);
14281 
14282 END IF;
14283 --
14284 l_component_type             := 'AMB_JLT';
14285 l_component_code             := 'PA_ER_REV';
14286 l_component_type_code        := 'S';
14287 l_component_appl_id          :=  275;
14288 l_amb_context_code           := 'DEFAULT';
14289 l_entity_code                := 'REVENUE';
14290 l_event_class_code           := 'REVENUE';
14291 l_event_type_code            := 'REVENUE_ALL';
14292 l_line_definition_owner_code := 'S';
14296 l_segment                     := NULL;
14293 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
14294 --
14295 l_balance_type_code          := 'A';
14297 l_ccid                        := NULL;
14298 l_adr_transaction_coa_id      := NULL;
14299 l_adr_accounting_coa_id       := NULL;
14300 l_adr_flexfield_segment_code  := NULL;
14301 l_adr_flex_value_set_id       := NULL;
14302 l_adr_value_type_code         := NULL;
14303 l_adr_value_combination_id    := NULL;
14304 l_adr_value_segment_code      := NULL;
14305 
14306 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14307 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
14308 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14309 l_budgetary_control_flag     := 'N';
14310 
14311 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14312 l_bflow_applied_to_amt       := NULL; -- 5132302
14313 l_entered_amt_idx            := NULL;          -- 4262811
14314 l_accted_amt_idx             := NULL;          -- 4262811
14315 l_acc_rev_flag               := NULL;          -- 4262811
14316 l_accrual_line_num           := NULL;          -- 4262811
14317 l_tmp_amt                    := NULL;          -- 4262811
14318 --
14319  
14320 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14321     l_balance_type_code <> 'B' THEN
14322 IF NVL(p_source_46,'
14323 ') =  'Revenue - Normal Revenue' AND 
14324 NVL(p_source_47,'
14325 ') =  'ER' AND 
14326 NVL(p_source_48,'
14327 ') =  'N'
14328  THEN 
14329 
14330    --
14331    XLA_AE_LINES_PKG.SetNewLine;
14332 
14333    p_balance_type_code          := l_balance_type_code;
14334    -- set the flag so later we will know whether the gain loss line needs to be created
14335    
14336    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14337      p_actual_flag :='A';
14338    END IF;
14339 
14340    --
14341    -- bulk performance
14342    --
14343    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14344                                       p_header_num   => 0); -- 4262811
14345    --
14346    -- set accounting line options
14347    --
14348    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14349            p_natural_side_code          => 'C'
14350          , p_gain_or_loss_flag          => 'N'
14351          , p_gl_transfer_mode_code      => 'S'
14352          , p_acct_entry_type_code       => 'A'
14353          , p_switch_side_flag           => 'Y'
14354          , p_merge_duplicate_code       => 'N'
14355          );
14356    --
14357    l_acc_rev_natural_side_code := 'D';  -- 4262811
14358    -- 
14359    --
14360    -- set accounting line type info
14361    --
14362    xla_ae_lines_pkg.SetAcctLineType
14363       (p_component_type             => l_component_type
14364       ,p_event_type_code            => l_event_type_code
14365       ,p_line_definition_owner_code => l_line_definition_owner_code
14366       ,p_line_definition_code       => l_line_definition_code
14367       ,p_accounting_line_code       => l_component_code
14368       ,p_accounting_line_type_code  => l_component_type_code
14369       ,p_accounting_line_appl_id    => l_component_appl_id
14370       ,p_amb_context_code           => l_amb_context_code
14371       ,p_entity_code                => l_entity_code
14372       ,p_event_class_code           => l_event_class_code);
14373    --
14374    -- set accounting class
14375    --
14376    xla_ae_lines_pkg.SetAcctClass(
14377            p_accounting_class_code  => 'REVENUE'
14378          , p_ae_header_id           => l_ae_header_id
14379          );
14380 
14381    --
14382    -- set rounding class
14383    --
14384    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14385                       'REVENUE';
14386 
14387    --
14388    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14389    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14390    --
14391    -- bulk performance
14392    --
14393    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14394 
14395    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14396       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14397 
14398    -- 4955764
14399    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14400       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14401 
14402    -- 4458381 Public Sector Enh
14403    
14404    --
14405    -- set accounting attributes for the line type
14406    --
14407    l_entered_amt_idx := 4;
14408    l_accted_amt_idx  := 10;
14409    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14410    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14411    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
14412    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
14413    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
14414    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
14415    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
14416    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
14417    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
14418    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
14419    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
14420    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
14421    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
14422    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
14423    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
14427    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
14424    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
14425    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
14426    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
14428    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
14429    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
14430 
14431    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14432    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14433 
14434    ---------------------------------------------------------------------------------------------------------------
14435    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14436    ---------------------------------------------------------------------------------------------------------------
14437    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14438 
14439    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14440    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14441 
14442    IF xla_accounting_cache_pkg.GetValueChar
14443          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14444          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14445    AND l_bflow_method_code = 'PRIOR_ENTRY'
14446 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14447    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14448          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14449        )
14450    THEN
14451          xla_ae_lines_pkg.BflowUpgEntry
14452            (p_business_method_code    => l_bflow_method_code
14453            ,p_business_class_code     => l_bflow_class_code
14454            ,p_balance_type            => l_balance_type_code);
14455    ELSE
14456       NULL;
14457 -- No business flow processing for business flow method of NONE.
14458    END IF;
14459 
14460    --
14461    -- call analytical criteria
14462    --
14463    
14464    --
14465    -- call description
14466    --
14467    -- No description or it is inherited.
14468    --
14469    -- call ADRs
14470    -- Bug 4922099
14471    --
14472    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14473         (NVL(l_actual_upg_option, 'N') = 'O') OR
14474         (NVL(l_enc_upg_option, 'N') = 'O')
14475       )
14476    THEN
14477    NULL;
14478    --
14479    --
14480    
14481   l_ccid := AcctDerRule_26(
14482            p_application_id           => p_application_id
14483          , p_ae_header_id             => l_ae_header_id 
14484 , p_source_19 => p_source_19
14485          , x_transaction_coa_id       => l_adr_transaction_coa_id
14486          , x_accounting_coa_id        => l_adr_accounting_coa_id
14487          , x_value_type_code          => l_adr_value_type_code
14488          , p_side                     => 'NA'
14489    );
14490 
14491    xla_ae_lines_pkg.set_ccid(
14492     p_code_combination_id          => l_ccid
14493   , p_value_type_code              => l_adr_value_type_code
14494   , p_transaction_coa_id           => l_adr_transaction_coa_id
14495   , p_accounting_coa_id            => l_adr_accounting_coa_id
14496   , p_adr_code                     => 'REVENUE_RULE'
14497   , p_adr_type_code                => 'S'
14498   , p_component_type               => l_component_type
14499   , p_component_code               => l_component_code
14500   , p_component_type_code          => l_component_type_code
14501   , p_component_appl_id            => l_component_appl_id
14502   , p_amb_context_code             => l_amb_context_code
14503   , p_side                         => 'NA'
14504   );
14505 
14506 
14507    --
14508    --
14509    END IF;
14510    --
14511    -- Bug 4922099
14512    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14513           (NVL(l_enc_upg_option, 'N') = 'O')
14514         ) AND
14515         (l_bflow_method_code = 'PRIOR_ENTRY')
14516       )
14517    THEN
14518       IF
14519       --
14520       1 = 2
14521       --
14522       THEN
14523       xla_accounting_err_pkg.build_message
14524                                     (p_appli_s_name            => 'XLA'
14525                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14526                                     ,p_token_1                 => 'LINE_NUMBER'
14527                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14528                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14529                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14530                                                                              l_component_type
14531                                                                             ,l_component_code
14532                                                                             ,l_component_type_code
14533                                                                             ,l_component_appl_id
14534                                                                             ,l_amb_context_code
14535                                                                             ,l_entity_code
14536                                                                             ,l_event_class_code
14537                                                                            )
14538                                     ,p_token_3                 => 'OWNER'
14539                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14540                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14544                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14541                                                                           ,p_lookup_code    => l_component_type_code
14542                                                                          )
14543                                     ,p_token_4                 => 'PRODUCT_NAME'
14545                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14546                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14547                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14548                                     ,p_ae_header_id            =>  NULL
14549                                        );
14550 
14551         IF (C_LEVEL_ERROR>= g_log_level) THEN
14552                  trace
14553                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14554                       ,p_level    => C_LEVEL_ERROR
14555                       ,p_module   => l_log_module);
14556         END IF;
14557       END IF;
14558    END IF;
14559    --
14560    --
14561    ------------------------------------------------------------------------------------------------
14562    -- 4219869 Business Flow
14563    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14564    -- Prior Entry.  Currently, the following code is always generated.
14565    ------------------------------------------------------------------------------------------------
14566    XLA_AE_LINES_PKG.ValidateCurrentLine;
14567 
14568    ------------------------------------------------------------------------------------
14569    -- 4219869 Business Flow
14570    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14571    ------------------------------------------------------------------------------------
14572    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14573 
14574    ----------------------------------------------------------------------------------
14575    -- 4219869 Business Flow
14576    -- Update journal entry status -- Need to generate this within IF <condition>
14577    ----------------------------------------------------------------------------------
14578    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14579          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14580          ,p_balance_type_code => l_balance_type_code
14581          );
14582 
14583    -------------------------------------------------------------------------------------------
14584    -- 4262811 - Generate the Accrual Reversal lines
14585    -------------------------------------------------------------------------------------------
14586    BEGIN
14587       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14588                               (g_array_event(p_event_id).array_value_num('header_index'));
14589       IF l_acc_rev_flag IS NULL THEN
14590          l_acc_rev_flag := 'N';
14591       END IF;
14592    EXCEPTION
14593       WHEN OTHERS THEN
14594          l_acc_rev_flag := 'N';
14595    END;
14596    --
14597    IF (l_acc_rev_flag = 'Y') THEN
14598 
14599        -- 4645092  ------------------------------------------------------------------------------
14600        -- To allow MPA report to determine if it should generate report process
14601        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14602        ------------------------------------------------------------------------------------------
14603 
14604        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14605        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14606 
14607        --
14608        -- Update the line information that should be overwritten
14609        --
14610        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14611                                          p_header_num   => 1);
14612        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14613 
14614        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14615 
14616        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14617           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14618        END IF;
14619 
14620       --
14621       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14622       --
14623       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14624           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14625       ELSE
14626           ---------------------------------------------------------------------------------------------------
14627           -- 4262811a Switch Sign
14628           ---------------------------------------------------------------------------------------------------
14629           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14630           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14631                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14632           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14633                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14634           -- 5132302
14635           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14636                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14637 
14638       END IF;
14639 
14640       -- 4955764
14641       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14645       XLA_AE_LINES_PKG.ValidateCurrentLine;
14642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14643 
14644 
14646       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14647 
14648       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14649                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14650                ,p_balance_type_code => l_balance_type_code);
14651 
14652    END IF;
14653 
14654    -----------------------------------------------------------------------------------------
14655    -- 4262811 Multiperiod Accounting
14656    -----------------------------------------------------------------------------------------
14657      -- No MPA option is assigned.
14658 
14659 
14660 END IF;
14661 END IF;
14662 --
14663 
14664 --
14665 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14666    trace
14667       (p_msg      => 'END of AcctLineType_46'
14668       ,p_level    => C_LEVEL_PROCEDURE
14669       ,p_module   => l_log_module);
14670 END IF;
14671 --
14672 EXCEPTION
14673   WHEN xla_exceptions_pkg.application_exception THEN
14674       RAISE;
14675   WHEN OTHERS THEN
14676        xla_exceptions_pkg.raise_message
14677            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_46');
14678 END AcctLineType_46;
14679 --
14680 
14681 ---------------------------------------
14682 --
14683 -- PRIVATE FUNCTION
14684 --         AcctLineType_47
14685 --
14686 ---------------------------------------
14687 PROCEDURE AcctLineType_47 (
14688   p_application_id        IN NUMBER
14689  ,p_event_id              IN NUMBER
14690  ,p_calculate_acctd_flag  IN VARCHAR2
14691  ,p_calculate_g_l_flag    IN VARCHAR2
14692  ,p_actual_flag           IN OUT VARCHAR2
14693  ,p_balance_type_code     OUT VARCHAR2
14694  ,p_gain_or_loss_ref      OUT VARCHAR2
14695  
14696 --Event Revenue CCID
14697  , p_source_1            IN NUMBER
14698 --Entered Currency Code
14699  , p_source_26            IN VARCHAR2
14700 --Exchange Rate Date
14701  , p_source_28            IN DATE
14702 --Exchange Rate
14703  , p_source_29            IN NUMBER
14704 --Exchange Rate Type
14705  , p_source_30            IN VARCHAR2
14706 --Entered Amount
14707  , p_source_42            IN NUMBER
14708 --Accounted Amount
14709  , p_source_43            IN NUMBER
14710 --Revenue Distribution Type
14711  , p_source_46            IN VARCHAR2
14712 --Crediting Revenue Flag
14713  , p_source_48            IN VARCHAR2
14714 --Revenue First Distribution ID
14715  , p_source_49            IN NUMBER
14716 --Revenue Second Distribution ID
14717  , p_source_50            IN NUMBER
14718 --Event ID
14719  , p_source_51            IN NUMBER
14720 --Revenue Event Type Classification
14721  , p_source_72            IN VARCHAR2
14722  , p_source_72_meaning    IN VARCHAR2
14723 )
14724 IS
14725 
14726 l_component_type              VARCHAR2(80);
14727 l_component_code              VARCHAR2(30);
14728 l_component_type_code         VARCHAR2(1);
14729 l_component_appl_id           INTEGER;
14730 l_amb_context_code            VARCHAR2(30);
14731 l_entity_code                 VARCHAR2(30);
14732 l_event_class_code            VARCHAR2(30);
14733 l_ae_header_id                NUMBER;
14734 l_event_type_code             VARCHAR2(30);
14735 l_line_definition_code        VARCHAR2(30);
14736 l_line_definition_owner_code  VARCHAR2(1);
14737 --
14738 -- adr variables
14739 l_segment                     VARCHAR2(30);
14740 l_ccid                        NUMBER;
14741 l_adr_transaction_coa_id      NUMBER;
14742 l_adr_accounting_coa_id       NUMBER;
14743 l_adr_flexfield_segment_code  VARCHAR2(30);
14744 l_adr_flex_value_set_id       NUMBER;
14745 l_adr_value_type_code         VARCHAR2(30);
14746 l_adr_value_combination_id    NUMBER;
14747 l_adr_value_segment_code      VARCHAR2(30);
14748 
14749 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14750 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14751 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14752 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14753 
14754 -- 4262811 Variables ------------------------------------------------------------------------------------------
14755 l_entered_amt_idx             NUMBER;
14756 l_accted_amt_idx              NUMBER;
14757 l_acc_rev_flag                VARCHAR2(1);
14758 l_accrual_line_num            NUMBER;
14759 l_tmp_amt                     NUMBER;
14760 l_acc_rev_natural_side_code   VARCHAR2(1);
14761 
14762 l_num_entries                 NUMBER;
14763 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14764 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14765 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14766 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14767 l_recog_line_1                NUMBER;
14768 l_recog_line_2                NUMBER;
14769 
14770 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14771 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14772 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14773 
14774 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14775 
14776 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14777 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14778 
14779 ---------------------------------------------------------------------------------------------------------------
14780 
14781 
14782 --
14783 -- bulk performance
14784 --
14788 
14785 l_balance_type_code           VARCHAR2(1);
14786 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14787 l_log_module                  VARCHAR2(240);
14789 --
14790 -- Upgrade strategy
14791 --
14792 l_actual_upg_option           VARCHAR2(1);
14793 l_enc_upg_option           VARCHAR2(1);
14794 
14795 --
14796 BEGIN
14797 --
14798 IF g_log_enabled THEN
14799       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
14800 END IF;
14801 --
14802 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14803 
14804       trace
14805          (p_msg      => 'BEGIN of AcctLineType_47'
14806          ,p_level    => C_LEVEL_PROCEDURE
14807          ,p_module   => l_log_module);
14808 
14809 END IF;
14810 --
14811 l_component_type             := 'AMB_JLT';
14812 l_component_code             := 'PA_EVENT_REV';
14813 l_component_type_code        := 'S';
14814 l_component_appl_id          :=  275;
14815 l_amb_context_code           := 'DEFAULT';
14816 l_entity_code                := 'REVENUE';
14817 l_event_class_code           := 'REVENUE';
14818 l_event_type_code            := 'REVENUE_ALL';
14819 l_line_definition_owner_code := 'S';
14820 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
14821 --
14822 l_balance_type_code          := 'A';
14823 l_segment                     := NULL;
14824 l_ccid                        := NULL;
14825 l_adr_transaction_coa_id      := NULL;
14826 l_adr_accounting_coa_id       := NULL;
14827 l_adr_flexfield_segment_code  := NULL;
14828 l_adr_flex_value_set_id       := NULL;
14829 l_adr_value_type_code         := NULL;
14830 l_adr_value_combination_id    := NULL;
14831 l_adr_value_segment_code      := NULL;
14832 
14833 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14834 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
14835 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14836 l_budgetary_control_flag     := 'N';
14837 
14838 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14839 l_bflow_applied_to_amt       := NULL; -- 5132302
14840 l_entered_amt_idx            := NULL;          -- 4262811
14841 l_accted_amt_idx             := NULL;          -- 4262811
14842 l_acc_rev_flag               := NULL;          -- 4262811
14843 l_accrual_line_num           := NULL;          -- 4262811
14844 l_tmp_amt                    := NULL;          -- 4262811
14845 --
14846  
14847 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14848     l_balance_type_code <> 'B' THEN
14849 IF NVL(p_source_46,'
14850 ') =  'Revenue - Event Revenue' AND 
14851 NVL(p_source_72,'
14852 ') <>  'WRITE OFF' AND 
14853 NVL(p_source_48,'
14854 ') =  'N'
14855  THEN 
14856 
14857    --
14858    XLA_AE_LINES_PKG.SetNewLine;
14859 
14860    p_balance_type_code          := l_balance_type_code;
14861    -- set the flag so later we will know whether the gain loss line needs to be created
14862    
14863    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14864      p_actual_flag :='A';
14865    END IF;
14866 
14867    --
14868    -- bulk performance
14869    --
14870    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14871                                       p_header_num   => 0); -- 4262811
14872    --
14873    -- set accounting line options
14874    --
14875    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14876            p_natural_side_code          => 'C'
14877          , p_gain_or_loss_flag          => 'N'
14878          , p_gl_transfer_mode_code      => 'S'
14879          , p_acct_entry_type_code       => 'A'
14880          , p_switch_side_flag           => 'Y'
14881          , p_merge_duplicate_code       => 'N'
14882          );
14883    --
14884    l_acc_rev_natural_side_code := 'D';  -- 4262811
14885    -- 
14886    --
14887    -- set accounting line type info
14888    --
14889    xla_ae_lines_pkg.SetAcctLineType
14890       (p_component_type             => l_component_type
14891       ,p_event_type_code            => l_event_type_code
14892       ,p_line_definition_owner_code => l_line_definition_owner_code
14893       ,p_line_definition_code       => l_line_definition_code
14894       ,p_accounting_line_code       => l_component_code
14895       ,p_accounting_line_type_code  => l_component_type_code
14896       ,p_accounting_line_appl_id    => l_component_appl_id
14897       ,p_amb_context_code           => l_amb_context_code
14898       ,p_entity_code                => l_entity_code
14899       ,p_event_class_code           => l_event_class_code);
14900    --
14901    -- set accounting class
14902    --
14903    xla_ae_lines_pkg.SetAcctClass(
14904            p_accounting_class_code  => 'REVENUE'
14905          , p_ae_header_id           => l_ae_header_id
14906          );
14907 
14908    --
14909    -- set rounding class
14910    --
14911    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14912                       'REVENUE';
14913 
14914    --
14915    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14916    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14917    --
14918    -- bulk performance
14919    --
14920    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14921 
14922    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14923       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14924 
14925    -- 4955764
14926    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14927       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14931    --
14928 
14929    -- 4458381 Public Sector Enh
14930    
14932    -- set accounting attributes for the line type
14933    --
14934    l_entered_amt_idx := 4;
14935    l_accted_amt_idx  := 10;
14936    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14937    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14938    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
14939    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
14940    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
14941    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
14942    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
14943    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
14944    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
14945    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
14946    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
14947    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
14948    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
14949    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
14950    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
14951    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
14952    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
14953    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
14954    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
14955    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
14956    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
14957 
14958    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14959    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14960 
14961    ---------------------------------------------------------------------------------------------------------------
14962    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14963    ---------------------------------------------------------------------------------------------------------------
14964    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14965 
14966    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14967    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14968 
14969    IF xla_accounting_cache_pkg.GetValueChar
14970          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14971          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14972    AND l_bflow_method_code = 'PRIOR_ENTRY'
14973 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14974    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14975          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14976        )
14977    THEN
14978          xla_ae_lines_pkg.BflowUpgEntry
14979            (p_business_method_code    => l_bflow_method_code
14980            ,p_business_class_code     => l_bflow_class_code
14981            ,p_balance_type            => l_balance_type_code);
14982    ELSE
14983       NULL;
14984 -- No business flow processing for business flow method of NONE.
14985    END IF;
14986 
14987    --
14988    -- call analytical criteria
14989    --
14990    
14991    --
14992    -- call description
14993    --
14994    -- No description or it is inherited.
14995    --
14996    -- call ADRs
14997    -- Bug 4922099
14998    --
14999    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15000         (NVL(l_actual_upg_option, 'N') = 'O') OR
15001         (NVL(l_enc_upg_option, 'N') = 'O')
15002       )
15003    THEN
15004    NULL;
15005    --
15006    --
15007    
15008   l_ccid := AcctDerRule_1(
15009            p_application_id           => p_application_id
15010          , p_ae_header_id             => l_ae_header_id 
15011 , p_source_1 => p_source_1
15012          , x_transaction_coa_id       => l_adr_transaction_coa_id
15013          , x_accounting_coa_id        => l_adr_accounting_coa_id
15014          , x_value_type_code          => l_adr_value_type_code
15015          , p_side                     => 'NA'
15016    );
15017 
15018    xla_ae_lines_pkg.set_ccid(
15019     p_code_combination_id          => l_ccid
15020   , p_value_type_code              => l_adr_value_type_code
15021   , p_transaction_coa_id           => l_adr_transaction_coa_id
15022   , p_accounting_coa_id            => l_adr_accounting_coa_id
15023   , p_adr_code                     => 'EVENT_REVENUE_RULE'
15024   , p_adr_type_code                => 'S'
15025   , p_component_type               => l_component_type
15026   , p_component_code               => l_component_code
15027   , p_component_type_code          => l_component_type_code
15028   , p_component_appl_id            => l_component_appl_id
15029   , p_amb_context_code             => l_amb_context_code
15030   , p_side                         => 'NA'
15031   );
15032 
15033 
15034    --
15035    --
15036    END IF;
15037    --
15038    -- Bug 4922099
15039    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15040           (NVL(l_enc_upg_option, 'N') = 'O')
15041         ) AND
15042         (l_bflow_method_code = 'PRIOR_ENTRY')
15043       )
15044    THEN
15045       IF
15046       --
15047       1 = 2
15048       --
15049       THEN
15050       xla_accounting_err_pkg.build_message
15051                                     (p_appli_s_name            => 'XLA'
15052                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15053                                     ,p_token_1                 => 'LINE_NUMBER'
15054                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15058                                                                             ,l_component_code
15055                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15056                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15057                                                                              l_component_type
15059                                                                             ,l_component_type_code
15060                                                                             ,l_component_appl_id
15061                                                                             ,l_amb_context_code
15062                                                                             ,l_entity_code
15063                                                                             ,l_event_class_code
15064                                                                            )
15065                                     ,p_token_3                 => 'OWNER'
15066                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15067                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15068                                                                           ,p_lookup_code    => l_component_type_code
15069                                                                          )
15070                                     ,p_token_4                 => 'PRODUCT_NAME'
15071                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15072                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15073                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15074                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15075                                     ,p_ae_header_id            =>  NULL
15076                                        );
15077 
15078         IF (C_LEVEL_ERROR>= g_log_level) THEN
15079                  trace
15080                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15081                       ,p_level    => C_LEVEL_ERROR
15082                       ,p_module   => l_log_module);
15083         END IF;
15084       END IF;
15085    END IF;
15086    --
15087    --
15088    ------------------------------------------------------------------------------------------------
15089    -- 4219869 Business Flow
15090    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15091    -- Prior Entry.  Currently, the following code is always generated.
15092    ------------------------------------------------------------------------------------------------
15093    XLA_AE_LINES_PKG.ValidateCurrentLine;
15094 
15095    ------------------------------------------------------------------------------------
15096    -- 4219869 Business Flow
15097    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15098    ------------------------------------------------------------------------------------
15099    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15100 
15101    ----------------------------------------------------------------------------------
15102    -- 4219869 Business Flow
15103    -- Update journal entry status -- Need to generate this within IF <condition>
15104    ----------------------------------------------------------------------------------
15105    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15106          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15107          ,p_balance_type_code => l_balance_type_code
15108          );
15109 
15110    -------------------------------------------------------------------------------------------
15111    -- 4262811 - Generate the Accrual Reversal lines
15112    -------------------------------------------------------------------------------------------
15113    BEGIN
15114       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15115                               (g_array_event(p_event_id).array_value_num('header_index'));
15116       IF l_acc_rev_flag IS NULL THEN
15117          l_acc_rev_flag := 'N';
15118       END IF;
15119    EXCEPTION
15120       WHEN OTHERS THEN
15121          l_acc_rev_flag := 'N';
15122    END;
15123    --
15124    IF (l_acc_rev_flag = 'Y') THEN
15125 
15126        -- 4645092  ------------------------------------------------------------------------------
15127        -- To allow MPA report to determine if it should generate report process
15128        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15129        ------------------------------------------------------------------------------------------
15130 
15131        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15132        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15133 
15134        --
15135        -- Update the line information that should be overwritten
15136        --
15137        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15138                                          p_header_num   => 1);
15139        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15140 
15141        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15142 
15143        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15144           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15145        END IF;
15146 
15147       --
15148       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15149       --
15150       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15151           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15152       ELSE
15156           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15153           ---------------------------------------------------------------------------------------------------
15154           -- 4262811a Switch Sign
15155           ---------------------------------------------------------------------------------------------------
15157           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15158                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15159           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15160                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15161           -- 5132302
15162           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15163                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15164 
15165       END IF;
15166 
15167       -- 4955764
15168       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15169       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15170 
15171 
15172       XLA_AE_LINES_PKG.ValidateCurrentLine;
15173       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15174 
15175       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15176                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15177                ,p_balance_type_code => l_balance_type_code);
15178 
15179    END IF;
15180 
15181    -----------------------------------------------------------------------------------------
15182    -- 4262811 Multiperiod Accounting
15183    -----------------------------------------------------------------------------------------
15184      -- No MPA option is assigned.
15185 
15186 
15187 END IF;
15188 END IF;
15189 --
15190 
15191 --
15192 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15193    trace
15194       (p_msg      => 'END of AcctLineType_47'
15195       ,p_level    => C_LEVEL_PROCEDURE
15196       ,p_module   => l_log_module);
15197 END IF;
15198 --
15199 EXCEPTION
15200   WHEN xla_exceptions_pkg.application_exception THEN
15201       RAISE;
15202   WHEN OTHERS THEN
15203        xla_exceptions_pkg.raise_message
15204            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_47');
15205 END AcctLineType_47;
15206 --
15207 
15208 ---------------------------------------
15209 --
15210 -- PRIVATE FUNCTION
15211 --         AcctLineType_48
15212 --
15213 ---------------------------------------
15214 PROCEDURE AcctLineType_48 (
15215   p_application_id        IN NUMBER
15216  ,p_event_id              IN NUMBER
15217  ,p_calculate_acctd_flag  IN VARCHAR2
15218  ,p_calculate_g_l_flag    IN VARCHAR2
15219  ,p_actual_flag           IN OUT VARCHAR2
15220  ,p_balance_type_code     OUT VARCHAR2
15221  ,p_gain_or_loss_ref      OUT VARCHAR2
15222  
15223 --Actual Upgrade Credit Accounting Class
15224  , p_source_24            IN VARCHAR2
15225 --Entered Currency Code
15226  , p_source_26            IN VARCHAR2
15227 --Exchange Rate Date
15228  , p_source_28            IN DATE
15229 --Exchange Rate
15230  , p_source_29            IN NUMBER
15231 --Exchange Rate Type
15232  , p_source_30            IN VARCHAR2
15233 --Actual Upgrade Debit Accounting Class
15234  , p_source_31            IN VARCHAR2
15235 --Use Actuals Upgrade Attributes Flag
15236  , p_source_32            IN VARCHAR2
15237 --Entered Amount
15238  , p_source_42            IN NUMBER
15239 --Accounted Amount
15240  , p_source_43            IN NUMBER
15241 --Revenue Distribution Type
15242  , p_source_46            IN VARCHAR2
15243 --Crediting Revenue Flag
15244  , p_source_48            IN VARCHAR2
15245 --Revenue First Distribution ID
15246  , p_source_49            IN NUMBER
15247 --Revenue Second Distribution ID
15248  , p_source_50            IN NUMBER
15249 --Event ID
15250  , p_source_51            IN NUMBER
15251 --Actual Upgrade Credit CCID
15252  , p_source_64            IN NUMBER
15253 --Actual Upgrade Debit CCID
15254  , p_source_65            IN NUMBER
15255 --Application ID
15256  , p_source_66            IN NUMBER
15257 --Revenue Entity Code
15258  , p_source_67            IN VARCHAR2
15259 --Crediting Revenue First Distribution ID
15260  , p_source_68            IN NUMBER
15261 --Project ID
15262  , p_source_69            IN NUMBER
15263 --Crediting Revenue Second Distribution ID
15264  , p_source_70            IN NUMBER
15265 --Draft Revenue Number Credited
15266  , p_source_71            IN NUMBER
15267 --Revenue Event Type Classification
15268  , p_source_72            IN VARCHAR2
15269  , p_source_72_meaning    IN VARCHAR2
15270 )
15271 IS
15272 
15273 l_component_type              VARCHAR2(80);
15274 l_component_code              VARCHAR2(30);
15275 l_component_type_code         VARCHAR2(1);
15276 l_component_appl_id           INTEGER;
15277 l_amb_context_code            VARCHAR2(30);
15278 l_entity_code                 VARCHAR2(30);
15279 l_event_class_code            VARCHAR2(30);
15280 l_ae_header_id                NUMBER;
15281 l_event_type_code             VARCHAR2(30);
15282 l_line_definition_code        VARCHAR2(30);
15283 l_line_definition_owner_code  VARCHAR2(1);
15284 --
15285 -- adr variables
15286 l_segment                     VARCHAR2(30);
15287 l_ccid                        NUMBER;
15288 l_adr_transaction_coa_id      NUMBER;
15289 l_adr_accounting_coa_id       NUMBER;
15290 l_adr_flexfield_segment_code  VARCHAR2(30);
15291 l_adr_flex_value_set_id       NUMBER;
15292 l_adr_value_type_code         VARCHAR2(30);
15293 l_adr_value_combination_id    NUMBER;
15297 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15294 l_adr_value_segment_code      VARCHAR2(30);
15295 
15296 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15298 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15299 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15300 
15301 -- 4262811 Variables ------------------------------------------------------------------------------------------
15302 l_entered_amt_idx             NUMBER;
15303 l_accted_amt_idx              NUMBER;
15304 l_acc_rev_flag                VARCHAR2(1);
15305 l_accrual_line_num            NUMBER;
15306 l_tmp_amt                     NUMBER;
15307 l_acc_rev_natural_side_code   VARCHAR2(1);
15308 
15309 l_num_entries                 NUMBER;
15310 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15311 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15312 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15313 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15314 l_recog_line_1                NUMBER;
15315 l_recog_line_2                NUMBER;
15316 
15317 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15318 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15319 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15320 
15321 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15322 
15323 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15324 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15325 
15326 ---------------------------------------------------------------------------------------------------------------
15327 
15328 
15329 --
15330 -- bulk performance
15331 --
15332 l_balance_type_code           VARCHAR2(1);
15333 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15334 l_log_module                  VARCHAR2(240);
15335 
15336 --
15337 -- Upgrade strategy
15338 --
15339 l_actual_upg_option           VARCHAR2(1);
15340 l_enc_upg_option           VARCHAR2(1);
15341 
15342 --
15343 BEGIN
15344 --
15345 IF g_log_enabled THEN
15346       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
15347 END IF;
15348 --
15349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15350 
15351       trace
15352          (p_msg      => 'BEGIN of AcctLineType_48'
15353          ,p_level    => C_LEVEL_PROCEDURE
15354          ,p_module   => l_log_module);
15355 
15356 END IF;
15357 --
15358 l_component_type             := 'AMB_JLT';
15359 l_component_code             := 'PA_EVENT_REV_ADJ';
15360 l_component_type_code        := 'S';
15361 l_component_appl_id          :=  275;
15362 l_amb_context_code           := 'DEFAULT';
15363 l_entity_code                := 'REVENUE';
15364 l_event_class_code           := 'REVENUE_ADJ';
15365 l_event_type_code            := 'REVENUE_ADJ_ALL';
15366 l_line_definition_owner_code := 'S';
15367 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
15368 --
15369 l_balance_type_code          := 'A';
15370 l_segment                     := NULL;
15371 l_ccid                        := NULL;
15372 l_adr_transaction_coa_id      := NULL;
15373 l_adr_accounting_coa_id       := NULL;
15374 l_adr_flexfield_segment_code  := NULL;
15375 l_adr_flex_value_set_id       := NULL;
15376 l_adr_value_type_code         := NULL;
15377 l_adr_value_combination_id    := NULL;
15378 l_adr_value_segment_code      := NULL;
15379 
15380 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
15381 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
15382 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
15383 l_budgetary_control_flag     := 'N';
15384 
15385 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15386 l_bflow_applied_to_amt       := NULL; -- 5132302
15387 l_entered_amt_idx            := NULL;          -- 4262811
15388 l_accted_amt_idx             := NULL;          -- 4262811
15389 l_acc_rev_flag               := NULL;          -- 4262811
15390 l_accrual_line_num           := NULL;          -- 4262811
15391 l_tmp_amt                    := NULL;          -- 4262811
15392 --
15393  
15394 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15395     l_balance_type_code <> 'B' THEN
15396 IF NVL(p_source_46,'
15397 ') =  'Revenue - Event Revenue' AND 
15398 NVL(p_source_72,'
15399 ') <>  'WRITE OFF' AND 
15400 NVL(p_source_48,'
15401 ') =  'Y'
15402  THEN 
15403 
15404    --
15405    XLA_AE_LINES_PKG.SetNewLine;
15406 
15407    p_balance_type_code          := l_balance_type_code;
15408    -- set the flag so later we will know whether the gain loss line needs to be created
15409    
15410    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15411      p_actual_flag :='A';
15412    END IF;
15413 
15414    --
15415    -- bulk performance
15416    --
15417    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15418                                       p_header_num   => 0); -- 4262811
15419    --
15420    -- set accounting line options
15421    --
15422    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15423            p_natural_side_code          => 'D'
15424          , p_gain_or_loss_flag          => 'N'
15425          , p_gl_transfer_mode_code      => 'S'
15426          , p_acct_entry_type_code       => 'A'
15427          , p_switch_side_flag           => 'Y'
15428          , p_merge_duplicate_code       => 'N'
15429          );
15430    --
15431    l_acc_rev_natural_side_code := 'C';  -- 4262811
15432    -- 
15433    --
15434    -- set accounting line type info
15438       ,p_event_type_code            => l_event_type_code
15435    --
15436    xla_ae_lines_pkg.SetAcctLineType
15437       (p_component_type             => l_component_type
15439       ,p_line_definition_owner_code => l_line_definition_owner_code
15440       ,p_line_definition_code       => l_line_definition_code
15441       ,p_accounting_line_code       => l_component_code
15442       ,p_accounting_line_type_code  => l_component_type_code
15443       ,p_accounting_line_appl_id    => l_component_appl_id
15444       ,p_amb_context_code           => l_amb_context_code
15445       ,p_entity_code                => l_entity_code
15446       ,p_event_class_code           => l_event_class_code);
15447    --
15448    -- set accounting class
15449    --
15450    xla_ae_lines_pkg.SetAcctClass(
15451            p_accounting_class_code  => 'REVENUE'
15452          , p_ae_header_id           => l_ae_header_id
15453          );
15454 
15455    --
15456    -- set rounding class
15457    --
15458    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15459                       'REVENUE';
15460 
15461    --
15462    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15463    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15464    --
15465    -- bulk performance
15466    --
15467    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15468 
15469    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15470       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15471 
15472    -- 4955764
15473    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15474       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15475 
15476    -- 4458381 Public Sector Enh
15477    
15478    --
15479    -- set accounting attributes for the line type
15480    --
15481    l_entered_amt_idx := 28;
15482    l_accted_amt_idx  := 31;
15483    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15484    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
15485    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
15486    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
15487    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
15488    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
15489    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
15490    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
15491    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
15492    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
15493    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
15494    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
15495    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
15496    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
15497    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
15498    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
15499    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
15500    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
15501    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
15502    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
15503    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
15504    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
15505    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
15506    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
15507    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
15508    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
15509    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
15510    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
15511    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
15512    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
15513    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
15514    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
15515    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
15516    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
15517    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
15518    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
15519    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
15520    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
15521    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
15522    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
15523    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
15524    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
15525    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
15526    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
15527    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
15528    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
15529    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
15530    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
15531    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
15532    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
15533    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
15534    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
15535    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
15536    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
15537    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
15541    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
15538    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
15539    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
15540    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
15542    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
15543    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
15544    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
15545    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
15546 
15547    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15548    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15549 
15550    ---------------------------------------------------------------------------------------------------------------
15551    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15552    ---------------------------------------------------------------------------------------------------------------
15553    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15554 
15555    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15556    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15557 
15558    IF xla_accounting_cache_pkg.GetValueChar
15559          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15560          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15561    AND l_bflow_method_code = 'PRIOR_ENTRY'
15562 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15563    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15564          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15565        )
15566    THEN
15567          xla_ae_lines_pkg.BflowUpgEntry
15568            (p_business_method_code    => l_bflow_method_code
15569            ,p_business_class_code     => l_bflow_class_code
15570            ,p_balance_type            => l_balance_type_code);
15571    ELSE
15572       NULL;
15573 XLA_AE_LINES_PKG.business_flow_validation(
15574                                 p_business_method_code     => l_bflow_method_code
15575                                ,p_business_class_code      => l_bflow_class_code
15576                                ,p_inherit_description_flag => l_inherit_desc_flag);
15577    END IF;
15578 
15579    --
15580    -- call analytical criteria
15581    --
15582    -- Inherited Analytical Criteria for business flow method of Prior Entry.
15583    --
15584    -- call description
15585    --
15586    -- No description or it is inherited.
15587    --
15588    -- call ADRs
15589    -- Bug 4922099
15590    --
15591    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15592         (NVL(l_actual_upg_option, 'N') = 'O') OR
15593         (NVL(l_enc_upg_option, 'N') = 'O')
15594       )
15595    THEN
15596    NULL;
15597    --
15598    --
15599    
15600    --
15601    --
15602    END IF;
15603    --
15604    -- Bug 4922099
15605    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15606           (NVL(l_enc_upg_option, 'N') = 'O')
15607         ) AND
15608         (l_bflow_method_code = 'PRIOR_ENTRY')
15609       )
15610    THEN
15611       IF
15612       --
15613       1 = 1
15614       --
15615       THEN
15616       xla_accounting_err_pkg.build_message
15617                                     (p_appli_s_name            => 'XLA'
15618                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15619                                     ,p_token_1                 => 'LINE_NUMBER'
15620                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15621                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15622                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15623                                                                              l_component_type
15624                                                                             ,l_component_code
15625                                                                             ,l_component_type_code
15626                                                                             ,l_component_appl_id
15627                                                                             ,l_amb_context_code
15628                                                                             ,l_entity_code
15629                                                                             ,l_event_class_code
15630                                                                            )
15631                                     ,p_token_3                 => 'OWNER'
15632                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15633                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15634                                                                           ,p_lookup_code    => l_component_type_code
15635                                                                          )
15636                                     ,p_token_4                 => 'PRODUCT_NAME'
15637                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15638                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15639                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15640                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15641                                     ,p_ae_header_id            =>  NULL
15642                                        );
15643 
15644         IF (C_LEVEL_ERROR>= g_log_level) THEN
15648                       ,p_module   => l_log_module);
15645                  trace
15646                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15647                       ,p_level    => C_LEVEL_ERROR
15649         END IF;
15650       END IF;
15651    END IF;
15652    --
15653    --
15654    ------------------------------------------------------------------------------------------------
15655    -- 4219869 Business Flow
15656    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15657    -- Prior Entry.  Currently, the following code is always generated.
15658    ------------------------------------------------------------------------------------------------
15659    -- No ValidateCurrentLine for business flow method of Prior Entry
15660 
15661    ------------------------------------------------------------------------------------
15662    -- 4219869 Business Flow
15663    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15664    ------------------------------------------------------------------------------------
15665    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15666 
15667    ----------------------------------------------------------------------------------
15668    -- 4219869 Business Flow
15669    -- Update journal entry status -- Need to generate this within IF <condition>
15670    ----------------------------------------------------------------------------------
15671    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15672          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15673          ,p_balance_type_code => l_balance_type_code
15674          );
15675 
15676    -------------------------------------------------------------------------------------------
15677    -- 4262811 - Generate the Accrual Reversal lines
15678    -------------------------------------------------------------------------------------------
15679    BEGIN
15680       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15681                               (g_array_event(p_event_id).array_value_num('header_index'));
15682       IF l_acc_rev_flag IS NULL THEN
15683          l_acc_rev_flag := 'N';
15684       END IF;
15685    EXCEPTION
15686       WHEN OTHERS THEN
15687          l_acc_rev_flag := 'N';
15688    END;
15689    --
15690    IF (l_acc_rev_flag = 'Y') THEN
15691 
15692        -- 4645092  ------------------------------------------------------------------------------
15693        -- To allow MPA report to determine if it should generate report process
15694        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15695        ------------------------------------------------------------------------------------------
15696 
15697        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15698        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15699 
15700        --
15701        -- Update the line information that should be overwritten
15702        --
15703        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15704                                          p_header_num   => 1);
15705        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15706 
15707        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15708 
15709        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15710           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15711        END IF;
15712 
15713       --
15714       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15715       --
15716       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15717           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15718       ELSE
15719           ---------------------------------------------------------------------------------------------------
15720           -- 4262811a Switch Sign
15721           ---------------------------------------------------------------------------------------------------
15722           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15723           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15724                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15725           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15726                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15727           -- 5132302
15728           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15729                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15730 
15731       END IF;
15732 
15733       -- 4955764
15734       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15735       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15736 
15737 
15738       XLA_AE_LINES_PKG.ValidateCurrentLine;
15739       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15740 
15741       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15742                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15743                ,p_balance_type_code => l_balance_type_code);
15744 
15745    END IF;
15746 
15747    -----------------------------------------------------------------------------------------
15748    -- 4262811 Multiperiod Accounting
15749    -----------------------------------------------------------------------------------------
15750      -- No MPA option is assigned.
15751 
15752 
15753 END IF;
15754 END IF;
15755 --
15756 
15757 --
15761       ,p_level    => C_LEVEL_PROCEDURE
15758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15759    trace
15760       (p_msg      => 'END of AcctLineType_48'
15762       ,p_module   => l_log_module);
15763 END IF;
15764 --
15765 EXCEPTION
15766   WHEN xla_exceptions_pkg.application_exception THEN
15767       RAISE;
15768   WHEN OTHERS THEN
15769        xla_exceptions_pkg.raise_message
15770            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_48');
15771 END AcctLineType_48;
15772 --
15773 
15774 ---------------------------------------
15775 --
15776 -- PRIVATE FUNCTION
15777 --         AcctLineType_49
15778 --
15779 ---------------------------------------
15780 PROCEDURE AcctLineType_49 (
15781   p_application_id        IN NUMBER
15782  ,p_event_id              IN NUMBER
15783  ,p_calculate_acctd_flag  IN VARCHAR2
15784  ,p_calculate_g_l_flag    IN VARCHAR2
15785  ,p_actual_flag           IN OUT VARCHAR2
15786  ,p_balance_type_code     OUT VARCHAR2
15787  ,p_gain_or_loss_ref      OUT VARCHAR2
15788  
15789 --Event Revenue CCID
15790  , p_source_1            IN NUMBER
15791 --Actual Upgrade Credit Accounting Class
15792  , p_source_24            IN VARCHAR2
15793 --Entered Currency Code
15794  , p_source_26            IN VARCHAR2
15795 --Exchange Rate Date
15796  , p_source_28            IN DATE
15797 --Exchange Rate
15798  , p_source_29            IN NUMBER
15799 --Exchange Rate Type
15800  , p_source_30            IN VARCHAR2
15801 --Actual Upgrade Debit Accounting Class
15802  , p_source_31            IN VARCHAR2
15803 --Use Actuals Upgrade Attributes Flag
15804  , p_source_32            IN VARCHAR2
15805 --Entered Amount
15806  , p_source_42            IN NUMBER
15807 --Accounted Amount
15808  , p_source_43            IN NUMBER
15809 --Revenue Distribution Type
15810  , p_source_46            IN VARCHAR2
15811 --Crediting Revenue Flag
15812  , p_source_48            IN VARCHAR2
15813 --Revenue First Distribution ID
15814  , p_source_49            IN NUMBER
15815 --Revenue Second Distribution ID
15816  , p_source_50            IN NUMBER
15817 --Event ID
15818  , p_source_51            IN NUMBER
15819 --Actual Upgrade Credit CCID
15820  , p_source_64            IN NUMBER
15821 --Actual Upgrade Debit CCID
15822  , p_source_65            IN NUMBER
15823 --Application ID
15824  , p_source_66            IN NUMBER
15825 --Revenue Entity Code
15826  , p_source_67            IN VARCHAR2
15827 --Crediting Revenue First Distribution ID
15828  , p_source_68            IN NUMBER
15829 --Project ID
15830  , p_source_69            IN NUMBER
15831 --Crediting Revenue Second Distribution ID
15832  , p_source_70            IN NUMBER
15833 --Draft Revenue Number Credited
15834  , p_source_71            IN NUMBER
15835 --Revenue Event Type Classification
15836  , p_source_72            IN VARCHAR2
15837  , p_source_72_meaning    IN VARCHAR2
15838 )
15839 IS
15840 
15841 l_component_type              VARCHAR2(80);
15842 l_component_code              VARCHAR2(30);
15843 l_component_type_code         VARCHAR2(1);
15844 l_component_appl_id           INTEGER;
15845 l_amb_context_code            VARCHAR2(30);
15846 l_entity_code                 VARCHAR2(30);
15847 l_event_class_code            VARCHAR2(30);
15848 l_ae_header_id                NUMBER;
15849 l_event_type_code             VARCHAR2(30);
15850 l_line_definition_code        VARCHAR2(30);
15851 l_line_definition_owner_code  VARCHAR2(1);
15852 --
15853 -- adr variables
15854 l_segment                     VARCHAR2(30);
15855 l_ccid                        NUMBER;
15856 l_adr_transaction_coa_id      NUMBER;
15857 l_adr_accounting_coa_id       NUMBER;
15858 l_adr_flexfield_segment_code  VARCHAR2(30);
15859 l_adr_flex_value_set_id       NUMBER;
15860 l_adr_value_type_code         VARCHAR2(30);
15861 l_adr_value_combination_id    NUMBER;
15862 l_adr_value_segment_code      VARCHAR2(30);
15863 
15864 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15865 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15866 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15867 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15868 
15869 -- 4262811 Variables ------------------------------------------------------------------------------------------
15870 l_entered_amt_idx             NUMBER;
15871 l_accted_amt_idx              NUMBER;
15872 l_acc_rev_flag                VARCHAR2(1);
15873 l_accrual_line_num            NUMBER;
15874 l_tmp_amt                     NUMBER;
15875 l_acc_rev_natural_side_code   VARCHAR2(1);
15876 
15877 l_num_entries                 NUMBER;
15878 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15879 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15880 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15881 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15882 l_recog_line_1                NUMBER;
15883 l_recog_line_2                NUMBER;
15884 
15885 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15886 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15887 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15888 
15889 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15890 
15891 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15892 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15893 
15894 ---------------------------------------------------------------------------------------------------------------
15895 
15896 
15897 --
15898 -- bulk performance
15899 --
15900 l_balance_type_code           VARCHAR2(1);
15904 --
15901 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15902 l_log_module                  VARCHAR2(240);
15903 
15905 -- Upgrade strategy
15906 --
15907 l_actual_upg_option           VARCHAR2(1);
15908 l_enc_upg_option           VARCHAR2(1);
15909 
15910 --
15911 BEGIN
15912 --
15913 IF g_log_enabled THEN
15914       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
15915 END IF;
15916 --
15917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15918 
15919       trace
15920          (p_msg      => 'BEGIN of AcctLineType_49'
15921          ,p_level    => C_LEVEL_PROCEDURE
15922          ,p_module   => l_log_module);
15923 
15924 END IF;
15925 --
15926 l_component_type             := 'AMB_JLT';
15927 l_component_code             := 'PA_EVENT_REV_ADJ_FED';
15928 l_component_type_code        := 'S';
15929 l_component_appl_id          :=  275;
15930 l_amb_context_code           := 'DEFAULT';
15931 l_entity_code                := 'REVENUE';
15932 l_event_class_code           := 'REVENUE_ADJ';
15933 l_event_type_code            := 'REVENUE_ADJ_ALL';
15934 l_line_definition_owner_code := 'S';
15935 l_line_definition_code       := 'FV_PROJECTS_JLD';
15936 --
15937 l_balance_type_code          := 'A';
15938 l_segment                     := NULL;
15939 l_ccid                        := NULL;
15940 l_adr_transaction_coa_id      := NULL;
15941 l_adr_accounting_coa_id       := NULL;
15942 l_adr_flexfield_segment_code  := NULL;
15943 l_adr_flex_value_set_id       := NULL;
15944 l_adr_value_type_code         := NULL;
15945 l_adr_value_combination_id    := NULL;
15946 l_adr_value_segment_code      := NULL;
15947 
15948 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15949 l_bflow_class_code           := '';    -- 4219869 Business Flow
15950 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15951 l_budgetary_control_flag     := 'N';
15952 
15953 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15954 l_bflow_applied_to_amt       := NULL; -- 5132302
15955 l_entered_amt_idx            := NULL;          -- 4262811
15956 l_accted_amt_idx             := NULL;          -- 4262811
15957 l_acc_rev_flag               := NULL;          -- 4262811
15958 l_accrual_line_num           := NULL;          -- 4262811
15959 l_tmp_amt                    := NULL;          -- 4262811
15960 --
15961  
15962 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15963     l_balance_type_code <> 'B' THEN
15964 IF NVL(p_source_46,'
15965 ') =  'Revenue - Event Revenue' AND 
15966 NVL(p_source_72,'
15967 ') <>  'WRITE OFF' AND 
15968 NVL(p_source_48,'
15969 ') =  'Y'
15970  THEN 
15971 
15972    --
15973    XLA_AE_LINES_PKG.SetNewLine;
15974 
15975    p_balance_type_code          := l_balance_type_code;
15976    -- set the flag so later we will know whether the gain loss line needs to be created
15977    
15978    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15979      p_actual_flag :='A';
15980    END IF;
15981 
15982    --
15983    -- bulk performance
15984    --
15985    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15986                                       p_header_num   => 0); -- 4262811
15987    --
15988    -- set accounting line options
15989    --
15990    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15991            p_natural_side_code          => 'D'
15992          , p_gain_or_loss_flag          => 'N'
15993          , p_gl_transfer_mode_code      => 'S'
15994          , p_acct_entry_type_code       => 'A'
15995          , p_switch_side_flag           => 'Y'
15996          , p_merge_duplicate_code       => 'N'
15997          );
15998    --
15999    l_acc_rev_natural_side_code := 'C';  -- 4262811
16000    -- 
16001    --
16002    -- set accounting line type info
16003    --
16004    xla_ae_lines_pkg.SetAcctLineType
16005       (p_component_type             => l_component_type
16006       ,p_event_type_code            => l_event_type_code
16007       ,p_line_definition_owner_code => l_line_definition_owner_code
16008       ,p_line_definition_code       => l_line_definition_code
16009       ,p_accounting_line_code       => l_component_code
16010       ,p_accounting_line_type_code  => l_component_type_code
16011       ,p_accounting_line_appl_id    => l_component_appl_id
16012       ,p_amb_context_code           => l_amb_context_code
16013       ,p_entity_code                => l_entity_code
16014       ,p_event_class_code           => l_event_class_code);
16015    --
16016    -- set accounting class
16017    --
16018    xla_ae_lines_pkg.SetAcctClass(
16019            p_accounting_class_code  => 'FEDERAL_REVENUE_ADJUSTMENT'
16020          , p_ae_header_id           => l_ae_header_id
16021          );
16022 
16023    --
16024    -- set rounding class
16025    --
16026    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16027                       'FEDERAL_REVENUE_ADJUSTMENT';
16028 
16029    --
16030    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16031    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16032    --
16033    -- bulk performance
16034    --
16035    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16036 
16037    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16038       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16039 
16040    -- 4955764
16041    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16042       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16043 
16047    -- set accounting attributes for the line type
16044    -- 4458381 Public Sector Enh
16045    
16046    --
16048    --
16049    l_entered_amt_idx := 28;
16050    l_accted_amt_idx  := 31;
16051    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16052    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
16053    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
16054    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
16055    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
16056    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
16057    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
16058    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
16059    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
16060    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
16061    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
16062    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
16063    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
16064    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
16065    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
16066    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
16067    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
16068    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
16069    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
16070    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
16071    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
16072    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
16073    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
16074    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
16075    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
16076    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
16077    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
16078    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
16079    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
16080    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
16081    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
16082    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
16083    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
16084    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
16085    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
16086    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
16087    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
16088    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
16089    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
16090    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
16091    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
16092    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
16093    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
16094    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
16095    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
16096    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
16097    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
16098    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
16099    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
16100    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
16101    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
16102    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
16103    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
16104    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
16105    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
16106    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
16107    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
16108    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
16109    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
16110    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
16111    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
16112    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
16113    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
16114 
16115    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16116    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16117 
16118    ---------------------------------------------------------------------------------------------------------------
16119    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16120    ---------------------------------------------------------------------------------------------------------------
16121    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16122 
16123    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16124    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16125 
16126    IF xla_accounting_cache_pkg.GetValueChar
16127          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16128          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16129    AND l_bflow_method_code = 'PRIOR_ENTRY'
16130 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16131    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16132          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16133        )
16134    THEN
16135          xla_ae_lines_pkg.BflowUpgEntry
16136            (p_business_method_code    => l_bflow_method_code
16140       NULL;
16137            ,p_business_class_code     => l_bflow_class_code
16138            ,p_balance_type            => l_balance_type_code);
16139    ELSE
16141 -- No business flow processing for business flow method of NONE.
16142    END IF;
16143 
16144    --
16145    -- call analytical criteria
16146    --
16147    
16148    --
16149    -- call description
16150    --
16151    -- No description or it is inherited.
16152    --
16153    -- call ADRs
16154    -- Bug 4922099
16155    --
16156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16157         (NVL(l_actual_upg_option, 'N') = 'O') OR
16158         (NVL(l_enc_upg_option, 'N') = 'O')
16159       )
16160    THEN
16161    NULL;
16162    --
16163    --
16164    
16165   l_ccid := AcctDerRule_1(
16166            p_application_id           => p_application_id
16167          , p_ae_header_id             => l_ae_header_id 
16168 , p_source_1 => p_source_1
16169          , x_transaction_coa_id       => l_adr_transaction_coa_id
16170          , x_accounting_coa_id        => l_adr_accounting_coa_id
16171          , x_value_type_code          => l_adr_value_type_code
16172          , p_side                     => 'NA'
16173    );
16174 
16175    xla_ae_lines_pkg.set_ccid(
16176     p_code_combination_id          => l_ccid
16177   , p_value_type_code              => l_adr_value_type_code
16178   , p_transaction_coa_id           => l_adr_transaction_coa_id
16179   , p_accounting_coa_id            => l_adr_accounting_coa_id
16180   , p_adr_code                     => 'EVENT_REVENUE_RULE'
16181   , p_adr_type_code                => 'S'
16182   , p_component_type               => l_component_type
16183   , p_component_code               => l_component_code
16184   , p_component_type_code          => l_component_type_code
16185   , p_component_appl_id            => l_component_appl_id
16186   , p_amb_context_code             => l_amb_context_code
16187   , p_side                         => 'NA'
16188   );
16189 
16190 
16191    l_segment := AcctDerRule_2(
16192            p_application_id           => p_application_id
16193          , p_ae_header_id             => l_ae_header_id 
16194          , x_transaction_coa_id       => l_adr_transaction_coa_id
16195          , x_accounting_coa_id        => l_adr_accounting_coa_id
16196          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
16197          , x_flex_value_set_id        => l_adr_flex_value_set_id
16198          , x_value_type_code          => l_adr_value_type_code
16199          , x_value_combination_id     => l_adr_value_combination_id
16200          , x_value_segment_code       => l_adr_value_segment_code
16201          , p_side                     => 'NA'
16202          , p_override_seg_flag        => 'Y'
16203    );
16204 
16205    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
16206 
16207       xla_ae_lines_pkg.set_segment(
16208           p_to_segment_code         => 'GL_ACCOUNT'
16209         , p_segment_value           => l_segment
16210         , p_from_segment_code       => l_adr_value_segment_code
16211         , p_from_combination_id     => l_adr_value_combination_id
16212         , p_value_type_code         => l_adr_value_type_code
16213         , p_transaction_coa_id      => l_adr_transaction_coa_id
16214         , p_accounting_coa_id       => l_adr_accounting_coa_id
16215         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
16216         , p_flex_value_set_id       => l_adr_flex_value_set_id
16217         , p_adr_code                => 'FV_422X01_PROJECTS'
16218         , p_adr_type_code           => 'S'
16219         , p_component_type          => l_component_type
16220         , p_component_code          => l_component_code
16221         , p_component_type_code     => l_component_type_code
16222         , p_component_appl_id       => l_component_appl_id
16223         , p_amb_context_code        => l_amb_context_code
16224         , p_entity_code             => 'REVENUE'
16225         , p_event_class_code        => 'REVENUE_ADJ'
16226         , p_side                    => 'NA'
16227         );
16228 
16229   END IF;
16230 
16231    --
16232    --
16233    END IF;
16234    --
16235    -- Bug 4922099
16236    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16237           (NVL(l_enc_upg_option, 'N') = 'O')
16238         ) AND
16239         (l_bflow_method_code = 'PRIOR_ENTRY')
16240       )
16241    THEN
16242       IF
16243       --
16244       1 = 2
16245       --
16246       THEN
16247       xla_accounting_err_pkg.build_message
16248                                     (p_appli_s_name            => 'XLA'
16249                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16250                                     ,p_token_1                 => 'LINE_NUMBER'
16251                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16252                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16253                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16254                                                                              l_component_type
16255                                                                             ,l_component_code
16256                                                                             ,l_component_type_code
16257                                                                             ,l_component_appl_id
16258                                                                             ,l_amb_context_code
16259                                                                             ,l_entity_code
16260                                                                             ,l_event_class_code
16261                                                                            )
16262                                     ,p_token_3                 => 'OWNER'
16266                                                                          )
16263                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16264                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16265                                                                           ,p_lookup_code    => l_component_type_code
16267                                     ,p_token_4                 => 'PRODUCT_NAME'
16268                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16269                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16270                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16271                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16272                                     ,p_ae_header_id            =>  NULL
16273                                        );
16274 
16275         IF (C_LEVEL_ERROR>= g_log_level) THEN
16276                  trace
16277                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16278                       ,p_level    => C_LEVEL_ERROR
16279                       ,p_module   => l_log_module);
16280         END IF;
16281       END IF;
16282    END IF;
16283    --
16284    --
16285    ------------------------------------------------------------------------------------------------
16286    -- 4219869 Business Flow
16287    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16288    -- Prior Entry.  Currently, the following code is always generated.
16289    ------------------------------------------------------------------------------------------------
16290    XLA_AE_LINES_PKG.ValidateCurrentLine;
16291 
16292    ------------------------------------------------------------------------------------
16293    -- 4219869 Business Flow
16294    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16295    ------------------------------------------------------------------------------------
16296    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16297 
16298    ----------------------------------------------------------------------------------
16299    -- 4219869 Business Flow
16300    -- Update journal entry status -- Need to generate this within IF <condition>
16301    ----------------------------------------------------------------------------------
16302    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16303          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16304          ,p_balance_type_code => l_balance_type_code
16305          );
16306 
16307    -------------------------------------------------------------------------------------------
16308    -- 4262811 - Generate the Accrual Reversal lines
16309    -------------------------------------------------------------------------------------------
16310    BEGIN
16311       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16312                               (g_array_event(p_event_id).array_value_num('header_index'));
16313       IF l_acc_rev_flag IS NULL THEN
16314          l_acc_rev_flag := 'N';
16315       END IF;
16316    EXCEPTION
16317       WHEN OTHERS THEN
16318          l_acc_rev_flag := 'N';
16319    END;
16320    --
16321    IF (l_acc_rev_flag = 'Y') THEN
16322 
16323        -- 4645092  ------------------------------------------------------------------------------
16324        -- To allow MPA report to determine if it should generate report process
16325        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16326        ------------------------------------------------------------------------------------------
16327 
16328        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16329        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16330 
16331        --
16332        -- Update the line information that should be overwritten
16333        --
16334        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16335                                          p_header_num   => 1);
16336        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16337 
16338        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16339 
16340        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16341           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16342        END IF;
16343 
16344       --
16345       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16346       --
16347       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16348           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16349       ELSE
16350           ---------------------------------------------------------------------------------------------------
16351           -- 4262811a Switch Sign
16352           ---------------------------------------------------------------------------------------------------
16353           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16354           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16355                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16356           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16357                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16358           -- 5132302
16359           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16360                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16361 
16365       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16362       END IF;
16363 
16364       -- 4955764
16366       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16367 
16368 
16369       XLA_AE_LINES_PKG.ValidateCurrentLine;
16370       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16371 
16372       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16373                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16374                ,p_balance_type_code => l_balance_type_code);
16375 
16376    END IF;
16377 
16378    -----------------------------------------------------------------------------------------
16379    -- 4262811 Multiperiod Accounting
16380    -----------------------------------------------------------------------------------------
16381      -- No MPA option is assigned.
16382 
16383 
16384 END IF;
16385 END IF;
16386 --
16387 
16388 --
16389 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16390    trace
16391       (p_msg      => 'END of AcctLineType_49'
16392       ,p_level    => C_LEVEL_PROCEDURE
16393       ,p_module   => l_log_module);
16394 END IF;
16395 --
16396 EXCEPTION
16397   WHEN xla_exceptions_pkg.application_exception THEN
16398       RAISE;
16399   WHEN OTHERS THEN
16400        xla_exceptions_pkg.raise_message
16401            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_49');
16402 END AcctLineType_49;
16403 --
16404 
16405 ---------------------------------------
16406 --
16407 -- PRIVATE FUNCTION
16408 --         AcctLineType_50
16409 --
16410 ---------------------------------------
16411 PROCEDURE AcctLineType_50 (
16412   p_application_id        IN NUMBER
16413  ,p_event_id              IN NUMBER
16414  ,p_calculate_acctd_flag  IN VARCHAR2
16415  ,p_calculate_g_l_flag    IN VARCHAR2
16416  ,p_actual_flag           IN OUT VARCHAR2
16417  ,p_balance_type_code     OUT VARCHAR2
16418  ,p_gain_or_loss_ref      OUT VARCHAR2
16419  
16420 --Event Revenue CCID
16421  , p_source_1            IN NUMBER
16422 --Entered Currency Code
16423  , p_source_26            IN VARCHAR2
16424 --Entered Amount
16425  , p_source_42            IN NUMBER
16426 --Accounted Amount
16427  , p_source_43            IN NUMBER
16428 --Revenue Distribution Type
16429  , p_source_46            IN VARCHAR2
16430 --Crediting Revenue Flag
16431  , p_source_48            IN VARCHAR2
16432 --Revenue First Distribution ID
16433  , p_source_49            IN NUMBER
16434 --Revenue Second Distribution ID
16435  , p_source_50            IN NUMBER
16436 --Event ID
16437  , p_source_51            IN NUMBER
16438 --Revenue Event Type Classification
16439  , p_source_72            IN VARCHAR2
16440  , p_source_72_meaning    IN VARCHAR2
16441 )
16442 IS
16443 
16444 l_component_type              VARCHAR2(80);
16445 l_component_code              VARCHAR2(30);
16446 l_component_type_code         VARCHAR2(1);
16447 l_component_appl_id           INTEGER;
16448 l_amb_context_code            VARCHAR2(30);
16449 l_entity_code                 VARCHAR2(30);
16450 l_event_class_code            VARCHAR2(30);
16451 l_ae_header_id                NUMBER;
16452 l_event_type_code             VARCHAR2(30);
16453 l_line_definition_code        VARCHAR2(30);
16454 l_line_definition_owner_code  VARCHAR2(1);
16455 --
16456 -- adr variables
16457 l_segment                     VARCHAR2(30);
16458 l_ccid                        NUMBER;
16459 l_adr_transaction_coa_id      NUMBER;
16460 l_adr_accounting_coa_id       NUMBER;
16461 l_adr_flexfield_segment_code  VARCHAR2(30);
16462 l_adr_flex_value_set_id       NUMBER;
16463 l_adr_value_type_code         VARCHAR2(30);
16464 l_adr_value_combination_id    NUMBER;
16465 l_adr_value_segment_code      VARCHAR2(30);
16466 
16467 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16468 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16469 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16470 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16471 
16472 -- 4262811 Variables ------------------------------------------------------------------------------------------
16473 l_entered_amt_idx             NUMBER;
16474 l_accted_amt_idx              NUMBER;
16475 l_acc_rev_flag                VARCHAR2(1);
16476 l_accrual_line_num            NUMBER;
16477 l_tmp_amt                     NUMBER;
16478 l_acc_rev_natural_side_code   VARCHAR2(1);
16479 
16480 l_num_entries                 NUMBER;
16481 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16482 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16483 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16484 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16485 l_recog_line_1                NUMBER;
16486 l_recog_line_2                NUMBER;
16487 
16488 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16489 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16490 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16491 
16492 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16493 
16494 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16495 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16496 
16497 ---------------------------------------------------------------------------------------------------------------
16498 
16499 
16500 --
16501 -- bulk performance
16502 --
16503 l_balance_type_code           VARCHAR2(1);
16504 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16508 -- Upgrade strategy
16505 l_log_module                  VARCHAR2(240);
16506 
16507 --
16509 --
16510 l_actual_upg_option           VARCHAR2(1);
16511 l_enc_upg_option           VARCHAR2(1);
16512 
16513 --
16514 BEGIN
16515 --
16516 IF g_log_enabled THEN
16517       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
16518 END IF;
16519 --
16520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16521 
16522       trace
16523          (p_msg      => 'BEGIN of AcctLineType_50'
16524          ,p_level    => C_LEVEL_PROCEDURE
16525          ,p_module   => l_log_module);
16526 
16527 END IF;
16528 --
16529 l_component_type             := 'AMB_JLT';
16530 l_component_code             := 'PA_EVENT_REV_FED';
16531 l_component_type_code        := 'S';
16532 l_component_appl_id          :=  275;
16533 l_amb_context_code           := 'DEFAULT';
16534 l_entity_code                := 'REVENUE';
16535 l_event_class_code           := 'REVENUE';
16536 l_event_type_code            := 'REVENUE_ALL';
16537 l_line_definition_owner_code := 'S';
16538 l_line_definition_code       := 'FV_PROJECTS_JLD';
16539 --
16540 l_balance_type_code          := 'A';
16541 l_segment                     := NULL;
16542 l_ccid                        := NULL;
16543 l_adr_transaction_coa_id      := NULL;
16544 l_adr_accounting_coa_id       := NULL;
16545 l_adr_flexfield_segment_code  := NULL;
16546 l_adr_flex_value_set_id       := NULL;
16547 l_adr_value_type_code         := NULL;
16548 l_adr_value_combination_id    := NULL;
16549 l_adr_value_segment_code      := NULL;
16550 
16551 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16552 l_bflow_class_code           := '';    -- 4219869 Business Flow
16553 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16554 l_budgetary_control_flag     := 'N';
16555 
16556 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16557 l_bflow_applied_to_amt       := NULL; -- 5132302
16558 l_entered_amt_idx            := NULL;          -- 4262811
16559 l_accted_amt_idx             := NULL;          -- 4262811
16560 l_acc_rev_flag               := NULL;          -- 4262811
16561 l_accrual_line_num           := NULL;          -- 4262811
16562 l_tmp_amt                    := NULL;          -- 4262811
16563 --
16564  
16565 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16566     l_balance_type_code <> 'B' THEN
16567 IF NVL(p_source_46,'
16568 ') =  'Revenue - Event Revenue' AND 
16569 NVL(p_source_72,'
16570 ') <>  'WRITE OFF' AND 
16571 NVL(p_source_48,'
16572 ') =  'N'
16573  THEN 
16574 
16575    --
16576    XLA_AE_LINES_PKG.SetNewLine;
16577 
16578    p_balance_type_code          := l_balance_type_code;
16579    -- set the flag so later we will know whether the gain loss line needs to be created
16580    
16581    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16582      p_actual_flag :='A';
16583    END IF;
16584 
16585    --
16586    -- bulk performance
16587    --
16588    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16589                                       p_header_num   => 0); -- 4262811
16590    --
16591    -- set accounting line options
16592    --
16593    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16594            p_natural_side_code          => 'C'
16595          , p_gain_or_loss_flag          => 'N'
16596          , p_gl_transfer_mode_code      => 'S'
16597          , p_acct_entry_type_code       => 'A'
16598          , p_switch_side_flag           => 'Y'
16599          , p_merge_duplicate_code       => 'N'
16600          );
16601    --
16602    l_acc_rev_natural_side_code := 'D';  -- 4262811
16603    -- 
16604    --
16605    -- set accounting line type info
16606    --
16607    xla_ae_lines_pkg.SetAcctLineType
16608       (p_component_type             => l_component_type
16609       ,p_event_type_code            => l_event_type_code
16610       ,p_line_definition_owner_code => l_line_definition_owner_code
16611       ,p_line_definition_code       => l_line_definition_code
16612       ,p_accounting_line_code       => l_component_code
16613       ,p_accounting_line_type_code  => l_component_type_code
16614       ,p_accounting_line_appl_id    => l_component_appl_id
16615       ,p_amb_context_code           => l_amb_context_code
16616       ,p_entity_code                => l_entity_code
16617       ,p_event_class_code           => l_event_class_code);
16618    --
16619    -- set accounting class
16620    --
16621    xla_ae_lines_pkg.SetAcctClass(
16622            p_accounting_class_code  => 'FEDERAL_REVENUE'
16623          , p_ae_header_id           => l_ae_header_id
16624          );
16625 
16626    --
16627    -- set rounding class
16628    --
16629    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16630                       'FEDERAL_REVENUE';
16631 
16632    --
16633    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16634    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16635    --
16636    -- bulk performance
16637    --
16638    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16639 
16640    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16641       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16642 
16643    -- 4955764
16644    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16645       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16646 
16647    -- 4458381 Public Sector Enh
16648    
16649    --
16653    l_accted_amt_idx  := 7;
16650    -- set accounting attributes for the line type
16651    --
16652    l_entered_amt_idx := 4;
16654    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16655    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16656    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
16657    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
16658    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
16659    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
16660    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
16661    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
16662    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
16663    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
16664    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
16665    l_rec_acct_attrs.array_acct_attr_code(6) := 'GAIN_LOSS_REFERENCE';
16666    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_51);
16667    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
16668    l_rec_acct_attrs.array_num_value(7)  := p_source_43;
16669 
16670    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16671    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16672 
16673    ---------------------------------------------------------------------------------------------------------------
16674    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16675    ---------------------------------------------------------------------------------------------------------------
16676    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16677 
16678    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16679    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16680 
16681    IF xla_accounting_cache_pkg.GetValueChar
16682          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16683          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16684    AND l_bflow_method_code = 'PRIOR_ENTRY'
16685 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16686    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16687          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16688        )
16689    THEN
16690          xla_ae_lines_pkg.BflowUpgEntry
16691            (p_business_method_code    => l_bflow_method_code
16692            ,p_business_class_code     => l_bflow_class_code
16693            ,p_balance_type            => l_balance_type_code);
16694    ELSE
16695       NULL;
16696 -- No business flow processing for business flow method of NONE.
16697    END IF;
16698 
16699    --
16700    -- call analytical criteria
16701    --
16702    
16703    --
16704    -- call description
16705    --
16706    -- No description or it is inherited.
16707    --
16708    -- call ADRs
16709    -- Bug 4922099
16710    --
16711    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16712         (NVL(l_actual_upg_option, 'N') = 'O') OR
16713         (NVL(l_enc_upg_option, 'N') = 'O')
16714       )
16715    THEN
16716    NULL;
16717    --
16718    --
16719    
16720   l_ccid := AcctDerRule_1(
16721            p_application_id           => p_application_id
16722          , p_ae_header_id             => l_ae_header_id 
16723 , p_source_1 => p_source_1
16724          , x_transaction_coa_id       => l_adr_transaction_coa_id
16725          , x_accounting_coa_id        => l_adr_accounting_coa_id
16726          , x_value_type_code          => l_adr_value_type_code
16727          , p_side                     => 'NA'
16728    );
16729 
16730    xla_ae_lines_pkg.set_ccid(
16731     p_code_combination_id          => l_ccid
16732   , p_value_type_code              => l_adr_value_type_code
16733   , p_transaction_coa_id           => l_adr_transaction_coa_id
16734   , p_accounting_coa_id            => l_adr_accounting_coa_id
16735   , p_adr_code                     => 'EVENT_REVENUE_RULE'
16736   , p_adr_type_code                => 'S'
16737   , p_component_type               => l_component_type
16738   , p_component_code               => l_component_code
16739   , p_component_type_code          => l_component_type_code
16740   , p_component_appl_id            => l_component_appl_id
16741   , p_amb_context_code             => l_amb_context_code
16742   , p_side                         => 'NA'
16743   );
16744 
16745 
16746    l_segment := AcctDerRule_2(
16747            p_application_id           => p_application_id
16748          , p_ae_header_id             => l_ae_header_id 
16749          , x_transaction_coa_id       => l_adr_transaction_coa_id
16750          , x_accounting_coa_id        => l_adr_accounting_coa_id
16751          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
16752          , x_flex_value_set_id        => l_adr_flex_value_set_id
16753          , x_value_type_code          => l_adr_value_type_code
16754          , x_value_combination_id     => l_adr_value_combination_id
16755          , x_value_segment_code       => l_adr_value_segment_code
16756          , p_side                     => 'NA'
16757          , p_override_seg_flag        => 'Y'
16758    );
16759 
16760    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
16761 
16762       xla_ae_lines_pkg.set_segment(
16763           p_to_segment_code         => 'GL_ACCOUNT'
16764         , p_segment_value           => l_segment
16765         , p_from_segment_code       => l_adr_value_segment_code
16766         , p_from_combination_id     => l_adr_value_combination_id
16767         , p_value_type_code         => l_adr_value_type_code
16768         , p_transaction_coa_id      => l_adr_transaction_coa_id
16772         , p_adr_code                => 'FV_422X01_PROJECTS'
16769         , p_accounting_coa_id       => l_adr_accounting_coa_id
16770         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
16771         , p_flex_value_set_id       => l_adr_flex_value_set_id
16773         , p_adr_type_code           => 'S'
16774         , p_component_type          => l_component_type
16775         , p_component_code          => l_component_code
16776         , p_component_type_code     => l_component_type_code
16777         , p_component_appl_id       => l_component_appl_id
16778         , p_amb_context_code        => l_amb_context_code
16779         , p_entity_code             => 'REVENUE'
16780         , p_event_class_code        => 'REVENUE'
16781         , p_side                    => 'NA'
16782         );
16783 
16784   END IF;
16785 
16786    --
16787    --
16788    END IF;
16789    --
16790    -- Bug 4922099
16791    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16792           (NVL(l_enc_upg_option, 'N') = 'O')
16793         ) AND
16794         (l_bflow_method_code = 'PRIOR_ENTRY')
16795       )
16796    THEN
16797       IF
16798       --
16799       1 = 2
16800       --
16801       THEN
16802       xla_accounting_err_pkg.build_message
16803                                     (p_appli_s_name            => 'XLA'
16804                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16805                                     ,p_token_1                 => 'LINE_NUMBER'
16806                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16807                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16808                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16809                                                                              l_component_type
16810                                                                             ,l_component_code
16811                                                                             ,l_component_type_code
16812                                                                             ,l_component_appl_id
16813                                                                             ,l_amb_context_code
16814                                                                             ,l_entity_code
16815                                                                             ,l_event_class_code
16816                                                                            )
16817                                     ,p_token_3                 => 'OWNER'
16818                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16819                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16820                                                                           ,p_lookup_code    => l_component_type_code
16821                                                                          )
16822                                     ,p_token_4                 => 'PRODUCT_NAME'
16823                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16824                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16825                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16826                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16827                                     ,p_ae_header_id            =>  NULL
16828                                        );
16829 
16830         IF (C_LEVEL_ERROR>= g_log_level) THEN
16831                  trace
16832                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16833                       ,p_level    => C_LEVEL_ERROR
16834                       ,p_module   => l_log_module);
16835         END IF;
16836       END IF;
16837    END IF;
16838    --
16839    --
16840    ------------------------------------------------------------------------------------------------
16841    -- 4219869 Business Flow
16842    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16843    -- Prior Entry.  Currently, the following code is always generated.
16844    ------------------------------------------------------------------------------------------------
16845    XLA_AE_LINES_PKG.ValidateCurrentLine;
16846 
16847    ------------------------------------------------------------------------------------
16848    -- 4219869 Business Flow
16849    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16850    ------------------------------------------------------------------------------------
16851    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16852 
16853    ----------------------------------------------------------------------------------
16854    -- 4219869 Business Flow
16855    -- Update journal entry status -- Need to generate this within IF <condition>
16856    ----------------------------------------------------------------------------------
16857    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16858          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16859          ,p_balance_type_code => l_balance_type_code
16860          );
16861 
16862    -------------------------------------------------------------------------------------------
16863    -- 4262811 - Generate the Accrual Reversal lines
16864    -------------------------------------------------------------------------------------------
16865    BEGIN
16866       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16867                               (g_array_event(p_event_id).array_value_num('header_index'));
16868       IF l_acc_rev_flag IS NULL THEN
16869          l_acc_rev_flag := 'N';
16870       END IF;
16871    EXCEPTION
16872       WHEN OTHERS THEN
16876    IF (l_acc_rev_flag = 'Y') THEN
16873          l_acc_rev_flag := 'N';
16874    END;
16875    --
16877 
16878        -- 4645092  ------------------------------------------------------------------------------
16879        -- To allow MPA report to determine if it should generate report process
16880        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16881        ------------------------------------------------------------------------------------------
16882 
16883        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16884        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16885 
16886        --
16887        -- Update the line information that should be overwritten
16888        --
16889        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16890                                          p_header_num   => 1);
16891        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16892 
16893        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16894 
16895        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16896           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16897        END IF;
16898 
16899       --
16900       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16901       --
16902       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16903           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16904       ELSE
16905           ---------------------------------------------------------------------------------------------------
16906           -- 4262811a Switch Sign
16907           ---------------------------------------------------------------------------------------------------
16908           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16909           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16910                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16911           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16912                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16913           -- 5132302
16914           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16915                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16916 
16917       END IF;
16918 
16919       -- 4955764
16920       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16921       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16922 
16923 
16924       XLA_AE_LINES_PKG.ValidateCurrentLine;
16925       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16926 
16927       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16928                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16929                ,p_balance_type_code => l_balance_type_code);
16930 
16931    END IF;
16932 
16933    -----------------------------------------------------------------------------------------
16934    -- 4262811 Multiperiod Accounting
16935    -----------------------------------------------------------------------------------------
16936      -- No MPA option is assigned.
16937 
16938 
16939 END IF;
16940 END IF;
16941 --
16942 
16943 --
16944 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16945    trace
16946       (p_msg      => 'END of AcctLineType_50'
16947       ,p_level    => C_LEVEL_PROCEDURE
16948       ,p_module   => l_log_module);
16949 END IF;
16950 --
16951 EXCEPTION
16952   WHEN xla_exceptions_pkg.application_exception THEN
16953       RAISE;
16954   WHEN OTHERS THEN
16955        xla_exceptions_pkg.raise_message
16956            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_50');
16957 END AcctLineType_50;
16958 --
16959 
16960 ---------------------------------------
16961 --
16962 -- PRIVATE FUNCTION
16963 --         AcctLineType_51
16964 --
16965 ---------------------------------------
16966 PROCEDURE AcctLineType_51 (
16967   p_application_id        IN NUMBER
16968  ,p_event_id              IN NUMBER
16969  ,p_calculate_acctd_flag  IN VARCHAR2
16970  ,p_calculate_g_l_flag    IN VARCHAR2
16971  ,p_actual_flag           IN OUT VARCHAR2
16972  ,p_balance_type_code     OUT VARCHAR2
16973  ,p_gain_or_loss_ref      OUT VARCHAR2
16974  
16975 --Event Revenue CCID
16976  , p_source_1            IN NUMBER
16977 --Entered Currency Code
16978  , p_source_26            IN VARCHAR2
16979 --Exchange Rate Date
16980  , p_source_28            IN DATE
16981 --Exchange Rate
16982  , p_source_29            IN NUMBER
16983 --Exchange Rate Type
16984  , p_source_30            IN VARCHAR2
16985 --Entered Amount
16986  , p_source_42            IN NUMBER
16987 --Accounted Amount
16988  , p_source_43            IN NUMBER
16989 --Revenue Distribution Type
16990  , p_source_46            IN VARCHAR2
16991 --Crediting Revenue Flag
16992  , p_source_48            IN VARCHAR2
16993 --Revenue First Distribution ID
16994  , p_source_49            IN NUMBER
16995 --Revenue Second Distribution ID
16996  , p_source_50            IN NUMBER
16997 --Event ID
16998  , p_source_51            IN NUMBER
16999 --Revenue Event Type Classification
17000  , p_source_72            IN VARCHAR2
17001  , p_source_72_meaning    IN VARCHAR2
17002 )
17003 IS
17004 
17005 l_component_type              VARCHAR2(80);
17006 l_component_code              VARCHAR2(30);
17010 l_entity_code                 VARCHAR2(30);
17007 l_component_type_code         VARCHAR2(1);
17008 l_component_appl_id           INTEGER;
17009 l_amb_context_code            VARCHAR2(30);
17011 l_event_class_code            VARCHAR2(30);
17012 l_ae_header_id                NUMBER;
17013 l_event_type_code             VARCHAR2(30);
17014 l_line_definition_code        VARCHAR2(30);
17015 l_line_definition_owner_code  VARCHAR2(1);
17016 --
17017 -- adr variables
17018 l_segment                     VARCHAR2(30);
17019 l_ccid                        NUMBER;
17020 l_adr_transaction_coa_id      NUMBER;
17021 l_adr_accounting_coa_id       NUMBER;
17022 l_adr_flexfield_segment_code  VARCHAR2(30);
17023 l_adr_flex_value_set_id       NUMBER;
17024 l_adr_value_type_code         VARCHAR2(30);
17025 l_adr_value_combination_id    NUMBER;
17026 l_adr_value_segment_code      VARCHAR2(30);
17027 
17028 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17029 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17030 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17031 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17032 
17033 -- 4262811 Variables ------------------------------------------------------------------------------------------
17034 l_entered_amt_idx             NUMBER;
17035 l_accted_amt_idx              NUMBER;
17036 l_acc_rev_flag                VARCHAR2(1);
17037 l_accrual_line_num            NUMBER;
17038 l_tmp_amt                     NUMBER;
17039 l_acc_rev_natural_side_code   VARCHAR2(1);
17040 
17041 l_num_entries                 NUMBER;
17042 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17043 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17044 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17045 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17046 l_recog_line_1                NUMBER;
17047 l_recog_line_2                NUMBER;
17048 
17049 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17050 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17051 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17052 
17053 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17054 
17055 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17056 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17057 
17058 ---------------------------------------------------------------------------------------------------------------
17059 
17060 
17061 --
17062 -- bulk performance
17063 --
17064 l_balance_type_code           VARCHAR2(1);
17065 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17066 l_log_module                  VARCHAR2(240);
17067 
17068 --
17069 -- Upgrade strategy
17070 --
17071 l_actual_upg_option           VARCHAR2(1);
17072 l_enc_upg_option           VARCHAR2(1);
17073 
17074 --
17075 BEGIN
17076 --
17077 IF g_log_enabled THEN
17078       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
17079 END IF;
17080 --
17081 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17082 
17083       trace
17084          (p_msg      => 'BEGIN of AcctLineType_51'
17085          ,p_level    => C_LEVEL_PROCEDURE
17086          ,p_module   => l_log_module);
17087 
17088 END IF;
17089 --
17090 l_component_type             := 'AMB_JLT';
17091 l_component_code             := 'PA_EVENT_WO_REV';
17092 l_component_type_code        := 'S';
17093 l_component_appl_id          :=  275;
17094 l_amb_context_code           := 'DEFAULT';
17095 l_entity_code                := 'REVENUE';
17096 l_event_class_code           := 'REVENUE';
17097 l_event_type_code            := 'REVENUE_ALL';
17098 l_line_definition_owner_code := 'S';
17099 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
17100 --
17101 l_balance_type_code          := 'A';
17102 l_segment                     := NULL;
17103 l_ccid                        := NULL;
17104 l_adr_transaction_coa_id      := NULL;
17105 l_adr_accounting_coa_id       := NULL;
17106 l_adr_flexfield_segment_code  := NULL;
17107 l_adr_flex_value_set_id       := NULL;
17108 l_adr_value_type_code         := NULL;
17109 l_adr_value_combination_id    := NULL;
17110 l_adr_value_segment_code      := NULL;
17111 
17112 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17113 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
17114 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17115 l_budgetary_control_flag     := 'N';
17116 
17117 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17118 l_bflow_applied_to_amt       := NULL; -- 5132302
17119 l_entered_amt_idx            := NULL;          -- 4262811
17120 l_accted_amt_idx             := NULL;          -- 4262811
17121 l_acc_rev_flag               := NULL;          -- 4262811
17122 l_accrual_line_num           := NULL;          -- 4262811
17123 l_tmp_amt                    := NULL;          -- 4262811
17124 --
17125  
17126 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17127     l_balance_type_code <> 'B' THEN
17128 IF NVL(p_source_46,'
17129 ') =  'Revenue - Event Revenue' AND 
17130 NVL(p_source_72,'
17131 ') =  'WRITE OFF' AND 
17132 NVL(p_source_48,'
17133 ') =  'N'
17134  THEN 
17135 
17136    --
17137    XLA_AE_LINES_PKG.SetNewLine;
17138 
17139    p_balance_type_code          := l_balance_type_code;
17140    -- set the flag so later we will know whether the gain loss line needs to be created
17141    
17142    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17143      p_actual_flag :='A';
17144    END IF;
17145 
17149    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17146    --
17147    -- bulk performance
17148    --
17150                                       p_header_num   => 0); -- 4262811
17151    --
17152    -- set accounting line options
17153    --
17154    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17155            p_natural_side_code          => 'D'
17156          , p_gain_or_loss_flag          => 'N'
17157          , p_gl_transfer_mode_code      => 'S'
17158          , p_acct_entry_type_code       => 'A'
17159          , p_switch_side_flag           => 'Y'
17160          , p_merge_duplicate_code       => 'N'
17161          );
17162    --
17163    l_acc_rev_natural_side_code := 'C';  -- 4262811
17164    -- 
17165    --
17166    -- set accounting line type info
17167    --
17168    xla_ae_lines_pkg.SetAcctLineType
17169       (p_component_type             => l_component_type
17170       ,p_event_type_code            => l_event_type_code
17171       ,p_line_definition_owner_code => l_line_definition_owner_code
17172       ,p_line_definition_code       => l_line_definition_code
17173       ,p_accounting_line_code       => l_component_code
17174       ,p_accounting_line_type_code  => l_component_type_code
17175       ,p_accounting_line_appl_id    => l_component_appl_id
17176       ,p_amb_context_code           => l_amb_context_code
17177       ,p_entity_code                => l_entity_code
17178       ,p_event_class_code           => l_event_class_code);
17179    --
17180    -- set accounting class
17181    --
17182    xla_ae_lines_pkg.SetAcctClass(
17183            p_accounting_class_code  => 'EVENT_WO_REVENUE'
17184          , p_ae_header_id           => l_ae_header_id
17185          );
17186 
17187    --
17188    -- set rounding class
17189    --
17190    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17191                       'EVENT_WO_REVENUE';
17192 
17193    --
17194    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17195    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17196    --
17197    -- bulk performance
17198    --
17199    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17200 
17201    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17202       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17203 
17204    -- 4955764
17205    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17206       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17207 
17208    -- 4458381 Public Sector Enh
17209    
17210    --
17211    -- set accounting attributes for the line type
17212    --
17213    l_entered_amt_idx := 4;
17214    l_accted_amt_idx  := 10;
17215    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17216    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17217    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
17218    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
17219    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
17220    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
17221    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
17222    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
17223    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
17224    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
17225    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
17226    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
17227    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
17228    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
17229    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
17230    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
17231    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
17232    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
17233    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
17234    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
17235    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
17236 
17237    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17238    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17239 
17240    ---------------------------------------------------------------------------------------------------------------
17241    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17242    ---------------------------------------------------------------------------------------------------------------
17243    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17244 
17245    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17246    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17247 
17248    IF xla_accounting_cache_pkg.GetValueChar
17249          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17250          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17251    AND l_bflow_method_code = 'PRIOR_ENTRY'
17252 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17253    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17254          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17255        )
17256    THEN
17257          xla_ae_lines_pkg.BflowUpgEntry
17258            (p_business_method_code    => l_bflow_method_code
17259            ,p_business_class_code     => l_bflow_class_code
17260            ,p_balance_type            => l_balance_type_code);
17264    END IF;
17261    ELSE
17262       NULL;
17263 -- No business flow processing for business flow method of NONE.
17265 
17266    --
17267    -- call analytical criteria
17268    --
17269    
17270    --
17271    -- call description
17272    --
17273    -- No description or it is inherited.
17274    --
17275    -- call ADRs
17276    -- Bug 4922099
17277    --
17278    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17279         (NVL(l_actual_upg_option, 'N') = 'O') OR
17280         (NVL(l_enc_upg_option, 'N') = 'O')
17281       )
17282    THEN
17283    NULL;
17284    --
17285    --
17286    
17287   l_ccid := AcctDerRule_1(
17288            p_application_id           => p_application_id
17289          , p_ae_header_id             => l_ae_header_id 
17290 , p_source_1 => p_source_1
17291          , x_transaction_coa_id       => l_adr_transaction_coa_id
17292          , x_accounting_coa_id        => l_adr_accounting_coa_id
17293          , x_value_type_code          => l_adr_value_type_code
17294          , p_side                     => 'NA'
17295    );
17296 
17297    xla_ae_lines_pkg.set_ccid(
17298     p_code_combination_id          => l_ccid
17299   , p_value_type_code              => l_adr_value_type_code
17300   , p_transaction_coa_id           => l_adr_transaction_coa_id
17301   , p_accounting_coa_id            => l_adr_accounting_coa_id
17302   , p_adr_code                     => 'EVENT_REVENUE_RULE'
17303   , p_adr_type_code                => 'S'
17304   , p_component_type               => l_component_type
17305   , p_component_code               => l_component_code
17306   , p_component_type_code          => l_component_type_code
17307   , p_component_appl_id            => l_component_appl_id
17308   , p_amb_context_code             => l_amb_context_code
17309   , p_side                         => 'NA'
17310   );
17311 
17312 
17313    --
17314    --
17315    END IF;
17316    --
17317    -- Bug 4922099
17318    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17319           (NVL(l_enc_upg_option, 'N') = 'O')
17320         ) AND
17321         (l_bflow_method_code = 'PRIOR_ENTRY')
17322       )
17323    THEN
17324       IF
17325       --
17326       1 = 2
17327       --
17328       THEN
17329       xla_accounting_err_pkg.build_message
17330                                     (p_appli_s_name            => 'XLA'
17331                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17332                                     ,p_token_1                 => 'LINE_NUMBER'
17333                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17334                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17335                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17336                                                                              l_component_type
17337                                                                             ,l_component_code
17338                                                                             ,l_component_type_code
17339                                                                             ,l_component_appl_id
17340                                                                             ,l_amb_context_code
17341                                                                             ,l_entity_code
17342                                                                             ,l_event_class_code
17343                                                                            )
17344                                     ,p_token_3                 => 'OWNER'
17345                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17346                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17347                                                                           ,p_lookup_code    => l_component_type_code
17348                                                                          )
17349                                     ,p_token_4                 => 'PRODUCT_NAME'
17350                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17351                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17352                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17353                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17354                                     ,p_ae_header_id            =>  NULL
17355                                        );
17356 
17357         IF (C_LEVEL_ERROR>= g_log_level) THEN
17358                  trace
17359                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17360                       ,p_level    => C_LEVEL_ERROR
17361                       ,p_module   => l_log_module);
17362         END IF;
17363       END IF;
17364    END IF;
17365    --
17366    --
17367    ------------------------------------------------------------------------------------------------
17368    -- 4219869 Business Flow
17369    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17370    -- Prior Entry.  Currently, the following code is always generated.
17371    ------------------------------------------------------------------------------------------------
17372    XLA_AE_LINES_PKG.ValidateCurrentLine;
17373 
17374    ------------------------------------------------------------------------------------
17375    -- 4219869 Business Flow
17376    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17377    ------------------------------------------------------------------------------------
17378    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17379 
17383    ----------------------------------------------------------------------------------
17380    ----------------------------------------------------------------------------------
17381    -- 4219869 Business Flow
17382    -- Update journal entry status -- Need to generate this within IF <condition>
17384    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17385          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17386          ,p_balance_type_code => l_balance_type_code
17387          );
17388 
17389    -------------------------------------------------------------------------------------------
17390    -- 4262811 - Generate the Accrual Reversal lines
17391    -------------------------------------------------------------------------------------------
17392    BEGIN
17393       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17394                               (g_array_event(p_event_id).array_value_num('header_index'));
17395       IF l_acc_rev_flag IS NULL THEN
17396          l_acc_rev_flag := 'N';
17397       END IF;
17398    EXCEPTION
17399       WHEN OTHERS THEN
17400          l_acc_rev_flag := 'N';
17401    END;
17402    --
17403    IF (l_acc_rev_flag = 'Y') THEN
17404 
17405        -- 4645092  ------------------------------------------------------------------------------
17406        -- To allow MPA report to determine if it should generate report process
17407        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17408        ------------------------------------------------------------------------------------------
17409 
17410        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17411        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17412 
17413        --
17414        -- Update the line information that should be overwritten
17415        --
17416        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17417                                          p_header_num   => 1);
17418        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17419 
17420        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17421 
17422        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17423           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17424        END IF;
17425 
17426       --
17427       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17428       --
17429       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17430           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17431       ELSE
17432           ---------------------------------------------------------------------------------------------------
17433           -- 4262811a Switch Sign
17434           ---------------------------------------------------------------------------------------------------
17435           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17436           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17437                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17438           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17439                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17440           -- 5132302
17441           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17442                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17443 
17444       END IF;
17445 
17446       -- 4955764
17447       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17448       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17449 
17450 
17451       XLA_AE_LINES_PKG.ValidateCurrentLine;
17452       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17453 
17454       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17455                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17456                ,p_balance_type_code => l_balance_type_code);
17457 
17458    END IF;
17459 
17460    -----------------------------------------------------------------------------------------
17461    -- 4262811 Multiperiod Accounting
17462    -----------------------------------------------------------------------------------------
17463      -- No MPA option is assigned.
17464 
17465 
17466 END IF;
17467 END IF;
17468 --
17469 
17470 --
17471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17472    trace
17473       (p_msg      => 'END of AcctLineType_51'
17474       ,p_level    => C_LEVEL_PROCEDURE
17475       ,p_module   => l_log_module);
17476 END IF;
17477 --
17478 EXCEPTION
17479   WHEN xla_exceptions_pkg.application_exception THEN
17480       RAISE;
17481   WHEN OTHERS THEN
17482        xla_exceptions_pkg.raise_message
17483            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_51');
17484 END AcctLineType_51;
17485 --
17486 
17487 ---------------------------------------
17488 --
17489 -- PRIVATE FUNCTION
17490 --         AcctLineType_52
17491 --
17492 ---------------------------------------
17493 PROCEDURE AcctLineType_52 (
17494   p_application_id        IN NUMBER
17495  ,p_event_id              IN NUMBER
17496  ,p_calculate_acctd_flag  IN VARCHAR2
17497  ,p_calculate_g_l_flag    IN VARCHAR2
17498  ,p_actual_flag           IN OUT VARCHAR2
17499  ,p_balance_type_code     OUT VARCHAR2
17500  ,p_gain_or_loss_ref      OUT VARCHAR2
17501  
17502 --Actual Upgrade Credit Accounting Class
17506 --Exchange Rate Date
17503  , p_source_24            IN VARCHAR2
17504 --Entered Currency Code
17505  , p_source_26            IN VARCHAR2
17507  , p_source_28            IN DATE
17508 --Exchange Rate
17509  , p_source_29            IN NUMBER
17510 --Exchange Rate Type
17511  , p_source_30            IN VARCHAR2
17512 --Actual Upgrade Debit Accounting Class
17513  , p_source_31            IN VARCHAR2
17514 --Use Actuals Upgrade Attributes Flag
17515  , p_source_32            IN VARCHAR2
17516 --Entered Amount
17517  , p_source_42            IN NUMBER
17518 --Accounted Amount
17519  , p_source_43            IN NUMBER
17520 --Revenue Distribution Type
17521  , p_source_46            IN VARCHAR2
17522 --Crediting Revenue Flag
17523  , p_source_48            IN VARCHAR2
17524 --Revenue First Distribution ID
17525  , p_source_49            IN NUMBER
17526 --Revenue Second Distribution ID
17527  , p_source_50            IN NUMBER
17528 --Event ID
17529  , p_source_51            IN NUMBER
17530 --Actual Upgrade Credit CCID
17531  , p_source_64            IN NUMBER
17532 --Actual Upgrade Debit CCID
17533  , p_source_65            IN NUMBER
17534 --Application ID
17535  , p_source_66            IN NUMBER
17536 --Revenue Entity Code
17537  , p_source_67            IN VARCHAR2
17538 --Crediting Revenue First Distribution ID
17539  , p_source_68            IN NUMBER
17540 --Project ID
17541  , p_source_69            IN NUMBER
17542 --Crediting Revenue Second Distribution ID
17543  , p_source_70            IN NUMBER
17544 --Draft Revenue Number Credited
17545  , p_source_71            IN NUMBER
17546 --Revenue Event Type Classification
17547  , p_source_72            IN VARCHAR2
17548  , p_source_72_meaning    IN VARCHAR2
17549 )
17550 IS
17551 
17552 l_component_type              VARCHAR2(80);
17553 l_component_code              VARCHAR2(30);
17554 l_component_type_code         VARCHAR2(1);
17555 l_component_appl_id           INTEGER;
17556 l_amb_context_code            VARCHAR2(30);
17557 l_entity_code                 VARCHAR2(30);
17558 l_event_class_code            VARCHAR2(30);
17559 l_ae_header_id                NUMBER;
17560 l_event_type_code             VARCHAR2(30);
17561 l_line_definition_code        VARCHAR2(30);
17562 l_line_definition_owner_code  VARCHAR2(1);
17563 --
17564 -- adr variables
17565 l_segment                     VARCHAR2(30);
17566 l_ccid                        NUMBER;
17567 l_adr_transaction_coa_id      NUMBER;
17568 l_adr_accounting_coa_id       NUMBER;
17569 l_adr_flexfield_segment_code  VARCHAR2(30);
17570 l_adr_flex_value_set_id       NUMBER;
17571 l_adr_value_type_code         VARCHAR2(30);
17572 l_adr_value_combination_id    NUMBER;
17573 l_adr_value_segment_code      VARCHAR2(30);
17574 
17575 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17576 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17577 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17578 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17579 
17580 -- 4262811 Variables ------------------------------------------------------------------------------------------
17581 l_entered_amt_idx             NUMBER;
17582 l_accted_amt_idx              NUMBER;
17583 l_acc_rev_flag                VARCHAR2(1);
17584 l_accrual_line_num            NUMBER;
17585 l_tmp_amt                     NUMBER;
17586 l_acc_rev_natural_side_code   VARCHAR2(1);
17587 
17588 l_num_entries                 NUMBER;
17589 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17590 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17591 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17592 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17593 l_recog_line_1                NUMBER;
17594 l_recog_line_2                NUMBER;
17595 
17596 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17597 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17598 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17599 
17600 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17601 
17602 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17603 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17604 
17605 ---------------------------------------------------------------------------------------------------------------
17606 
17607 
17608 --
17609 -- bulk performance
17610 --
17611 l_balance_type_code           VARCHAR2(1);
17612 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17613 l_log_module                  VARCHAR2(240);
17614 
17615 --
17616 -- Upgrade strategy
17617 --
17618 l_actual_upg_option           VARCHAR2(1);
17619 l_enc_upg_option           VARCHAR2(1);
17620 
17621 --
17622 BEGIN
17623 --
17624 IF g_log_enabled THEN
17625       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
17626 END IF;
17627 --
17628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17629 
17630       trace
17631          (p_msg      => 'BEGIN of AcctLineType_52'
17632          ,p_level    => C_LEVEL_PROCEDURE
17633          ,p_module   => l_log_module);
17634 
17635 END IF;
17636 --
17637 l_component_type             := 'AMB_JLT';
17638 l_component_code             := 'PA_EVENT_WO_REV_ADJ';
17639 l_component_type_code        := 'S';
17640 l_component_appl_id          :=  275;
17641 l_amb_context_code           := 'DEFAULT';
17642 l_entity_code                := 'REVENUE';
17643 l_event_class_code           := 'REVENUE_ADJ';
17644 l_event_type_code            := 'REVENUE_ADJ_ALL';
17645 l_line_definition_owner_code := 'S';
17649 l_segment                     := NULL;
17646 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
17647 --
17648 l_balance_type_code          := 'A';
17650 l_ccid                        := NULL;
17651 l_adr_transaction_coa_id      := NULL;
17652 l_adr_accounting_coa_id       := NULL;
17653 l_adr_flexfield_segment_code  := NULL;
17654 l_adr_flex_value_set_id       := NULL;
17655 l_adr_value_type_code         := NULL;
17656 l_adr_value_combination_id    := NULL;
17657 l_adr_value_segment_code      := NULL;
17658 
17659 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
17660 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
17661 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
17662 l_budgetary_control_flag     := 'N';
17663 
17664 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17665 l_bflow_applied_to_amt       := NULL; -- 5132302
17666 l_entered_amt_idx            := NULL;          -- 4262811
17667 l_accted_amt_idx             := NULL;          -- 4262811
17668 l_acc_rev_flag               := NULL;          -- 4262811
17669 l_accrual_line_num           := NULL;          -- 4262811
17670 l_tmp_amt                    := NULL;          -- 4262811
17671 --
17672  
17673 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17674     l_balance_type_code <> 'B' THEN
17675 IF NVL(p_source_46,'
17676 ') =  'Revenue - Event Revenue' AND 
17677 NVL(p_source_72,'
17678 ') =  'WRITE OFF' AND 
17679 NVL(p_source_48,'
17680 ') =  'Y'
17681  THEN 
17682 
17683    --
17684    XLA_AE_LINES_PKG.SetNewLine;
17685 
17686    p_balance_type_code          := l_balance_type_code;
17687    -- set the flag so later we will know whether the gain loss line needs to be created
17688    
17689    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17690      p_actual_flag :='A';
17691    END IF;
17692 
17693    --
17694    -- bulk performance
17695    --
17696    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17697                                       p_header_num   => 0); -- 4262811
17698    --
17699    -- set accounting line options
17700    --
17701    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17702            p_natural_side_code          => 'C'
17703          , p_gain_or_loss_flag          => 'N'
17704          , p_gl_transfer_mode_code      => 'S'
17705          , p_acct_entry_type_code       => 'A'
17706          , p_switch_side_flag           => 'Y'
17707          , p_merge_duplicate_code       => 'N'
17708          );
17709    --
17710    l_acc_rev_natural_side_code := 'D';  -- 4262811
17711    -- 
17712    --
17713    -- set accounting line type info
17714    --
17715    xla_ae_lines_pkg.SetAcctLineType
17716       (p_component_type             => l_component_type
17717       ,p_event_type_code            => l_event_type_code
17718       ,p_line_definition_owner_code => l_line_definition_owner_code
17719       ,p_line_definition_code       => l_line_definition_code
17720       ,p_accounting_line_code       => l_component_code
17721       ,p_accounting_line_type_code  => l_component_type_code
17722       ,p_accounting_line_appl_id    => l_component_appl_id
17723       ,p_amb_context_code           => l_amb_context_code
17724       ,p_entity_code                => l_entity_code
17725       ,p_event_class_code           => l_event_class_code);
17726    --
17727    -- set accounting class
17728    --
17729    xla_ae_lines_pkg.SetAcctClass(
17730            p_accounting_class_code  => 'EVENT_WO_REVENUE'
17731          , p_ae_header_id           => l_ae_header_id
17732          );
17733 
17734    --
17735    -- set rounding class
17736    --
17737    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17738                       'EVENT_WO_REVENUE';
17739 
17740    --
17741    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17742    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17743    --
17744    -- bulk performance
17745    --
17746    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17747 
17748    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17749       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17750 
17751    -- 4955764
17752    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17753       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17754 
17755    -- 4458381 Public Sector Enh
17756    
17757    --
17758    -- set accounting attributes for the line type
17759    --
17760    l_entered_amt_idx := 28;
17761    l_accted_amt_idx  := 31;
17762    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17763    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
17764    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
17765    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
17766    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
17767    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
17768    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
17769    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
17770    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
17771    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
17772    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
17773    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
17774    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
17775    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
17779    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
17776    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
17777    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
17778    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
17780    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
17781    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
17782    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
17783    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
17784    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
17785    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
17786    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
17787    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
17788    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
17789    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
17790    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
17791    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
17792    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
17793    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
17794    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
17795    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
17796    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
17797    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
17798    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
17799    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
17800    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
17801    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
17802    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
17803    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
17804    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
17805    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
17806    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
17807    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
17808    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
17809    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
17810    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
17811    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
17812    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
17813    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
17814    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
17815    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
17816    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
17817    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
17818    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
17819    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
17820    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
17821    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
17822    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
17823    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
17824    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
17825 
17826    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17827    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17828 
17829    ---------------------------------------------------------------------------------------------------------------
17830    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17831    ---------------------------------------------------------------------------------------------------------------
17832    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17833 
17834    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17835    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17836 
17837    IF xla_accounting_cache_pkg.GetValueChar
17838          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17839          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17840    AND l_bflow_method_code = 'PRIOR_ENTRY'
17841 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17842    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17843          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17844        )
17845    THEN
17846          xla_ae_lines_pkg.BflowUpgEntry
17847            (p_business_method_code    => l_bflow_method_code
17848            ,p_business_class_code     => l_bflow_class_code
17849            ,p_balance_type            => l_balance_type_code);
17850    ELSE
17851       NULL;
17852 XLA_AE_LINES_PKG.business_flow_validation(
17853                                 p_business_method_code     => l_bflow_method_code
17854                                ,p_business_class_code      => l_bflow_class_code
17855                                ,p_inherit_description_flag => l_inherit_desc_flag);
17856    END IF;
17857 
17858    --
17859    -- call analytical criteria
17860    --
17861    -- Inherited Analytical Criteria for business flow method of Prior Entry.
17862    --
17863    -- call description
17864    --
17865    -- No description or it is inherited.
17866    --
17867    -- call ADRs
17868    -- Bug 4922099
17869    --
17870    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17871         (NVL(l_actual_upg_option, 'N') = 'O') OR
17872         (NVL(l_enc_upg_option, 'N') = 'O')
17873       )
17874    THEN
17875    NULL;
17876    --
17877    --
17878    
17879    --
17880    --
17881    END IF;
17885           (NVL(l_enc_upg_option, 'N') = 'O')
17882    --
17883    -- Bug 4922099
17884    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17886         ) AND
17887         (l_bflow_method_code = 'PRIOR_ENTRY')
17888       )
17889    THEN
17890       IF
17891       --
17892       1 = 1
17893       --
17894       THEN
17895       xla_accounting_err_pkg.build_message
17896                                     (p_appli_s_name            => 'XLA'
17897                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17898                                     ,p_token_1                 => 'LINE_NUMBER'
17899                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17900                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17901                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17902                                                                              l_component_type
17903                                                                             ,l_component_code
17904                                                                             ,l_component_type_code
17905                                                                             ,l_component_appl_id
17906                                                                             ,l_amb_context_code
17907                                                                             ,l_entity_code
17908                                                                             ,l_event_class_code
17909                                                                            )
17910                                     ,p_token_3                 => 'OWNER'
17911                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17912                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17913                                                                           ,p_lookup_code    => l_component_type_code
17914                                                                          )
17915                                     ,p_token_4                 => 'PRODUCT_NAME'
17916                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17917                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17918                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17919                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17920                                     ,p_ae_header_id            =>  NULL
17921                                        );
17922 
17923         IF (C_LEVEL_ERROR>= g_log_level) THEN
17924                  trace
17925                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17926                       ,p_level    => C_LEVEL_ERROR
17927                       ,p_module   => l_log_module);
17928         END IF;
17929       END IF;
17930    END IF;
17931    --
17932    --
17933    ------------------------------------------------------------------------------------------------
17934    -- 4219869 Business Flow
17935    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17936    -- Prior Entry.  Currently, the following code is always generated.
17937    ------------------------------------------------------------------------------------------------
17938    -- No ValidateCurrentLine for business flow method of Prior Entry
17939 
17940    ------------------------------------------------------------------------------------
17941    -- 4219869 Business Flow
17942    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17943    ------------------------------------------------------------------------------------
17944    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17945 
17946    ----------------------------------------------------------------------------------
17947    -- 4219869 Business Flow
17948    -- Update journal entry status -- Need to generate this within IF <condition>
17949    ----------------------------------------------------------------------------------
17950    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17951          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17952          ,p_balance_type_code => l_balance_type_code
17953          );
17954 
17955    -------------------------------------------------------------------------------------------
17956    -- 4262811 - Generate the Accrual Reversal lines
17957    -------------------------------------------------------------------------------------------
17958    BEGIN
17959       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17960                               (g_array_event(p_event_id).array_value_num('header_index'));
17961       IF l_acc_rev_flag IS NULL THEN
17962          l_acc_rev_flag := 'N';
17963       END IF;
17964    EXCEPTION
17965       WHEN OTHERS THEN
17966          l_acc_rev_flag := 'N';
17967    END;
17968    --
17969    IF (l_acc_rev_flag = 'Y') THEN
17970 
17971        -- 4645092  ------------------------------------------------------------------------------
17972        -- To allow MPA report to determine if it should generate report process
17973        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17974        ------------------------------------------------------------------------------------------
17975 
17976        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17977        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17978 
17979        --
17980        -- Update the line information that should be overwritten
17981        --
17982        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17983                                          p_header_num   => 1);
17987 
17984        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17985 
17986        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17988        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17989           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17990        END IF;
17991 
17992       --
17993       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17994       --
17995       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17996           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17997       ELSE
17998           ---------------------------------------------------------------------------------------------------
17999           -- 4262811a Switch Sign
18000           ---------------------------------------------------------------------------------------------------
18001           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18002           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18003                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18004           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18005                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18006           -- 5132302
18007           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18008                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18009 
18010       END IF;
18011 
18012       -- 4955764
18013       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18015 
18016 
18017       XLA_AE_LINES_PKG.ValidateCurrentLine;
18018       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18019 
18020       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18021                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18022                ,p_balance_type_code => l_balance_type_code);
18023 
18024    END IF;
18025 
18026    -----------------------------------------------------------------------------------------
18027    -- 4262811 Multiperiod Accounting
18028    -----------------------------------------------------------------------------------------
18029      -- No MPA option is assigned.
18030 
18031 
18032 END IF;
18033 END IF;
18034 --
18035 
18036 --
18037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18038    trace
18039       (p_msg      => 'END of AcctLineType_52'
18040       ,p_level    => C_LEVEL_PROCEDURE
18041       ,p_module   => l_log_module);
18042 END IF;
18043 --
18044 EXCEPTION
18045   WHEN xla_exceptions_pkg.application_exception THEN
18046       RAISE;
18047   WHEN OTHERS THEN
18048        xla_exceptions_pkg.raise_message
18049            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_52');
18050 END AcctLineType_52;
18051 --
18052 
18053 ---------------------------------------
18054 --
18055 -- PRIVATE FUNCTION
18056 --         AcctLineType_53
18057 --
18058 ---------------------------------------
18059 PROCEDURE AcctLineType_53 (
18060   p_application_id        IN NUMBER
18061  ,p_event_id              IN NUMBER
18062  ,p_calculate_acctd_flag  IN VARCHAR2
18063  ,p_calculate_g_l_flag    IN VARCHAR2
18064  ,p_actual_flag           IN OUT VARCHAR2
18065  ,p_balance_type_code     OUT VARCHAR2
18066  ,p_gain_or_loss_ref      OUT VARCHAR2
18067  
18068 --Event Revenue CCID
18069  , p_source_1            IN NUMBER
18070 --Actual Upgrade Credit Accounting Class
18071  , p_source_24            IN VARCHAR2
18072 --Entered Currency Code
18073  , p_source_26            IN VARCHAR2
18074 --Exchange Rate Date
18075  , p_source_28            IN DATE
18076 --Exchange Rate
18077  , p_source_29            IN NUMBER
18078 --Exchange Rate Type
18079  , p_source_30            IN VARCHAR2
18080 --Actual Upgrade Debit Accounting Class
18081  , p_source_31            IN VARCHAR2
18082 --Use Actuals Upgrade Attributes Flag
18083  , p_source_32            IN VARCHAR2
18084 --Entered Amount
18085  , p_source_42            IN NUMBER
18086 --Accounted Amount
18087  , p_source_43            IN NUMBER
18088 --Revenue Distribution Type
18089  , p_source_46            IN VARCHAR2
18090 --Crediting Revenue Flag
18091  , p_source_48            IN VARCHAR2
18092 --Revenue First Distribution ID
18093  , p_source_49            IN NUMBER
18094 --Revenue Second Distribution ID
18095  , p_source_50            IN NUMBER
18096 --Event ID
18097  , p_source_51            IN NUMBER
18098 --Actual Upgrade Credit CCID
18099  , p_source_64            IN NUMBER
18100 --Actual Upgrade Debit CCID
18101  , p_source_65            IN NUMBER
18102 --Application ID
18103  , p_source_66            IN NUMBER
18104 --Revenue Entity Code
18105  , p_source_67            IN VARCHAR2
18106 --Crediting Revenue First Distribution ID
18107  , p_source_68            IN NUMBER
18108 --Project ID
18109  , p_source_69            IN NUMBER
18110 --Crediting Revenue Second Distribution ID
18111  , p_source_70            IN NUMBER
18112 --Draft Revenue Number Credited
18113  , p_source_71            IN NUMBER
18114 --Revenue Event Type Classification
18115  , p_source_72            IN VARCHAR2
18116  , p_source_72_meaning    IN VARCHAR2
18117 )
18118 IS
18119 
18120 l_component_type              VARCHAR2(80);
18124 l_amb_context_code            VARCHAR2(30);
18121 l_component_code              VARCHAR2(30);
18122 l_component_type_code         VARCHAR2(1);
18123 l_component_appl_id           INTEGER;
18125 l_entity_code                 VARCHAR2(30);
18126 l_event_class_code            VARCHAR2(30);
18127 l_ae_header_id                NUMBER;
18128 l_event_type_code             VARCHAR2(30);
18129 l_line_definition_code        VARCHAR2(30);
18130 l_line_definition_owner_code  VARCHAR2(1);
18131 --
18132 -- adr variables
18133 l_segment                     VARCHAR2(30);
18134 l_ccid                        NUMBER;
18135 l_adr_transaction_coa_id      NUMBER;
18136 l_adr_accounting_coa_id       NUMBER;
18137 l_adr_flexfield_segment_code  VARCHAR2(30);
18138 l_adr_flex_value_set_id       NUMBER;
18139 l_adr_value_type_code         VARCHAR2(30);
18140 l_adr_value_combination_id    NUMBER;
18141 l_adr_value_segment_code      VARCHAR2(30);
18142 
18143 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18144 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18145 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18146 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18147 
18148 -- 4262811 Variables ------------------------------------------------------------------------------------------
18149 l_entered_amt_idx             NUMBER;
18150 l_accted_amt_idx              NUMBER;
18151 l_acc_rev_flag                VARCHAR2(1);
18152 l_accrual_line_num            NUMBER;
18153 l_tmp_amt                     NUMBER;
18154 l_acc_rev_natural_side_code   VARCHAR2(1);
18155 
18156 l_num_entries                 NUMBER;
18157 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18158 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18159 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18160 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18161 l_recog_line_1                NUMBER;
18162 l_recog_line_2                NUMBER;
18163 
18164 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18165 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18166 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18167 
18168 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18169 
18170 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18171 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18172 
18173 ---------------------------------------------------------------------------------------------------------------
18174 
18175 
18176 --
18177 -- bulk performance
18178 --
18179 l_balance_type_code           VARCHAR2(1);
18180 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18181 l_log_module                  VARCHAR2(240);
18182 
18183 --
18184 -- Upgrade strategy
18185 --
18186 l_actual_upg_option           VARCHAR2(1);
18187 l_enc_upg_option           VARCHAR2(1);
18188 
18189 --
18190 BEGIN
18191 --
18192 IF g_log_enabled THEN
18193       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
18194 END IF;
18195 --
18196 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18197 
18198       trace
18199          (p_msg      => 'BEGIN of AcctLineType_53'
18200          ,p_level    => C_LEVEL_PROCEDURE
18201          ,p_module   => l_log_module);
18202 
18203 END IF;
18204 --
18205 l_component_type             := 'AMB_JLT';
18206 l_component_code             := 'PA_EVENT_WO_REV_ADJ_FED';
18207 l_component_type_code        := 'S';
18208 l_component_appl_id          :=  275;
18209 l_amb_context_code           := 'DEFAULT';
18210 l_entity_code                := 'REVENUE';
18211 l_event_class_code           := 'REVENUE_ADJ';
18212 l_event_type_code            := 'REVENUE_ADJ_ALL';
18213 l_line_definition_owner_code := 'S';
18214 l_line_definition_code       := 'FV_PROJECTS_JLD';
18215 --
18216 l_balance_type_code          := 'A';
18217 l_segment                     := NULL;
18218 l_ccid                        := NULL;
18219 l_adr_transaction_coa_id      := NULL;
18220 l_adr_accounting_coa_id       := NULL;
18221 l_adr_flexfield_segment_code  := NULL;
18222 l_adr_flex_value_set_id       := NULL;
18223 l_adr_value_type_code         := NULL;
18224 l_adr_value_combination_id    := NULL;
18225 l_adr_value_segment_code      := NULL;
18226 
18227 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18228 l_bflow_class_code           := '';    -- 4219869 Business Flow
18229 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18230 l_budgetary_control_flag     := 'N';
18231 
18232 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18233 l_bflow_applied_to_amt       := NULL; -- 5132302
18234 l_entered_amt_idx            := NULL;          -- 4262811
18235 l_accted_amt_idx             := NULL;          -- 4262811
18236 l_acc_rev_flag               := NULL;          -- 4262811
18237 l_accrual_line_num           := NULL;          -- 4262811
18238 l_tmp_amt                    := NULL;          -- 4262811
18239 --
18240  
18241 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18242     l_balance_type_code <> 'B' THEN
18243 IF NVL(p_source_46,'
18244 ') =  'Revenue - Event Revenue' AND 
18245 NVL(p_source_72,'
18246 ') =  'WRITE OFF' AND 
18247 NVL(p_source_48,'
18248 ') =  'Y'
18249  THEN 
18250 
18251    --
18252    XLA_AE_LINES_PKG.SetNewLine;
18253 
18254    p_balance_type_code          := l_balance_type_code;
18255    -- set the flag so later we will know whether the gain loss line needs to be created
18256    
18257    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18261    --
18258      p_actual_flag :='A';
18259    END IF;
18260 
18262    -- bulk performance
18263    --
18264    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18265                                       p_header_num   => 0); -- 4262811
18266    --
18267    -- set accounting line options
18268    --
18269    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18270            p_natural_side_code          => 'C'
18271          , p_gain_or_loss_flag          => 'N'
18272          , p_gl_transfer_mode_code      => 'S'
18273          , p_acct_entry_type_code       => 'A'
18274          , p_switch_side_flag           => 'Y'
18275          , p_merge_duplicate_code       => 'N'
18276          );
18277    --
18278    l_acc_rev_natural_side_code := 'D';  -- 4262811
18279    -- 
18280    --
18281    -- set accounting line type info
18282    --
18283    xla_ae_lines_pkg.SetAcctLineType
18284       (p_component_type             => l_component_type
18285       ,p_event_type_code            => l_event_type_code
18286       ,p_line_definition_owner_code => l_line_definition_owner_code
18287       ,p_line_definition_code       => l_line_definition_code
18288       ,p_accounting_line_code       => l_component_code
18289       ,p_accounting_line_type_code  => l_component_type_code
18290       ,p_accounting_line_appl_id    => l_component_appl_id
18291       ,p_amb_context_code           => l_amb_context_code
18292       ,p_entity_code                => l_entity_code
18293       ,p_event_class_code           => l_event_class_code);
18294    --
18295    -- set accounting class
18296    --
18297    xla_ae_lines_pkg.SetAcctClass(
18298            p_accounting_class_code  => 'FEDERAL_REVENUE_ADJUSTMENT'
18299          , p_ae_header_id           => l_ae_header_id
18300          );
18301 
18302    --
18303    -- set rounding class
18304    --
18305    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18306                       'FEDERAL_REVENUE_ADJUSTMENT';
18307 
18308    --
18309    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18310    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18311    --
18312    -- bulk performance
18313    --
18314    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18315 
18316    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18317       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18318 
18319    -- 4955764
18320    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18321       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18322 
18323    -- 4458381 Public Sector Enh
18324    
18325    --
18326    -- set accounting attributes for the line type
18327    --
18328    l_entered_amt_idx := 28;
18329    l_accted_amt_idx  := 31;
18330    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18331    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
18332    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
18333    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
18334    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
18335    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
18336    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
18337    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
18338    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
18339    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
18340    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
18341    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
18342    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
18343    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
18344    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
18345    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
18346    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
18347    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
18348    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
18349    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
18350    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
18351    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
18352    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
18353    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
18354    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
18355    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
18356    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
18357    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
18358    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
18359    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
18360    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
18361    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
18362    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
18363    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
18364    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
18365    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
18366    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
18367    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
18368    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
18369    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
18370    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
18371    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
18375    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
18372    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
18373    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
18374    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
18376    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
18377    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
18378    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
18379    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
18380    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
18381    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
18382    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
18383    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
18384    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
18385    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
18386    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
18387    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
18388    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
18389    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
18390    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
18391    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
18392    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
18393 
18394    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18395    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18396 
18397    ---------------------------------------------------------------------------------------------------------------
18398    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18399    ---------------------------------------------------------------------------------------------------------------
18400    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18401 
18402    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18403    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18404 
18405    IF xla_accounting_cache_pkg.GetValueChar
18406          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18407          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18408    AND l_bflow_method_code = 'PRIOR_ENTRY'
18409 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18410    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18411          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18412        )
18413    THEN
18414          xla_ae_lines_pkg.BflowUpgEntry
18415            (p_business_method_code    => l_bflow_method_code
18416            ,p_business_class_code     => l_bflow_class_code
18417            ,p_balance_type            => l_balance_type_code);
18418    ELSE
18419       NULL;
18420 -- No business flow processing for business flow method of NONE.
18421    END IF;
18422 
18423    --
18424    -- call analytical criteria
18425    --
18426    
18427    --
18428    -- call description
18429    --
18430    -- No description or it is inherited.
18431    --
18432    -- call ADRs
18433    -- Bug 4922099
18434    --
18435    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18436         (NVL(l_actual_upg_option, 'N') = 'O') OR
18437         (NVL(l_enc_upg_option, 'N') = 'O')
18438       )
18439    THEN
18440    NULL;
18441    --
18442    --
18443    
18444   l_ccid := AcctDerRule_1(
18445            p_application_id           => p_application_id
18446          , p_ae_header_id             => l_ae_header_id 
18447 , p_source_1 => p_source_1
18448          , x_transaction_coa_id       => l_adr_transaction_coa_id
18449          , x_accounting_coa_id        => l_adr_accounting_coa_id
18450          , x_value_type_code          => l_adr_value_type_code
18451          , p_side                     => 'NA'
18452    );
18453 
18454    xla_ae_lines_pkg.set_ccid(
18455     p_code_combination_id          => l_ccid
18456   , p_value_type_code              => l_adr_value_type_code
18457   , p_transaction_coa_id           => l_adr_transaction_coa_id
18458   , p_accounting_coa_id            => l_adr_accounting_coa_id
18459   , p_adr_code                     => 'EVENT_REVENUE_RULE'
18460   , p_adr_type_code                => 'S'
18461   , p_component_type               => l_component_type
18462   , p_component_code               => l_component_code
18463   , p_component_type_code          => l_component_type_code
18464   , p_component_appl_id            => l_component_appl_id
18465   , p_amb_context_code             => l_amb_context_code
18466   , p_side                         => 'NA'
18467   );
18468 
18469 
18470    l_segment := AcctDerRule_2(
18471            p_application_id           => p_application_id
18472          , p_ae_header_id             => l_ae_header_id 
18473          , x_transaction_coa_id       => l_adr_transaction_coa_id
18474          , x_accounting_coa_id        => l_adr_accounting_coa_id
18475          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
18476          , x_flex_value_set_id        => l_adr_flex_value_set_id
18477          , x_value_type_code          => l_adr_value_type_code
18478          , x_value_combination_id     => l_adr_value_combination_id
18479          , x_value_segment_code       => l_adr_value_segment_code
18480          , p_side                     => 'NA'
18481          , p_override_seg_flag        => 'Y'
18482    );
18483 
18484    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
18485 
18486       xla_ae_lines_pkg.set_segment(
18487           p_to_segment_code         => 'GL_ACCOUNT'
18491         , p_value_type_code         => l_adr_value_type_code
18488         , p_segment_value           => l_segment
18489         , p_from_segment_code       => l_adr_value_segment_code
18490         , p_from_combination_id     => l_adr_value_combination_id
18492         , p_transaction_coa_id      => l_adr_transaction_coa_id
18493         , p_accounting_coa_id       => l_adr_accounting_coa_id
18494         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
18495         , p_flex_value_set_id       => l_adr_flex_value_set_id
18496         , p_adr_code                => 'FV_422X01_PROJECTS'
18497         , p_adr_type_code           => 'S'
18498         , p_component_type          => l_component_type
18499         , p_component_code          => l_component_code
18500         , p_component_type_code     => l_component_type_code
18501         , p_component_appl_id       => l_component_appl_id
18502         , p_amb_context_code        => l_amb_context_code
18503         , p_entity_code             => 'REVENUE'
18504         , p_event_class_code        => 'REVENUE_ADJ'
18505         , p_side                    => 'NA'
18506         );
18507 
18508   END IF;
18509 
18510    --
18511    --
18512    END IF;
18513    --
18514    -- Bug 4922099
18515    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18516           (NVL(l_enc_upg_option, 'N') = 'O')
18517         ) AND
18518         (l_bflow_method_code = 'PRIOR_ENTRY')
18519       )
18520    THEN
18521       IF
18522       --
18523       1 = 2
18524       --
18525       THEN
18526       xla_accounting_err_pkg.build_message
18527                                     (p_appli_s_name            => 'XLA'
18528                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18529                                     ,p_token_1                 => 'LINE_NUMBER'
18530                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18531                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18532                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18533                                                                              l_component_type
18534                                                                             ,l_component_code
18535                                                                             ,l_component_type_code
18536                                                                             ,l_component_appl_id
18537                                                                             ,l_amb_context_code
18538                                                                             ,l_entity_code
18539                                                                             ,l_event_class_code
18540                                                                            )
18541                                     ,p_token_3                 => 'OWNER'
18542                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18543                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18544                                                                           ,p_lookup_code    => l_component_type_code
18545                                                                          )
18546                                     ,p_token_4                 => 'PRODUCT_NAME'
18547                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18548                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18549                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18550                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18551                                     ,p_ae_header_id            =>  NULL
18552                                        );
18553 
18554         IF (C_LEVEL_ERROR>= g_log_level) THEN
18555                  trace
18556                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18557                       ,p_level    => C_LEVEL_ERROR
18558                       ,p_module   => l_log_module);
18559         END IF;
18560       END IF;
18561    END IF;
18562    --
18563    --
18564    ------------------------------------------------------------------------------------------------
18565    -- 4219869 Business Flow
18566    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18567    -- Prior Entry.  Currently, the following code is always generated.
18568    ------------------------------------------------------------------------------------------------
18569    XLA_AE_LINES_PKG.ValidateCurrentLine;
18570 
18571    ------------------------------------------------------------------------------------
18572    -- 4219869 Business Flow
18573    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18574    ------------------------------------------------------------------------------------
18575    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18576 
18577    ----------------------------------------------------------------------------------
18578    -- 4219869 Business Flow
18579    -- Update journal entry status -- Need to generate this within IF <condition>
18580    ----------------------------------------------------------------------------------
18581    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18582          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18583          ,p_balance_type_code => l_balance_type_code
18584          );
18585 
18586    -------------------------------------------------------------------------------------------
18587    -- 4262811 - Generate the Accrual Reversal lines
18588    -------------------------------------------------------------------------------------------
18589    BEGIN
18593          l_acc_rev_flag := 'N';
18590       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18591                               (g_array_event(p_event_id).array_value_num('header_index'));
18592       IF l_acc_rev_flag IS NULL THEN
18594       END IF;
18595    EXCEPTION
18596       WHEN OTHERS THEN
18597          l_acc_rev_flag := 'N';
18598    END;
18599    --
18600    IF (l_acc_rev_flag = 'Y') THEN
18601 
18602        -- 4645092  ------------------------------------------------------------------------------
18603        -- To allow MPA report to determine if it should generate report process
18604        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18605        ------------------------------------------------------------------------------------------
18606 
18607        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18608        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18609 
18610        --
18611        -- Update the line information that should be overwritten
18612        --
18613        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18614                                          p_header_num   => 1);
18615        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18616 
18617        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18618 
18619        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18620           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18621        END IF;
18622 
18623       --
18624       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18625       --
18626       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18627           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18628       ELSE
18629           ---------------------------------------------------------------------------------------------------
18630           -- 4262811a Switch Sign
18631           ---------------------------------------------------------------------------------------------------
18632           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18633           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18634                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18635           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18636                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18637           -- 5132302
18638           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18639                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18640 
18641       END IF;
18642 
18643       -- 4955764
18644       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18645       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18646 
18647 
18648       XLA_AE_LINES_PKG.ValidateCurrentLine;
18649       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18650 
18651       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18652                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18653                ,p_balance_type_code => l_balance_type_code);
18654 
18655    END IF;
18656 
18657    -----------------------------------------------------------------------------------------
18658    -- 4262811 Multiperiod Accounting
18659    -----------------------------------------------------------------------------------------
18660      -- No MPA option is assigned.
18661 
18662 
18663 END IF;
18664 END IF;
18665 --
18666 
18667 --
18668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18669    trace
18670       (p_msg      => 'END of AcctLineType_53'
18671       ,p_level    => C_LEVEL_PROCEDURE
18672       ,p_module   => l_log_module);
18673 END IF;
18674 --
18675 EXCEPTION
18676   WHEN xla_exceptions_pkg.application_exception THEN
18677       RAISE;
18678   WHEN OTHERS THEN
18679        xla_exceptions_pkg.raise_message
18680            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_53');
18681 END AcctLineType_53;
18682 --
18683 
18684 ---------------------------------------
18685 --
18686 -- PRIVATE FUNCTION
18687 --         AcctLineType_54
18688 --
18689 ---------------------------------------
18690 PROCEDURE AcctLineType_54 (
18691   p_application_id        IN NUMBER
18692  ,p_event_id              IN NUMBER
18693  ,p_calculate_acctd_flag  IN VARCHAR2
18694  ,p_calculate_g_l_flag    IN VARCHAR2
18695  ,p_actual_flag           IN OUT VARCHAR2
18696  ,p_balance_type_code     OUT VARCHAR2
18697  ,p_gain_or_loss_ref      OUT VARCHAR2
18698  
18699 --Event Revenue CCID
18700  , p_source_1            IN NUMBER
18701 --Entered Currency Code
18702  , p_source_26            IN VARCHAR2
18703 --Entered Amount
18704  , p_source_42            IN NUMBER
18705 --Accounted Amount
18706  , p_source_43            IN NUMBER
18707 --Revenue Distribution Type
18708  , p_source_46            IN VARCHAR2
18709 --Crediting Revenue Flag
18710  , p_source_48            IN VARCHAR2
18711 --Revenue First Distribution ID
18712  , p_source_49            IN NUMBER
18713 --Revenue Second Distribution ID
18714  , p_source_50            IN NUMBER
18715 --Event ID
18716  , p_source_51            IN NUMBER
18717 --Revenue Event Type Classification
18718  , p_source_72            IN VARCHAR2
18719  , p_source_72_meaning    IN VARCHAR2
18720 )
18721 IS
18725 l_component_type_code         VARCHAR2(1);
18722 
18723 l_component_type              VARCHAR2(80);
18724 l_component_code              VARCHAR2(30);
18726 l_component_appl_id           INTEGER;
18727 l_amb_context_code            VARCHAR2(30);
18728 l_entity_code                 VARCHAR2(30);
18729 l_event_class_code            VARCHAR2(30);
18730 l_ae_header_id                NUMBER;
18731 l_event_type_code             VARCHAR2(30);
18732 l_line_definition_code        VARCHAR2(30);
18733 l_line_definition_owner_code  VARCHAR2(1);
18734 --
18735 -- adr variables
18736 l_segment                     VARCHAR2(30);
18737 l_ccid                        NUMBER;
18738 l_adr_transaction_coa_id      NUMBER;
18739 l_adr_accounting_coa_id       NUMBER;
18740 l_adr_flexfield_segment_code  VARCHAR2(30);
18741 l_adr_flex_value_set_id       NUMBER;
18742 l_adr_value_type_code         VARCHAR2(30);
18743 l_adr_value_combination_id    NUMBER;
18744 l_adr_value_segment_code      VARCHAR2(30);
18745 
18746 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18747 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18748 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18749 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18750 
18751 -- 4262811 Variables ------------------------------------------------------------------------------------------
18752 l_entered_amt_idx             NUMBER;
18753 l_accted_amt_idx              NUMBER;
18754 l_acc_rev_flag                VARCHAR2(1);
18755 l_accrual_line_num            NUMBER;
18756 l_tmp_amt                     NUMBER;
18757 l_acc_rev_natural_side_code   VARCHAR2(1);
18758 
18759 l_num_entries                 NUMBER;
18760 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18761 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18762 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18763 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18764 l_recog_line_1                NUMBER;
18765 l_recog_line_2                NUMBER;
18766 
18767 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18768 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18769 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18770 
18771 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18772 
18773 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18774 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18775 
18776 ---------------------------------------------------------------------------------------------------------------
18777 
18778 
18779 --
18780 -- bulk performance
18781 --
18782 l_balance_type_code           VARCHAR2(1);
18783 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18784 l_log_module                  VARCHAR2(240);
18785 
18786 --
18787 -- Upgrade strategy
18788 --
18789 l_actual_upg_option           VARCHAR2(1);
18790 l_enc_upg_option           VARCHAR2(1);
18791 
18792 --
18793 BEGIN
18794 --
18795 IF g_log_enabled THEN
18796       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
18797 END IF;
18798 --
18799 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18800 
18801       trace
18802          (p_msg      => 'BEGIN of AcctLineType_54'
18803          ,p_level    => C_LEVEL_PROCEDURE
18804          ,p_module   => l_log_module);
18805 
18806 END IF;
18807 --
18808 l_component_type             := 'AMB_JLT';
18809 l_component_code             := 'PA_EVENT_WO_REV_FED';
18810 l_component_type_code        := 'S';
18811 l_component_appl_id          :=  275;
18812 l_amb_context_code           := 'DEFAULT';
18813 l_entity_code                := 'REVENUE';
18814 l_event_class_code           := 'REVENUE';
18815 l_event_type_code            := 'REVENUE_ALL';
18816 l_line_definition_owner_code := 'S';
18817 l_line_definition_code       := 'FV_PROJECTS_JLD';
18818 --
18819 l_balance_type_code          := 'A';
18820 l_segment                     := NULL;
18821 l_ccid                        := NULL;
18822 l_adr_transaction_coa_id      := NULL;
18823 l_adr_accounting_coa_id       := NULL;
18824 l_adr_flexfield_segment_code  := NULL;
18825 l_adr_flex_value_set_id       := NULL;
18826 l_adr_value_type_code         := NULL;
18827 l_adr_value_combination_id    := NULL;
18828 l_adr_value_segment_code      := NULL;
18829 
18830 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18831 l_bflow_class_code           := '';    -- 4219869 Business Flow
18832 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18833 l_budgetary_control_flag     := 'N';
18834 
18835 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18836 l_bflow_applied_to_amt       := NULL; -- 5132302
18837 l_entered_amt_idx            := NULL;          -- 4262811
18838 l_accted_amt_idx             := NULL;          -- 4262811
18839 l_acc_rev_flag               := NULL;          -- 4262811
18840 l_accrual_line_num           := NULL;          -- 4262811
18841 l_tmp_amt                    := NULL;          -- 4262811
18842 --
18843  
18844 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18845     l_balance_type_code <> 'B' THEN
18846 IF NVL(p_source_46,'
18847 ') =  'Revenue - Event Revenue' AND 
18848 NVL(p_source_72,'
18849 ') =  'WRITE OFF' AND 
18850 NVL(p_source_48,'
18851 ') =  'N'
18852  THEN 
18853 
18854    --
18855    XLA_AE_LINES_PKG.SetNewLine;
18856 
18857    p_balance_type_code          := l_balance_type_code;
18858    -- set the flag so later we will know whether the gain loss line needs to be created
18859    
18863 
18860    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18861      p_actual_flag :='A';
18862    END IF;
18864    --
18865    -- bulk performance
18866    --
18867    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18868                                       p_header_num   => 0); -- 4262811
18869    --
18870    -- set accounting line options
18871    --
18872    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18873            p_natural_side_code          => 'D'
18874          , p_gain_or_loss_flag          => 'N'
18875          , p_gl_transfer_mode_code      => 'S'
18876          , p_acct_entry_type_code       => 'A'
18877          , p_switch_side_flag           => 'Y'
18878          , p_merge_duplicate_code       => 'N'
18879          );
18880    --
18881    l_acc_rev_natural_side_code := 'C';  -- 4262811
18882    -- 
18883    --
18884    -- set accounting line type info
18885    --
18886    xla_ae_lines_pkg.SetAcctLineType
18887       (p_component_type             => l_component_type
18888       ,p_event_type_code            => l_event_type_code
18889       ,p_line_definition_owner_code => l_line_definition_owner_code
18890       ,p_line_definition_code       => l_line_definition_code
18891       ,p_accounting_line_code       => l_component_code
18892       ,p_accounting_line_type_code  => l_component_type_code
18893       ,p_accounting_line_appl_id    => l_component_appl_id
18894       ,p_amb_context_code           => l_amb_context_code
18895       ,p_entity_code                => l_entity_code
18896       ,p_event_class_code           => l_event_class_code);
18897    --
18898    -- set accounting class
18899    --
18900    xla_ae_lines_pkg.SetAcctClass(
18901            p_accounting_class_code  => 'FEDERAL_REVENUE'
18902          , p_ae_header_id           => l_ae_header_id
18903          );
18904 
18905    --
18906    -- set rounding class
18907    --
18908    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18909                       'FEDERAL_REVENUE';
18910 
18911    --
18912    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18913    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18914    --
18915    -- bulk performance
18916    --
18917    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18918 
18919    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18920       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18921 
18922    -- 4955764
18923    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18924       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18925 
18926    -- 4458381 Public Sector Enh
18927    
18928    --
18929    -- set accounting attributes for the line type
18930    --
18931    l_entered_amt_idx := 4;
18932    l_accted_amt_idx  := 7;
18933    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18934    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18935    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
18936    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
18937    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
18938    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
18939    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
18940    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
18941    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
18942    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
18943    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
18944    l_rec_acct_attrs.array_acct_attr_code(6) := 'GAIN_LOSS_REFERENCE';
18945    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_51);
18946    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
18947    l_rec_acct_attrs.array_num_value(7)  := p_source_43;
18948 
18949    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18950    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18951 
18952    ---------------------------------------------------------------------------------------------------------------
18953    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18954    ---------------------------------------------------------------------------------------------------------------
18955    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18956 
18957    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18958    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18959 
18960    IF xla_accounting_cache_pkg.GetValueChar
18961          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18962          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18963    AND l_bflow_method_code = 'PRIOR_ENTRY'
18964 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18965    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18966          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18967        )
18968    THEN
18969          xla_ae_lines_pkg.BflowUpgEntry
18970            (p_business_method_code    => l_bflow_method_code
18971            ,p_business_class_code     => l_bflow_class_code
18972            ,p_balance_type            => l_balance_type_code);
18973    ELSE
18974       NULL;
18975 -- No business flow processing for business flow method of NONE.
18976    END IF;
18977 
18978    --
18979    -- call analytical criteria
18980    --
18981    
18982    --
18986    --
18983    -- call description
18984    --
18985    -- No description or it is inherited.
18987    -- call ADRs
18988    -- Bug 4922099
18989    --
18990    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18991         (NVL(l_actual_upg_option, 'N') = 'O') OR
18992         (NVL(l_enc_upg_option, 'N') = 'O')
18993       )
18994    THEN
18995    NULL;
18996    --
18997    --
18998    
18999   l_ccid := AcctDerRule_1(
19000            p_application_id           => p_application_id
19001          , p_ae_header_id             => l_ae_header_id 
19002 , p_source_1 => p_source_1
19003          , x_transaction_coa_id       => l_adr_transaction_coa_id
19004          , x_accounting_coa_id        => l_adr_accounting_coa_id
19005          , x_value_type_code          => l_adr_value_type_code
19006          , p_side                     => 'NA'
19007    );
19008 
19009    xla_ae_lines_pkg.set_ccid(
19010     p_code_combination_id          => l_ccid
19011   , p_value_type_code              => l_adr_value_type_code
19012   , p_transaction_coa_id           => l_adr_transaction_coa_id
19013   , p_accounting_coa_id            => l_adr_accounting_coa_id
19014   , p_adr_code                     => 'EVENT_REVENUE_RULE'
19015   , p_adr_type_code                => 'S'
19016   , p_component_type               => l_component_type
19017   , p_component_code               => l_component_code
19018   , p_component_type_code          => l_component_type_code
19019   , p_component_appl_id            => l_component_appl_id
19020   , p_amb_context_code             => l_amb_context_code
19021   , p_side                         => 'NA'
19022   );
19023 
19024 
19025    l_segment := AcctDerRule_2(
19026            p_application_id           => p_application_id
19027          , p_ae_header_id             => l_ae_header_id 
19028          , x_transaction_coa_id       => l_adr_transaction_coa_id
19029          , x_accounting_coa_id        => l_adr_accounting_coa_id
19030          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
19031          , x_flex_value_set_id        => l_adr_flex_value_set_id
19032          , x_value_type_code          => l_adr_value_type_code
19033          , x_value_combination_id     => l_adr_value_combination_id
19034          , x_value_segment_code       => l_adr_value_segment_code
19035          , p_side                     => 'NA'
19036          , p_override_seg_flag        => 'Y'
19037    );
19038 
19039    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
19040 
19041       xla_ae_lines_pkg.set_segment(
19042           p_to_segment_code         => 'GL_ACCOUNT'
19043         , p_segment_value           => l_segment
19044         , p_from_segment_code       => l_adr_value_segment_code
19045         , p_from_combination_id     => l_adr_value_combination_id
19046         , p_value_type_code         => l_adr_value_type_code
19047         , p_transaction_coa_id      => l_adr_transaction_coa_id
19048         , p_accounting_coa_id       => l_adr_accounting_coa_id
19049         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
19050         , p_flex_value_set_id       => l_adr_flex_value_set_id
19051         , p_adr_code                => 'FV_422X01_PROJECTS'
19052         , p_adr_type_code           => 'S'
19053         , p_component_type          => l_component_type
19054         , p_component_code          => l_component_code
19055         , p_component_type_code     => l_component_type_code
19056         , p_component_appl_id       => l_component_appl_id
19057         , p_amb_context_code        => l_amb_context_code
19058         , p_entity_code             => 'REVENUE'
19059         , p_event_class_code        => 'REVENUE'
19060         , p_side                    => 'NA'
19061         );
19062 
19063   END IF;
19064 
19065    --
19066    --
19067    END IF;
19068    --
19069    -- Bug 4922099
19070    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19071           (NVL(l_enc_upg_option, 'N') = 'O')
19072         ) AND
19073         (l_bflow_method_code = 'PRIOR_ENTRY')
19074       )
19075    THEN
19076       IF
19077       --
19078       1 = 2
19079       --
19080       THEN
19081       xla_accounting_err_pkg.build_message
19082                                     (p_appli_s_name            => 'XLA'
19083                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19084                                     ,p_token_1                 => 'LINE_NUMBER'
19085                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19086                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19087                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19088                                                                              l_component_type
19089                                                                             ,l_component_code
19090                                                                             ,l_component_type_code
19091                                                                             ,l_component_appl_id
19092                                                                             ,l_amb_context_code
19093                                                                             ,l_entity_code
19094                                                                             ,l_event_class_code
19095                                                                            )
19096                                     ,p_token_3                 => 'OWNER'
19097                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19098                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19099                                                                           ,p_lookup_code    => l_component_type_code
19100                                                                          )
19104                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19101                                     ,p_token_4                 => 'PRODUCT_NAME'
19102                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19103                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19105                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19106                                     ,p_ae_header_id            =>  NULL
19107                                        );
19108 
19109         IF (C_LEVEL_ERROR>= g_log_level) THEN
19110                  trace
19111                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19112                       ,p_level    => C_LEVEL_ERROR
19113                       ,p_module   => l_log_module);
19114         END IF;
19115       END IF;
19116    END IF;
19117    --
19118    --
19119    ------------------------------------------------------------------------------------------------
19120    -- 4219869 Business Flow
19121    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19122    -- Prior Entry.  Currently, the following code is always generated.
19123    ------------------------------------------------------------------------------------------------
19124    XLA_AE_LINES_PKG.ValidateCurrentLine;
19125 
19126    ------------------------------------------------------------------------------------
19127    -- 4219869 Business Flow
19128    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19129    ------------------------------------------------------------------------------------
19130    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19131 
19132    ----------------------------------------------------------------------------------
19133    -- 4219869 Business Flow
19134    -- Update journal entry status -- Need to generate this within IF <condition>
19135    ----------------------------------------------------------------------------------
19136    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19137          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19138          ,p_balance_type_code => l_balance_type_code
19139          );
19140 
19141    -------------------------------------------------------------------------------------------
19142    -- 4262811 - Generate the Accrual Reversal lines
19143    -------------------------------------------------------------------------------------------
19144    BEGIN
19145       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19146                               (g_array_event(p_event_id).array_value_num('header_index'));
19147       IF l_acc_rev_flag IS NULL THEN
19148          l_acc_rev_flag := 'N';
19149       END IF;
19150    EXCEPTION
19151       WHEN OTHERS THEN
19152          l_acc_rev_flag := 'N';
19153    END;
19154    --
19155    IF (l_acc_rev_flag = 'Y') THEN
19156 
19157        -- 4645092  ------------------------------------------------------------------------------
19158        -- To allow MPA report to determine if it should generate report process
19159        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19160        ------------------------------------------------------------------------------------------
19161 
19162        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19163        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19164 
19165        --
19166        -- Update the line information that should be overwritten
19167        --
19168        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19169                                          p_header_num   => 1);
19170        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19171 
19172        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19173 
19174        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19175           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19176        END IF;
19177 
19178       --
19179       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19180       --
19181       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19182           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19183       ELSE
19184           ---------------------------------------------------------------------------------------------------
19185           -- 4262811a Switch Sign
19186           ---------------------------------------------------------------------------------------------------
19187           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19188           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19189                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19190           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19191                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19192           -- 5132302
19193           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19194                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19195 
19196       END IF;
19197 
19198       -- 4955764
19199       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19201 
19202 
19203       XLA_AE_LINES_PKG.ValidateCurrentLine;
19204       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19208                ,p_balance_type_code => l_balance_type_code);
19205 
19206       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19207                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19209 
19210    END IF;
19211 
19212    -----------------------------------------------------------------------------------------
19213    -- 4262811 Multiperiod Accounting
19214    -----------------------------------------------------------------------------------------
19215      -- No MPA option is assigned.
19216 
19217 
19218 END IF;
19219 END IF;
19220 --
19221 
19222 --
19223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19224    trace
19225       (p_msg      => 'END of AcctLineType_54'
19226       ,p_level    => C_LEVEL_PROCEDURE
19227       ,p_module   => l_log_module);
19228 END IF;
19229 --
19230 EXCEPTION
19231   WHEN xla_exceptions_pkg.application_exception THEN
19232       RAISE;
19233   WHEN OTHERS THEN
19234        xla_exceptions_pkg.raise_message
19235            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_54');
19236 END AcctLineType_54;
19237 --
19238 
19239 ---------------------------------------
19240 --
19241 -- PRIVATE FUNCTION
19242 --         AcctLineType_55
19243 --
19244 ---------------------------------------
19245 PROCEDURE AcctLineType_55 (
19246   p_application_id        IN NUMBER
19247  ,p_event_id              IN NUMBER
19248  ,p_calculate_acctd_flag  IN VARCHAR2
19249  ,p_calculate_g_l_flag    IN VARCHAR2
19250  ,p_actual_flag           IN OUT VARCHAR2
19251  ,p_balance_type_code     OUT VARCHAR2
19252  ,p_gain_or_loss_ref      OUT VARCHAR2
19253  
19254 --PO Distribution ID
19255  , p_source_2            IN NUMBER
19256 --Cost CCID
19257  , p_source_4            IN NUMBER
19258 --Allow Account Override Flag
19259  , p_source_5            IN VARCHAR2
19260 --Adjustment Cost CCID
19261  , p_source_6            IN NUMBER
19262 --Cost Clearing CCID
19263  , p_source_7            IN NUMBER
19264 --Exchange Rate Variance Flag
19265  , p_source_22            IN VARCHAR2
19266 --Reversing Line Flag
19267  , p_source_23            IN VARCHAR2
19268 --Actual Upgrade Credit Accounting Class
19269  , p_source_24            IN VARCHAR2
19270 --Entered Raw Cost
19271  , p_source_25            IN NUMBER
19272 --Entered Currency Code
19273  , p_source_26            IN VARCHAR2
19274 --Accounted Raw Cost
19275  , p_source_27            IN NUMBER
19276 --Exchange Rate Date
19277  , p_source_28            IN DATE
19278 --Exchange Rate
19279  , p_source_29            IN NUMBER
19280 --Exchange Rate Type
19281  , p_source_30            IN VARCHAR2
19282 --Actual Upgrade Debit Accounting Class
19283  , p_source_31            IN VARCHAR2
19284 --Use Actuals Upgrade Attributes Flag
19285  , p_source_32            IN VARCHAR2
19286 --Expenditure Item ID
19287  , p_source_33            IN NUMBER
19288 --Cost Distribution Line Number
19289  , p_source_34            IN NUMBER
19290 --Line Type
19291  , p_source_35            IN VARCHAR2
19292  , p_source_35_meaning    IN VARCHAR2
19293 --Reversed Line Number
19294  , p_source_36            IN NUMBER
19295 )
19296 IS
19297 
19298 l_component_type              VARCHAR2(80);
19299 l_component_code              VARCHAR2(30);
19300 l_component_type_code         VARCHAR2(1);
19301 l_component_appl_id           INTEGER;
19302 l_amb_context_code            VARCHAR2(30);
19303 l_entity_code                 VARCHAR2(30);
19304 l_event_class_code            VARCHAR2(30);
19305 l_ae_header_id                NUMBER;
19306 l_event_type_code             VARCHAR2(30);
19307 l_line_definition_code        VARCHAR2(30);
19308 l_line_definition_owner_code  VARCHAR2(1);
19309 --
19310 -- adr variables
19311 l_segment                     VARCHAR2(30);
19312 l_ccid                        NUMBER;
19313 l_adr_transaction_coa_id      NUMBER;
19314 l_adr_accounting_coa_id       NUMBER;
19315 l_adr_flexfield_segment_code  VARCHAR2(30);
19316 l_adr_flex_value_set_id       NUMBER;
19317 l_adr_value_type_code         VARCHAR2(30);
19318 l_adr_value_combination_id    NUMBER;
19319 l_adr_value_segment_code      VARCHAR2(30);
19320 
19321 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19322 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19323 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19324 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19325 
19326 -- 4262811 Variables ------------------------------------------------------------------------------------------
19327 l_entered_amt_idx             NUMBER;
19328 l_accted_amt_idx              NUMBER;
19329 l_acc_rev_flag                VARCHAR2(1);
19330 l_accrual_line_num            NUMBER;
19331 l_tmp_amt                     NUMBER;
19332 l_acc_rev_natural_side_code   VARCHAR2(1);
19333 
19334 l_num_entries                 NUMBER;
19335 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19336 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19337 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19338 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19339 l_recog_line_1                NUMBER;
19340 l_recog_line_2                NUMBER;
19341 
19342 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19343 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19344 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19345 
19346 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19347 
19348 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19352 
19349 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19350 
19351 ---------------------------------------------------------------------------------------------------------------
19353 
19354 --
19355 -- bulk performance
19356 --
19357 l_balance_type_code           VARCHAR2(1);
19358 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19359 l_log_module                  VARCHAR2(240);
19360 
19361 --
19362 -- Upgrade strategy
19363 --
19364 l_actual_upg_option           VARCHAR2(1);
19365 l_enc_upg_option           VARCHAR2(1);
19366 
19367 --
19368 BEGIN
19369 --
19370 IF g_log_enabled THEN
19371       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
19372 END IF;
19373 --
19374 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19375 
19376       trace
19377          (p_msg      => 'BEGIN of AcctLineType_55'
19378          ,p_level    => C_LEVEL_PROCEDURE
19379          ,p_module   => l_log_module);
19380 
19381 END IF;
19382 --
19383 l_component_type             := 'AMB_JLT';
19384 l_component_code             := 'PA_EXCH_RATE_VARIANCE_FED';
19385 l_component_type_code        := 'S';
19386 l_component_appl_id          :=  275;
19387 l_amb_context_code           := 'DEFAULT';
19388 l_entity_code                := 'EXPENDITURES';
19389 l_event_class_code           := 'SUPPLIER_COST';
19390 l_event_type_code            := 'SUPPLIER_COST_ALL';
19391 l_line_definition_owner_code := 'S';
19392 l_line_definition_code       := 'FV_PROJECTS_JLD';
19393 --
19394 l_balance_type_code          := 'A';
19395 l_segment                     := NULL;
19396 l_ccid                        := NULL;
19397 l_adr_transaction_coa_id      := NULL;
19398 l_adr_accounting_coa_id       := NULL;
19399 l_adr_flexfield_segment_code  := NULL;
19400 l_adr_flex_value_set_id       := NULL;
19401 l_adr_value_type_code         := NULL;
19402 l_adr_value_combination_id    := NULL;
19403 l_adr_value_segment_code      := NULL;
19404 
19405 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19406 l_bflow_class_code           := '';    -- 4219869 Business Flow
19407 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19408 l_budgetary_control_flag     := 'N';
19409 
19410 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19411 l_bflow_applied_to_amt       := NULL; -- 5132302
19412 l_entered_amt_idx            := NULL;          -- 4262811
19413 l_accted_amt_idx             := NULL;          -- 4262811
19414 l_acc_rev_flag               := NULL;          -- 4262811
19415 l_accrual_line_num           := NULL;          -- 4262811
19416 l_tmp_amt                    := NULL;          -- 4262811
19417 --
19418 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
19419             (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
19420                return;
19421   END IF;
19422   
19423 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19424     l_balance_type_code <> 'B' THEN
19425 IF NVL(p_source_22,'
19426 ') =  'Y'
19427  THEN 
19428 
19429    --
19430    XLA_AE_LINES_PKG.SetNewLine;
19431 
19432    p_balance_type_code          := l_balance_type_code;
19433    -- set the flag so later we will know whether the gain loss line needs to be created
19434    
19435    IF(l_balance_type_code = 'A' ) THEN
19436      p_actual_flag :='G';
19437    END IF;
19438 
19439    --
19440    -- bulk performance
19441    --
19442    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19443                                       p_header_num   => 0); -- 4262811
19444    --
19445    -- set accounting line options
19446    --
19447    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19448            p_natural_side_code          => 'D'
19449          , p_gain_or_loss_flag          => 'Y'
19450          , p_gl_transfer_mode_code      => 'S'
19451          , p_acct_entry_type_code       => 'A'
19452          , p_switch_side_flag           => 'Y'
19453          , p_merge_duplicate_code       => 'N'
19454          );
19455    --
19456    l_acc_rev_natural_side_code := 'C';  -- 4262811
19457    -- 
19458    --
19459    -- set accounting line type info
19460    --
19461    xla_ae_lines_pkg.SetAcctLineType
19462       (p_component_type             => l_component_type
19463       ,p_event_type_code            => l_event_type_code
19464       ,p_line_definition_owner_code => l_line_definition_owner_code
19465       ,p_line_definition_code       => l_line_definition_code
19466       ,p_accounting_line_code       => l_component_code
19467       ,p_accounting_line_type_code  => l_component_type_code
19468       ,p_accounting_line_appl_id    => l_component_appl_id
19469       ,p_amb_context_code           => l_amb_context_code
19470       ,p_entity_code                => l_entity_code
19471       ,p_event_class_code           => l_event_class_code);
19472    --
19473    -- set accounting class
19474    --
19475    xla_ae_lines_pkg.SetAcctClass(
19476            p_accounting_class_code  => 'EXCHANGE_RATE_VARIANCE'
19477          , p_ae_header_id           => l_ae_header_id
19478          );
19479 
19480    --
19481    -- set rounding class
19482    --
19483    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19484                       'EXCHANGE_RATE_VARIANCE';
19485 
19486    --
19487    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19488    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19489    --
19490    -- bulk performance
19494    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19491    --
19492    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19493 
19495       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19496 
19497    -- 4955764
19498    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19499       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19500 
19501    -- 4458381 Public Sector Enh
19502    
19503    --
19504    -- set accounting attributes for the line type
19505    --
19506    l_entered_amt_idx := 22;
19507    l_accted_amt_idx  := 27;
19508    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19509    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
19510    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
19511    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
19512    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
19513    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
19514    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
19515    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
19516    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
19517    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
19518    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
19519    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
19520    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
19521    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
19522    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
19523    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
19524    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
19525    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
19526    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
19527    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
19528    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
19529    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
19530    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
19531    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
19532    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
19533    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
19534    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
19535    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
19536    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
19537    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
19538    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
19539    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
19540    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
19541    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
19542    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
19543    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
19544    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
19545    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
19546    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
19547    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
19548    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
19549    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
19550    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
19551    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
19552    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
19553    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
19554    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
19555    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
19556    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
19557    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
19558    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
19559    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
19560    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
19561    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
19562    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
19563    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
19564    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
19565    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
19566    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
19567    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
19568    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
19569 
19570    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19571    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19572 
19573    ---------------------------------------------------------------------------------------------------------------
19574    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19575    ---------------------------------------------------------------------------------------------------------------
19576    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19577 
19578    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19579    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19580 
19581    IF xla_accounting_cache_pkg.GetValueChar
19582          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19583          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19584    AND l_bflow_method_code = 'PRIOR_ENTRY'
19588        )
19585 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19586    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19587          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19589    THEN
19590          xla_ae_lines_pkg.BflowUpgEntry
19591            (p_business_method_code    => l_bflow_method_code
19592            ,p_business_class_code     => l_bflow_class_code
19593            ,p_balance_type            => l_balance_type_code);
19594    ELSE
19595       NULL;
19596 -- No business flow processing for business flow method of NONE.
19597    END IF;
19598 
19599    --
19600    -- call analytical criteria
19601    --
19602    
19603    --
19604    -- call description
19605    --
19606    -- No description or it is inherited.
19607    --
19608    -- call ADRs
19609    -- Bug 4922099
19610    --
19611    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19612         (NVL(l_actual_upg_option, 'N') = 'O') OR
19613         (NVL(l_enc_upg_option, 'N') = 'O')
19614       )
19615    THEN
19616    NULL;
19617    --
19618    --
19619    
19620   l_ccid := AcctDerRule_12(
19621            p_application_id           => p_application_id
19622          , p_ae_header_id             => l_ae_header_id 
19623 , p_source_4 => p_source_4
19624 , p_source_5 => p_source_5
19625 , p_source_6 => p_source_6
19626          , x_transaction_coa_id       => l_adr_transaction_coa_id
19627          , x_accounting_coa_id        => l_adr_accounting_coa_id
19628          , x_value_type_code          => l_adr_value_type_code
19629          , p_side                     => 'NA'
19630    );
19631 
19632    xla_ae_lines_pkg.set_ccid(
19633     p_code_combination_id          => l_ccid
19634   , p_value_type_code              => l_adr_value_type_code
19635   , p_transaction_coa_id           => l_adr_transaction_coa_id
19636   , p_accounting_coa_id            => l_adr_accounting_coa_id
19637   , p_adr_code                     => 'PA_COST_ACCT_RULE'
19638   , p_adr_type_code                => 'S'
19639   , p_component_type               => l_component_type
19640   , p_component_code               => l_component_code
19641   , p_component_type_code          => l_component_type_code
19642   , p_component_appl_id            => l_component_appl_id
19643   , p_amb_context_code             => l_amb_context_code
19644   , p_side                         => 'NA'
19645   );
19646 
19647 
19648    l_segment := AcctDerRule_6(
19649            p_application_id           => p_application_id
19650          , p_ae_header_id             => l_ae_header_id 
19651 , p_source_2 => p_source_2
19652          , x_transaction_coa_id       => l_adr_transaction_coa_id
19653          , x_accounting_coa_id        => l_adr_accounting_coa_id
19654          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
19655          , x_flex_value_set_id        => l_adr_flex_value_set_id
19656          , x_value_type_code          => l_adr_value_type_code
19657          , x_value_combination_id     => l_adr_value_combination_id
19658          , x_value_segment_code       => l_adr_value_segment_code
19659          , p_side                     => 'NA'
19660          , p_override_seg_flag        => 'Y'
19661    );
19662 
19663    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
19664 
19665       xla_ae_lines_pkg.set_segment(
19666           p_to_segment_code         => 'GL_ACCOUNT'
19667         , p_segment_value           => l_segment
19668         , p_from_segment_code       => l_adr_value_segment_code
19669         , p_from_combination_id     => l_adr_value_combination_id
19670         , p_value_type_code         => l_adr_value_type_code
19671         , p_transaction_coa_id      => l_adr_transaction_coa_id
19672         , p_accounting_coa_id       => l_adr_accounting_coa_id
19673         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
19674         , p_flex_value_set_id       => l_adr_flex_value_set_id
19675         , p_adr_code                => 'FV_4XXX_PROJECTS'
19676         , p_adr_type_code           => 'S'
19677         , p_component_type          => l_component_type
19678         , p_component_code          => l_component_code
19679         , p_component_type_code     => l_component_type_code
19680         , p_component_appl_id       => l_component_appl_id
19681         , p_amb_context_code        => l_amb_context_code
19682         , p_entity_code             => 'EXPENDITURES'
19683         , p_event_class_code        => 'SUPPLIER_COST'
19684         , p_side                    => 'NA'
19685         );
19686 
19687   END IF;
19688 
19689    --
19690    --
19691    END IF;
19692    --
19693    -- Bug 4922099
19694    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19695           (NVL(l_enc_upg_option, 'N') = 'O')
19696         ) AND
19697         (l_bflow_method_code = 'PRIOR_ENTRY')
19698       )
19699    THEN
19700       IF
19701       --
19702       1 = 2
19703       --
19704       THEN
19705       xla_accounting_err_pkg.build_message
19706                                     (p_appli_s_name            => 'XLA'
19707                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19708                                     ,p_token_1                 => 'LINE_NUMBER'
19709                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19710                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19711                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19712                                                                              l_component_type
19713                                                                             ,l_component_code
19714                                                                             ,l_component_type_code
19718                                                                             ,l_event_class_code
19715                                                                             ,l_component_appl_id
19716                                                                             ,l_amb_context_code
19717                                                                             ,l_entity_code
19719                                                                            )
19720                                     ,p_token_3                 => 'OWNER'
19721                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19722                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19723                                                                           ,p_lookup_code    => l_component_type_code
19724                                                                          )
19725                                     ,p_token_4                 => 'PRODUCT_NAME'
19726                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19727                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19728                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19729                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19730                                     ,p_ae_header_id            =>  NULL
19731                                        );
19732 
19733         IF (C_LEVEL_ERROR>= g_log_level) THEN
19734                  trace
19735                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19736                       ,p_level    => C_LEVEL_ERROR
19737                       ,p_module   => l_log_module);
19738         END IF;
19739       END IF;
19740    END IF;
19741    --
19742    --
19743    ------------------------------------------------------------------------------------------------
19744    -- 4219869 Business Flow
19745    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19746    -- Prior Entry.  Currently, the following code is always generated.
19747    ------------------------------------------------------------------------------------------------
19748    XLA_AE_LINES_PKG.ValidateCurrentLine;
19749 
19750    ------------------------------------------------------------------------------------
19751    -- 4219869 Business Flow
19752    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19753    ------------------------------------------------------------------------------------
19754    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19755 
19756    ----------------------------------------------------------------------------------
19757    -- 4219869 Business Flow
19758    -- Update journal entry status -- Need to generate this within IF <condition>
19759    ----------------------------------------------------------------------------------
19760    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19761          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19762          ,p_balance_type_code => l_balance_type_code
19763          );
19764 
19765    -------------------------------------------------------------------------------------------
19766    -- 4262811 - Generate the Accrual Reversal lines
19767    -------------------------------------------------------------------------------------------
19768    BEGIN
19769       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19770                               (g_array_event(p_event_id).array_value_num('header_index'));
19771       IF l_acc_rev_flag IS NULL THEN
19772          l_acc_rev_flag := 'N';
19773       END IF;
19774    EXCEPTION
19775       WHEN OTHERS THEN
19776          l_acc_rev_flag := 'N';
19777    END;
19778    --
19779    IF (l_acc_rev_flag = 'Y') THEN
19780 
19781        -- 4645092  ------------------------------------------------------------------------------
19782        -- To allow MPA report to determine if it should generate report process
19783        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19784        ------------------------------------------------------------------------------------------
19785 
19786        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19787        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19788 
19789        --
19790        -- Update the line information that should be overwritten
19791        --
19792        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19793                                          p_header_num   => 1);
19794        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19795 
19796        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19797 
19798        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19799           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19800        END IF;
19801 
19802       --
19803       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19804       --
19805       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19806           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19807       ELSE
19808           ---------------------------------------------------------------------------------------------------
19809           -- 4262811a Switch Sign
19810           ---------------------------------------------------------------------------------------------------
19811           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19812           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19816           -- 5132302
19813                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19814           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19815                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19817           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19818                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19819 
19820       END IF;
19821 
19822       -- 4955764
19823       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19824       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19825 
19826 
19827       XLA_AE_LINES_PKG.ValidateCurrentLine;
19828       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19829 
19830       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19831                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19832                ,p_balance_type_code => l_balance_type_code);
19833 
19834    END IF;
19835 
19836    -----------------------------------------------------------------------------------------
19837    -- 4262811 Multiperiod Accounting
19838    -----------------------------------------------------------------------------------------
19839      -- No MPA option is assigned.
19840 
19841 
19842 END IF;
19843 END IF;
19844 --
19845 
19846 --
19847 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19848    trace
19849       (p_msg      => 'END of AcctLineType_55'
19850       ,p_level    => C_LEVEL_PROCEDURE
19851       ,p_module   => l_log_module);
19852 END IF;
19853 --
19854 EXCEPTION
19855   WHEN xla_exceptions_pkg.application_exception THEN
19856       RAISE;
19857   WHEN OTHERS THEN
19858        xla_exceptions_pkg.raise_message
19859            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_55');
19860 END AcctLineType_55;
19861 --
19862 
19863 ---------------------------------------
19864 --
19865 -- PRIVATE FUNCTION
19866 --         AcctLineType_56
19867 --
19868 ---------------------------------------
19869 PROCEDURE AcctLineType_56 (
19870   p_application_id        IN NUMBER
19871  ,p_event_id              IN NUMBER
19872  ,p_calculate_acctd_flag  IN VARCHAR2
19873  ,p_calculate_g_l_flag    IN VARCHAR2
19874  ,p_actual_flag           IN OUT VARCHAR2
19875  ,p_balance_type_code     OUT VARCHAR2
19876  ,p_gain_or_loss_ref      OUT VARCHAR2
19877  
19878 --PO Distribution ID
19879  , p_source_2            IN NUMBER
19880 --Cost CCID
19881  , p_source_4            IN NUMBER
19882 --Allow Account Override Flag
19883  , p_source_5            IN VARCHAR2
19884 --Adjustment Cost CCID
19885  , p_source_6            IN NUMBER
19886 --Cost Clearing CCID
19887  , p_source_7            IN NUMBER
19888 --Exchange Rate Variance Flag
19889  , p_source_22            IN VARCHAR2
19890 --Reversing Line Flag
19891  , p_source_23            IN VARCHAR2
19892 --Actual Upgrade Credit Accounting Class
19893  , p_source_24            IN VARCHAR2
19894 --Entered Raw Cost
19895  , p_source_25            IN NUMBER
19896 --Entered Currency Code
19897  , p_source_26            IN VARCHAR2
19898 --Accounted Raw Cost
19899  , p_source_27            IN NUMBER
19900 --Exchange Rate Date
19901  , p_source_28            IN DATE
19902 --Exchange Rate
19903  , p_source_29            IN NUMBER
19904 --Exchange Rate Type
19905  , p_source_30            IN VARCHAR2
19906 --Actual Upgrade Debit Accounting Class
19907  , p_source_31            IN VARCHAR2
19908 --Use Actuals Upgrade Attributes Flag
19909  , p_source_32            IN VARCHAR2
19910 --Expenditure Item ID
19911  , p_source_33            IN NUMBER
19912 --Cost Distribution Line Number
19913  , p_source_34            IN NUMBER
19914 --Line Type
19915  , p_source_35            IN VARCHAR2
19916  , p_source_35_meaning    IN VARCHAR2
19917 --Reversed Line Number
19918  , p_source_36            IN NUMBER
19919 )
19920 IS
19921 
19922 l_component_type              VARCHAR2(80);
19923 l_component_code              VARCHAR2(30);
19924 l_component_type_code         VARCHAR2(1);
19925 l_component_appl_id           INTEGER;
19926 l_amb_context_code            VARCHAR2(30);
19927 l_entity_code                 VARCHAR2(30);
19928 l_event_class_code            VARCHAR2(30);
19929 l_ae_header_id                NUMBER;
19930 l_event_type_code             VARCHAR2(30);
19931 l_line_definition_code        VARCHAR2(30);
19932 l_line_definition_owner_code  VARCHAR2(1);
19933 --
19934 -- adr variables
19935 l_segment                     VARCHAR2(30);
19936 l_ccid                        NUMBER;
19937 l_adr_transaction_coa_id      NUMBER;
19938 l_adr_accounting_coa_id       NUMBER;
19939 l_adr_flexfield_segment_code  VARCHAR2(30);
19940 l_adr_flex_value_set_id       NUMBER;
19941 l_adr_value_type_code         VARCHAR2(30);
19942 l_adr_value_combination_id    NUMBER;
19943 l_adr_value_segment_code      VARCHAR2(30);
19944 
19945 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19946 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19947 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19948 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19949 
19950 -- 4262811 Variables ------------------------------------------------------------------------------------------
19951 l_entered_amt_idx             NUMBER;
19952 l_accted_amt_idx              NUMBER;
19953 l_acc_rev_flag                VARCHAR2(1);
19954 l_accrual_line_num            NUMBER;
19955 l_tmp_amt                     NUMBER;
19959 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19956 l_acc_rev_natural_side_code   VARCHAR2(1);
19957 
19958 l_num_entries                 NUMBER;
19960 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19961 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19962 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19963 l_recog_line_1                NUMBER;
19964 l_recog_line_2                NUMBER;
19965 
19966 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19967 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19968 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19969 
19970 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19971 
19972 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19973 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19974 
19975 ---------------------------------------------------------------------------------------------------------------
19976 
19977 
19978 --
19979 -- bulk performance
19980 --
19981 l_balance_type_code           VARCHAR2(1);
19982 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19983 l_log_module                  VARCHAR2(240);
19984 
19985 --
19986 -- Upgrade strategy
19987 --
19988 l_actual_upg_option           VARCHAR2(1);
19989 l_enc_upg_option           VARCHAR2(1);
19990 
19991 --
19992 BEGIN
19993 --
19994 IF g_log_enabled THEN
19995       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
19996 END IF;
19997 --
19998 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19999 
20000       trace
20001          (p_msg      => 'BEGIN of AcctLineType_56'
20002          ,p_level    => C_LEVEL_PROCEDURE
20003          ,p_module   => l_log_module);
20004 
20005 END IF;
20006 --
20007 l_component_type             := 'AMB_JLT';
20008 l_component_code             := 'PA_EXCH_RATE_VARIANCE_FED';
20009 l_component_type_code        := 'S';
20010 l_component_appl_id          :=  275;
20011 l_amb_context_code           := 'DEFAULT';
20012 l_entity_code                := 'EXPENDITURES';
20013 l_event_class_code           := 'SUPPLIER_COST_ADJ';
20014 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
20015 l_line_definition_owner_code := 'S';
20016 l_line_definition_code       := 'FV_PROJECTS_JLD';
20017 --
20018 l_balance_type_code          := 'A';
20019 l_segment                     := NULL;
20020 l_ccid                        := NULL;
20021 l_adr_transaction_coa_id      := NULL;
20022 l_adr_accounting_coa_id       := NULL;
20023 l_adr_flexfield_segment_code  := NULL;
20024 l_adr_flex_value_set_id       := NULL;
20025 l_adr_value_type_code         := NULL;
20026 l_adr_value_combination_id    := NULL;
20027 l_adr_value_segment_code      := NULL;
20028 
20029 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20030 l_bflow_class_code           := '';    -- 4219869 Business Flow
20031 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20032 l_budgetary_control_flag     := 'N';
20033 
20034 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20035 l_bflow_applied_to_amt       := NULL; -- 5132302
20036 l_entered_amt_idx            := NULL;          -- 4262811
20037 l_accted_amt_idx             := NULL;          -- 4262811
20038 l_acc_rev_flag               := NULL;          -- 4262811
20039 l_accrual_line_num           := NULL;          -- 4262811
20040 l_tmp_amt                    := NULL;          -- 4262811
20041 --
20042 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
20043             (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
20044                return;
20045   END IF;
20046   
20047 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20048     l_balance_type_code <> 'B' THEN
20049 IF NVL(p_source_22,'
20050 ') =  'Y'
20051  THEN 
20052 
20053    --
20054    XLA_AE_LINES_PKG.SetNewLine;
20055 
20056    p_balance_type_code          := l_balance_type_code;
20057    -- set the flag so later we will know whether the gain loss line needs to be created
20058    
20059    IF(l_balance_type_code = 'A' ) THEN
20060      p_actual_flag :='G';
20061    END IF;
20062 
20063    --
20064    -- bulk performance
20065    --
20066    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20067                                       p_header_num   => 0); -- 4262811
20068    --
20069    -- set accounting line options
20070    --
20071    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20072            p_natural_side_code          => 'D'
20073          , p_gain_or_loss_flag          => 'Y'
20074          , p_gl_transfer_mode_code      => 'S'
20075          , p_acct_entry_type_code       => 'A'
20076          , p_switch_side_flag           => 'Y'
20077          , p_merge_duplicate_code       => 'N'
20078          );
20079    --
20080    l_acc_rev_natural_side_code := 'C';  -- 4262811
20081    -- 
20082    --
20083    -- set accounting line type info
20084    --
20085    xla_ae_lines_pkg.SetAcctLineType
20086       (p_component_type             => l_component_type
20087       ,p_event_type_code            => l_event_type_code
20088       ,p_line_definition_owner_code => l_line_definition_owner_code
20089       ,p_line_definition_code       => l_line_definition_code
20090       ,p_accounting_line_code       => l_component_code
20091       ,p_accounting_line_type_code  => l_component_type_code
20092       ,p_accounting_line_appl_id    => l_component_appl_id
20096    --
20093       ,p_amb_context_code           => l_amb_context_code
20094       ,p_entity_code                => l_entity_code
20095       ,p_event_class_code           => l_event_class_code);
20097    -- set accounting class
20098    --
20099    xla_ae_lines_pkg.SetAcctClass(
20100            p_accounting_class_code  => 'EXCHANGE_RATE_VARIANCE'
20101          , p_ae_header_id           => l_ae_header_id
20102          );
20103 
20104    --
20105    -- set rounding class
20106    --
20107    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20108                       'EXCHANGE_RATE_VARIANCE';
20109 
20110    --
20111    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20112    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20113    --
20114    -- bulk performance
20115    --
20116    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20117 
20118    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20119       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20120 
20121    -- 4955764
20122    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20123       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20124 
20125    -- 4458381 Public Sector Enh
20126    
20127    --
20128    -- set accounting attributes for the line type
20129    --
20130    l_entered_amt_idx := 22;
20131    l_accted_amt_idx  := 27;
20132    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20133    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20134    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
20135    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
20136    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
20137    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
20138    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
20139    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
20140    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
20141    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
20142    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
20143    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
20144    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
20145    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
20146    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
20147    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
20148    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
20149    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
20150    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
20151    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
20152    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
20153    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
20154    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
20155    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
20156    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
20157    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
20158    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
20159    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
20160    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
20161    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
20162    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
20163    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
20164    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
20165    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
20166    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
20167    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
20168    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
20169    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
20170    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
20171    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
20172    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
20173    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
20174    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
20175    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
20176    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
20177    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
20178    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
20179    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
20180    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
20181    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
20182    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
20183    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
20184    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
20185    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
20186    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
20187    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
20188    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
20189    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
20190    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
20191    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
20192    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
20193 
20194    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20195    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20199    ---------------------------------------------------------------------------------------------------------------
20196 
20197    ---------------------------------------------------------------------------------------------------------------
20198    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20200    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20201 
20202    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20203    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20204 
20205    IF xla_accounting_cache_pkg.GetValueChar
20206          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20207          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20208    AND l_bflow_method_code = 'PRIOR_ENTRY'
20209 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20210    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20211          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20212        )
20213    THEN
20214          xla_ae_lines_pkg.BflowUpgEntry
20215            (p_business_method_code    => l_bflow_method_code
20216            ,p_business_class_code     => l_bflow_class_code
20217            ,p_balance_type            => l_balance_type_code);
20218    ELSE
20219       NULL;
20220 -- No business flow processing for business flow method of NONE.
20221    END IF;
20222 
20223    --
20224    -- call analytical criteria
20225    --
20226    
20227    --
20228    -- call description
20229    --
20230    -- No description or it is inherited.
20231    --
20232    -- call ADRs
20233    -- Bug 4922099
20234    --
20235    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20236         (NVL(l_actual_upg_option, 'N') = 'O') OR
20237         (NVL(l_enc_upg_option, 'N') = 'O')
20238       )
20239    THEN
20240    NULL;
20241    --
20242    --
20243    
20244   l_ccid := AcctDerRule_13(
20245            p_application_id           => p_application_id
20246          , p_ae_header_id             => l_ae_header_id 
20247 , p_source_5 => p_source_5
20248 , p_source_6 => p_source_6
20249          , x_transaction_coa_id       => l_adr_transaction_coa_id
20250          , x_accounting_coa_id        => l_adr_accounting_coa_id
20251          , x_value_type_code          => l_adr_value_type_code
20252          , p_side                     => 'NA'
20253    );
20254 
20255    xla_ae_lines_pkg.set_ccid(
20256     p_code_combination_id          => l_ccid
20257   , p_value_type_code              => l_adr_value_type_code
20258   , p_transaction_coa_id           => l_adr_transaction_coa_id
20259   , p_accounting_coa_id            => l_adr_accounting_coa_id
20260   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
20261   , p_adr_type_code                => 'S'
20262   , p_component_type               => l_component_type
20263   , p_component_code               => l_component_code
20264   , p_component_type_code          => l_component_type_code
20265   , p_component_appl_id            => l_component_appl_id
20266   , p_amb_context_code             => l_amb_context_code
20267   , p_side                         => 'NA'
20268   );
20269 
20270 
20271    l_segment := AcctDerRule_6(
20272            p_application_id           => p_application_id
20273          , p_ae_header_id             => l_ae_header_id 
20274 , p_source_2 => p_source_2
20275          , x_transaction_coa_id       => l_adr_transaction_coa_id
20276          , x_accounting_coa_id        => l_adr_accounting_coa_id
20277          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
20278          , x_flex_value_set_id        => l_adr_flex_value_set_id
20279          , x_value_type_code          => l_adr_value_type_code
20280          , x_value_combination_id     => l_adr_value_combination_id
20281          , x_value_segment_code       => l_adr_value_segment_code
20282          , p_side                     => 'NA'
20283          , p_override_seg_flag        => 'Y'
20284    );
20285 
20286    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
20287 
20288       xla_ae_lines_pkg.set_segment(
20289           p_to_segment_code         => 'GL_ACCOUNT'
20290         , p_segment_value           => l_segment
20291         , p_from_segment_code       => l_adr_value_segment_code
20292         , p_from_combination_id     => l_adr_value_combination_id
20293         , p_value_type_code         => l_adr_value_type_code
20294         , p_transaction_coa_id      => l_adr_transaction_coa_id
20295         , p_accounting_coa_id       => l_adr_accounting_coa_id
20296         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
20297         , p_flex_value_set_id       => l_adr_flex_value_set_id
20298         , p_adr_code                => 'FV_4XXX_PROJECTS'
20299         , p_adr_type_code           => 'S'
20300         , p_component_type          => l_component_type
20301         , p_component_code          => l_component_code
20302         , p_component_type_code     => l_component_type_code
20303         , p_component_appl_id       => l_component_appl_id
20304         , p_amb_context_code        => l_amb_context_code
20305         , p_entity_code             => 'EXPENDITURES'
20306         , p_event_class_code        => 'SUPPLIER_COST_ADJ'
20307         , p_side                    => 'NA'
20308         );
20309 
20310   END IF;
20311 
20312    --
20313    --
20314    END IF;
20315    --
20316    -- Bug 4922099
20317    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20318           (NVL(l_enc_upg_option, 'N') = 'O')
20319         ) AND
20320         (l_bflow_method_code = 'PRIOR_ENTRY')
20321       )
20322    THEN
20323       IF
20324       --
20325       1 = 2
20326       --
20327       THEN
20331                                     ,p_token_1                 => 'LINE_NUMBER'
20328       xla_accounting_err_pkg.build_message
20329                                     (p_appli_s_name            => 'XLA'
20330                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20332                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20333                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20334                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20335                                                                              l_component_type
20336                                                                             ,l_component_code
20337                                                                             ,l_component_type_code
20338                                                                             ,l_component_appl_id
20339                                                                             ,l_amb_context_code
20340                                                                             ,l_entity_code
20341                                                                             ,l_event_class_code
20342                                                                            )
20343                                     ,p_token_3                 => 'OWNER'
20344                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20345                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20346                                                                           ,p_lookup_code    => l_component_type_code
20347                                                                          )
20348                                     ,p_token_4                 => 'PRODUCT_NAME'
20349                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20350                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20351                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20352                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20353                                     ,p_ae_header_id            =>  NULL
20354                                        );
20355 
20356         IF (C_LEVEL_ERROR>= g_log_level) THEN
20357                  trace
20358                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20359                       ,p_level    => C_LEVEL_ERROR
20360                       ,p_module   => l_log_module);
20361         END IF;
20362       END IF;
20363    END IF;
20364    --
20365    --
20366    ------------------------------------------------------------------------------------------------
20367    -- 4219869 Business Flow
20368    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20369    -- Prior Entry.  Currently, the following code is always generated.
20370    ------------------------------------------------------------------------------------------------
20371    XLA_AE_LINES_PKG.ValidateCurrentLine;
20372 
20373    ------------------------------------------------------------------------------------
20374    -- 4219869 Business Flow
20375    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20376    ------------------------------------------------------------------------------------
20377    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20378 
20379    ----------------------------------------------------------------------------------
20380    -- 4219869 Business Flow
20381    -- Update journal entry status -- Need to generate this within IF <condition>
20382    ----------------------------------------------------------------------------------
20383    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20384          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20385          ,p_balance_type_code => l_balance_type_code
20386          );
20387 
20388    -------------------------------------------------------------------------------------------
20389    -- 4262811 - Generate the Accrual Reversal lines
20390    -------------------------------------------------------------------------------------------
20391    BEGIN
20392       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20393                               (g_array_event(p_event_id).array_value_num('header_index'));
20394       IF l_acc_rev_flag IS NULL THEN
20395          l_acc_rev_flag := 'N';
20396       END IF;
20397    EXCEPTION
20398       WHEN OTHERS THEN
20399          l_acc_rev_flag := 'N';
20400    END;
20401    --
20402    IF (l_acc_rev_flag = 'Y') THEN
20403 
20404        -- 4645092  ------------------------------------------------------------------------------
20405        -- To allow MPA report to determine if it should generate report process
20406        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20407        ------------------------------------------------------------------------------------------
20408 
20409        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20410        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20411 
20412        --
20413        -- Update the line information that should be overwritten
20414        --
20415        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20416                                          p_header_num   => 1);
20417        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20418 
20419        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20420 
20421        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20422           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20423        END IF;
20424 
20428       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20425       --
20426       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20427       --
20429           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20430       ELSE
20431           ---------------------------------------------------------------------------------------------------
20432           -- 4262811a Switch Sign
20433           ---------------------------------------------------------------------------------------------------
20434           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20435           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20436                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20437           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20438                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20439           -- 5132302
20440           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20441                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20442 
20443       END IF;
20444 
20445       -- 4955764
20446       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20447       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20448 
20449 
20450       XLA_AE_LINES_PKG.ValidateCurrentLine;
20451       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20452 
20453       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20454                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20455                ,p_balance_type_code => l_balance_type_code);
20456 
20457    END IF;
20458 
20459    -----------------------------------------------------------------------------------------
20460    -- 4262811 Multiperiod Accounting
20461    -----------------------------------------------------------------------------------------
20462      -- No MPA option is assigned.
20463 
20464 
20465 END IF;
20466 END IF;
20467 --
20468 
20469 --
20470 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20471    trace
20472       (p_msg      => 'END of AcctLineType_56'
20473       ,p_level    => C_LEVEL_PROCEDURE
20474       ,p_module   => l_log_module);
20475 END IF;
20476 --
20477 EXCEPTION
20478   WHEN xla_exceptions_pkg.application_exception THEN
20479       RAISE;
20480   WHEN OTHERS THEN
20481        xla_exceptions_pkg.raise_message
20482            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_56');
20483 END AcctLineType_56;
20484 --
20485 
20486 ---------------------------------------
20487 --
20488 -- PRIVATE FUNCTION
20489 --         AcctLineType_57
20490 --
20491 ---------------------------------------
20492 PROCEDURE AcctLineType_57 (
20493   p_application_id        IN NUMBER
20494  ,p_event_id              IN NUMBER
20495  ,p_calculate_acctd_flag  IN VARCHAR2
20496  ,p_calculate_g_l_flag    IN VARCHAR2
20497  ,p_actual_flag           IN OUT VARCHAR2
20498  ,p_balance_type_code     OUT VARCHAR2
20499  ,p_gain_or_loss_ref      OUT VARCHAR2
20500  
20501 --Cost CCID
20502  , p_source_4            IN NUMBER
20503 --Allow Account Override Flag
20504  , p_source_5            IN VARCHAR2
20505 --Cost Clearing CCID
20506  , p_source_7            IN NUMBER
20507 --Adjustment Cost Clearing CCID
20508  , p_source_8            IN NUMBER
20509 --Exchange Rate Variance Flag
20510  , p_source_22            IN VARCHAR2
20511 --Reversing Line Flag
20512  , p_source_23            IN VARCHAR2
20513 --Actual Upgrade Credit Accounting Class
20514  , p_source_24            IN VARCHAR2
20515 --Entered Raw Cost
20516  , p_source_25            IN NUMBER
20517 --Entered Currency Code
20518  , p_source_26            IN VARCHAR2
20519 --Accounted Raw Cost
20520  , p_source_27            IN NUMBER
20521 --Exchange Rate Date
20522  , p_source_28            IN DATE
20523 --Exchange Rate
20524  , p_source_29            IN NUMBER
20525 --Exchange Rate Type
20526  , p_source_30            IN VARCHAR2
20527 --Actual Upgrade Debit Accounting Class
20528  , p_source_31            IN VARCHAR2
20529 --Use Actuals Upgrade Attributes Flag
20530  , p_source_32            IN VARCHAR2
20531 --Expenditure Item ID
20532  , p_source_33            IN NUMBER
20533 --Cost Distribution Line Number
20534  , p_source_34            IN NUMBER
20535 --Line Type
20536  , p_source_35            IN VARCHAR2
20537  , p_source_35_meaning    IN VARCHAR2
20538 --Reversed Line Number
20539  , p_source_36            IN NUMBER
20540 )
20541 IS
20542 
20543 l_component_type              VARCHAR2(80);
20544 l_component_code              VARCHAR2(30);
20545 l_component_type_code         VARCHAR2(1);
20546 l_component_appl_id           INTEGER;
20547 l_amb_context_code            VARCHAR2(30);
20548 l_entity_code                 VARCHAR2(30);
20549 l_event_class_code            VARCHAR2(30);
20550 l_ae_header_id                NUMBER;
20551 l_event_type_code             VARCHAR2(30);
20552 l_line_definition_code        VARCHAR2(30);
20553 l_line_definition_owner_code  VARCHAR2(1);
20554 --
20555 -- adr variables
20556 l_segment                     VARCHAR2(30);
20557 l_ccid                        NUMBER;
20558 l_adr_transaction_coa_id      NUMBER;
20559 l_adr_accounting_coa_id       NUMBER;
20560 l_adr_flexfield_segment_code  VARCHAR2(30);
20561 l_adr_flex_value_set_id       NUMBER;
20562 l_adr_value_type_code         VARCHAR2(30);
20566 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20563 l_adr_value_combination_id    NUMBER;
20564 l_adr_value_segment_code      VARCHAR2(30);
20565 
20567 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20568 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20569 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20570 
20571 -- 4262811 Variables ------------------------------------------------------------------------------------------
20572 l_entered_amt_idx             NUMBER;
20573 l_accted_amt_idx              NUMBER;
20574 l_acc_rev_flag                VARCHAR2(1);
20575 l_accrual_line_num            NUMBER;
20576 l_tmp_amt                     NUMBER;
20577 l_acc_rev_natural_side_code   VARCHAR2(1);
20578 
20579 l_num_entries                 NUMBER;
20580 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20581 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20582 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20583 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20584 l_recog_line_1                NUMBER;
20585 l_recog_line_2                NUMBER;
20586 
20587 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20588 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20589 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20590 
20591 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20592 
20593 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20594 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20595 
20596 ---------------------------------------------------------------------------------------------------------------
20597 
20598 
20599 --
20600 -- bulk performance
20601 --
20602 l_balance_type_code           VARCHAR2(1);
20603 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20604 l_log_module                  VARCHAR2(240);
20605 
20606 --
20607 -- Upgrade strategy
20608 --
20609 l_actual_upg_option           VARCHAR2(1);
20610 l_enc_upg_option           VARCHAR2(1);
20611 
20612 --
20613 BEGIN
20614 --
20615 IF g_log_enabled THEN
20616       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
20617 END IF;
20618 --
20619 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20620 
20621       trace
20622          (p_msg      => 'BEGIN of AcctLineType_57'
20623          ,p_level    => C_LEVEL_PROCEDURE
20624          ,p_module   => l_log_module);
20625 
20626 END IF;
20627 --
20628 l_component_type             := 'AMB_JLT';
20629 l_component_code             := 'PA_EXCH_RATE_VAR_CLEAR_FED';
20630 l_component_type_code        := 'S';
20631 l_component_appl_id          :=  275;
20632 l_amb_context_code           := 'DEFAULT';
20633 l_entity_code                := 'EXPENDITURES';
20634 l_event_class_code           := 'SUPPLIER_COST';
20635 l_event_type_code            := 'SUPPLIER_COST_ALL';
20636 l_line_definition_owner_code := 'S';
20637 l_line_definition_code       := 'FV_PROJECTS_JLD';
20638 --
20639 l_balance_type_code          := 'A';
20640 l_segment                     := NULL;
20641 l_ccid                        := NULL;
20642 l_adr_transaction_coa_id      := NULL;
20643 l_adr_accounting_coa_id       := NULL;
20644 l_adr_flexfield_segment_code  := NULL;
20645 l_adr_flex_value_set_id       := NULL;
20646 l_adr_value_type_code         := NULL;
20647 l_adr_value_combination_id    := NULL;
20648 l_adr_value_segment_code      := NULL;
20649 
20650 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20651 l_bflow_class_code           := '';    -- 4219869 Business Flow
20652 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20653 l_budgetary_control_flag     := 'N';
20654 
20655 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20656 l_bflow_applied_to_amt       := NULL; -- 5132302
20657 l_entered_amt_idx            := NULL;          -- 4262811
20658 l_accted_amt_idx             := NULL;          -- 4262811
20659 l_acc_rev_flag               := NULL;          -- 4262811
20660 l_accrual_line_num           := NULL;          -- 4262811
20661 l_tmp_amt                    := NULL;          -- 4262811
20662 --
20663 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
20664             (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
20665                return;
20666   END IF;
20667   
20668 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20669     l_balance_type_code <> 'B' THEN
20670 IF NVL(p_source_22,'
20671 ') =  'Y'
20672  THEN 
20673 
20674    --
20675    XLA_AE_LINES_PKG.SetNewLine;
20676 
20677    p_balance_type_code          := l_balance_type_code;
20678    -- set the flag so later we will know whether the gain loss line needs to be created
20679    
20680    IF(l_balance_type_code = 'A' ) THEN
20681      p_actual_flag :='G';
20682    END IF;
20683 
20684    --
20685    -- bulk performance
20686    --
20687    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20688                                       p_header_num   => 0); -- 4262811
20689    --
20690    -- set accounting line options
20691    --
20692    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20693            p_natural_side_code          => 'C'
20694          , p_gain_or_loss_flag          => 'Y'
20695          , p_gl_transfer_mode_code      => 'S'
20696          , p_acct_entry_type_code       => 'A'
20697          , p_switch_side_flag           => 'Y'
20701    l_acc_rev_natural_side_code := 'D';  -- 4262811
20698          , p_merge_duplicate_code       => 'N'
20699          );
20700    --
20702    -- 
20703    --
20704    -- set accounting line type info
20705    --
20706    xla_ae_lines_pkg.SetAcctLineType
20707       (p_component_type             => l_component_type
20708       ,p_event_type_code            => l_event_type_code
20709       ,p_line_definition_owner_code => l_line_definition_owner_code
20710       ,p_line_definition_code       => l_line_definition_code
20711       ,p_accounting_line_code       => l_component_code
20712       ,p_accounting_line_type_code  => l_component_type_code
20713       ,p_accounting_line_appl_id    => l_component_appl_id
20714       ,p_amb_context_code           => l_amb_context_code
20715       ,p_entity_code                => l_entity_code
20716       ,p_event_class_code           => l_event_class_code);
20717    --
20718    -- set accounting class
20719    --
20720    xla_ae_lines_pkg.SetAcctClass(
20721            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
20722          , p_ae_header_id           => l_ae_header_id
20723          );
20724 
20725    --
20726    -- set rounding class
20727    --
20728    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20729                       'FEDERAL_PROJECT_COST_CLEARING';
20730 
20731    --
20732    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20733    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20734    --
20735    -- bulk performance
20736    --
20737    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20738 
20739    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20740       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20741 
20742    -- 4955764
20743    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20744       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20745 
20746    -- 4458381 Public Sector Enh
20747    
20748    --
20749    -- set accounting attributes for the line type
20750    --
20751    l_entered_amt_idx := 22;
20752    l_accted_amt_idx  := 27;
20753    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20754    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20755    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
20756    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
20757    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
20758    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
20759    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
20760    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
20761    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
20762    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
20763    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
20764    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
20765    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
20766    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
20767    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
20768    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
20769    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
20770    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
20771    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
20772    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
20773    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
20774    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
20775    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
20776    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
20777    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
20778    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
20779    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
20780    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
20781    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
20782    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
20783    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
20784    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
20785    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
20786    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
20787    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
20788    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
20789    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
20790    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
20791    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
20792    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
20793    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
20794    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
20795    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
20796    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
20797    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
20798    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
20799    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
20800    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
20801    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
20802    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
20803    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
20804    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
20805    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
20809    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
20806    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
20807    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
20808    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
20810    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
20811    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
20812    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
20813    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
20814 
20815    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20816    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20817 
20818    ---------------------------------------------------------------------------------------------------------------
20819    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20820    ---------------------------------------------------------------------------------------------------------------
20821    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20822 
20823    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20824    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20825 
20826    IF xla_accounting_cache_pkg.GetValueChar
20827          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20828          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20829    AND l_bflow_method_code = 'PRIOR_ENTRY'
20830 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20831    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20832          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20833        )
20834    THEN
20835          xla_ae_lines_pkg.BflowUpgEntry
20836            (p_business_method_code    => l_bflow_method_code
20837            ,p_business_class_code     => l_bflow_class_code
20838            ,p_balance_type            => l_balance_type_code);
20839    ELSE
20840       NULL;
20841 -- No business flow processing for business flow method of NONE.
20842    END IF;
20843 
20844    --
20845    -- call analytical criteria
20846    --
20847    
20848    --
20849    -- call description
20850    --
20851    -- No description or it is inherited.
20852    --
20853    -- call ADRs
20854    -- Bug 4922099
20855    --
20856    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20857         (NVL(l_actual_upg_option, 'N') = 'O') OR
20858         (NVL(l_enc_upg_option, 'N') = 'O')
20859       )
20860    THEN
20861    NULL;
20862    --
20863    --
20864    
20865   l_ccid := AcctDerRule_14(
20866            p_application_id           => p_application_id
20867          , p_ae_header_id             => l_ae_header_id 
20868 , p_source_5 => p_source_5
20869 , p_source_7 => p_source_7
20870 , p_source_8 => p_source_8
20871          , x_transaction_coa_id       => l_adr_transaction_coa_id
20872          , x_accounting_coa_id        => l_adr_accounting_coa_id
20873          , x_value_type_code          => l_adr_value_type_code
20874          , p_side                     => 'NA'
20875    );
20876 
20877    xla_ae_lines_pkg.set_ccid(
20878     p_code_combination_id          => l_ccid
20879   , p_value_type_code              => l_adr_value_type_code
20880   , p_transaction_coa_id           => l_adr_transaction_coa_id
20881   , p_accounting_coa_id            => l_adr_accounting_coa_id
20882   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
20883   , p_adr_type_code                => 'S'
20884   , p_component_type               => l_component_type
20885   , p_component_code               => l_component_code
20886   , p_component_type_code          => l_component_type_code
20887   , p_component_appl_id            => l_component_appl_id
20888   , p_amb_context_code             => l_amb_context_code
20889   , p_side                         => 'NA'
20890   );
20891 
20892 
20893    l_segment := AcctDerRule_5(
20894            p_application_id           => p_application_id
20895          , p_ae_header_id             => l_ae_header_id 
20896          , x_transaction_coa_id       => l_adr_transaction_coa_id
20897          , x_accounting_coa_id        => l_adr_accounting_coa_id
20898          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
20899          , x_flex_value_set_id        => l_adr_flex_value_set_id
20900          , x_value_type_code          => l_adr_value_type_code
20901          , x_value_combination_id     => l_adr_value_combination_id
20902          , x_value_segment_code       => l_adr_value_segment_code
20903          , p_side                     => 'NA'
20904          , p_override_seg_flag        => 'Y'
20905    );
20906 
20907    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
20908 
20909       xla_ae_lines_pkg.set_segment(
20910           p_to_segment_code         => 'GL_ACCOUNT'
20911         , p_segment_value           => l_segment
20912         , p_from_segment_code       => l_adr_value_segment_code
20913         , p_from_combination_id     => l_adr_value_combination_id
20914         , p_value_type_code         => l_adr_value_type_code
20915         , p_transaction_coa_id      => l_adr_transaction_coa_id
20916         , p_accounting_coa_id       => l_adr_accounting_coa_id
20917         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
20918         , p_flex_value_set_id       => l_adr_flex_value_set_id
20919         , p_adr_code                => 'FV_490201_PROJECTS'
20920         , p_adr_type_code           => 'S'
20921         , p_component_type          => l_component_type
20922         , p_component_code          => l_component_code
20923         , p_component_type_code     => l_component_type_code
20924         , p_component_appl_id       => l_component_appl_id
20928         , p_side                    => 'NA'
20925         , p_amb_context_code        => l_amb_context_code
20926         , p_entity_code             => 'EXPENDITURES'
20927         , p_event_class_code        => 'SUPPLIER_COST'
20929         );
20930 
20931   END IF;
20932 
20933    --
20934    --
20935    END IF;
20936    --
20937    -- Bug 4922099
20938    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20939           (NVL(l_enc_upg_option, 'N') = 'O')
20940         ) AND
20941         (l_bflow_method_code = 'PRIOR_ENTRY')
20942       )
20943    THEN
20944       IF
20945       --
20946       1 = 2
20947       --
20948       THEN
20949       xla_accounting_err_pkg.build_message
20950                                     (p_appli_s_name            => 'XLA'
20951                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20952                                     ,p_token_1                 => 'LINE_NUMBER'
20953                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20954                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20955                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20956                                                                              l_component_type
20957                                                                             ,l_component_code
20958                                                                             ,l_component_type_code
20959                                                                             ,l_component_appl_id
20960                                                                             ,l_amb_context_code
20961                                                                             ,l_entity_code
20962                                                                             ,l_event_class_code
20963                                                                            )
20964                                     ,p_token_3                 => 'OWNER'
20965                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20966                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20967                                                                           ,p_lookup_code    => l_component_type_code
20968                                                                          )
20969                                     ,p_token_4                 => 'PRODUCT_NAME'
20970                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20971                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20972                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20973                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20974                                     ,p_ae_header_id            =>  NULL
20975                                        );
20976 
20977         IF (C_LEVEL_ERROR>= g_log_level) THEN
20978                  trace
20979                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20980                       ,p_level    => C_LEVEL_ERROR
20981                       ,p_module   => l_log_module);
20982         END IF;
20983       END IF;
20984    END IF;
20985    --
20986    --
20987    ------------------------------------------------------------------------------------------------
20988    -- 4219869 Business Flow
20989    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20990    -- Prior Entry.  Currently, the following code is always generated.
20991    ------------------------------------------------------------------------------------------------
20992    XLA_AE_LINES_PKG.ValidateCurrentLine;
20993 
20994    ------------------------------------------------------------------------------------
20995    -- 4219869 Business Flow
20996    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20997    ------------------------------------------------------------------------------------
20998    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20999 
21000    ----------------------------------------------------------------------------------
21001    -- 4219869 Business Flow
21002    -- Update journal entry status -- Need to generate this within IF <condition>
21003    ----------------------------------------------------------------------------------
21004    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21005          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21006          ,p_balance_type_code => l_balance_type_code
21007          );
21008 
21009    -------------------------------------------------------------------------------------------
21010    -- 4262811 - Generate the Accrual Reversal lines
21011    -------------------------------------------------------------------------------------------
21012    BEGIN
21013       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21014                               (g_array_event(p_event_id).array_value_num('header_index'));
21015       IF l_acc_rev_flag IS NULL THEN
21016          l_acc_rev_flag := 'N';
21017       END IF;
21018    EXCEPTION
21019       WHEN OTHERS THEN
21020          l_acc_rev_flag := 'N';
21021    END;
21022    --
21023    IF (l_acc_rev_flag = 'Y') THEN
21024 
21025        -- 4645092  ------------------------------------------------------------------------------
21026        -- To allow MPA report to determine if it should generate report process
21027        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21028        ------------------------------------------------------------------------------------------
21029 
21030        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21034        -- Update the line information that should be overwritten
21031        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21032 
21033        --
21035        --
21036        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21037                                          p_header_num   => 1);
21038        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21039 
21040        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21041 
21042        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21043           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21044        END IF;
21045 
21046       --
21047       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21048       --
21049       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21050           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21051       ELSE
21052           ---------------------------------------------------------------------------------------------------
21053           -- 4262811a Switch Sign
21054           ---------------------------------------------------------------------------------------------------
21055           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21056           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21057                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21058           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21059                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21060           -- 5132302
21061           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21062                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21063 
21064       END IF;
21065 
21066       -- 4955764
21067       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21068       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21069 
21070 
21071       XLA_AE_LINES_PKG.ValidateCurrentLine;
21072       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21073 
21074       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21075                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21076                ,p_balance_type_code => l_balance_type_code);
21077 
21078    END IF;
21079 
21080    -----------------------------------------------------------------------------------------
21081    -- 4262811 Multiperiod Accounting
21082    -----------------------------------------------------------------------------------------
21083      -- No MPA option is assigned.
21084 
21085 
21086 END IF;
21087 END IF;
21088 --
21089 
21090 --
21091 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21092    trace
21093       (p_msg      => 'END of AcctLineType_57'
21094       ,p_level    => C_LEVEL_PROCEDURE
21095       ,p_module   => l_log_module);
21096 END IF;
21097 --
21098 EXCEPTION
21099   WHEN xla_exceptions_pkg.application_exception THEN
21100       RAISE;
21101   WHEN OTHERS THEN
21102        xla_exceptions_pkg.raise_message
21103            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_57');
21104 END AcctLineType_57;
21105 --
21106 
21107 ---------------------------------------
21108 --
21109 -- PRIVATE FUNCTION
21110 --         AcctLineType_58
21111 --
21112 ---------------------------------------
21113 PROCEDURE AcctLineType_58 (
21114   p_application_id        IN NUMBER
21115  ,p_event_id              IN NUMBER
21116  ,p_calculate_acctd_flag  IN VARCHAR2
21117  ,p_calculate_g_l_flag    IN VARCHAR2
21118  ,p_actual_flag           IN OUT VARCHAR2
21119  ,p_balance_type_code     OUT VARCHAR2
21120  ,p_gain_or_loss_ref      OUT VARCHAR2
21121  
21122 --Cost CCID
21123  , p_source_4            IN NUMBER
21124 --Allow Account Override Flag
21125  , p_source_5            IN VARCHAR2
21126 --Cost Clearing CCID
21127  , p_source_7            IN NUMBER
21128 --Adjustment Cost Clearing CCID
21129  , p_source_8            IN NUMBER
21130 --Exchange Rate Variance Flag
21131  , p_source_22            IN VARCHAR2
21132 --Reversing Line Flag
21133  , p_source_23            IN VARCHAR2
21134 --Actual Upgrade Credit Accounting Class
21135  , p_source_24            IN VARCHAR2
21136 --Entered Raw Cost
21137  , p_source_25            IN NUMBER
21138 --Entered Currency Code
21139  , p_source_26            IN VARCHAR2
21140 --Accounted Raw Cost
21141  , p_source_27            IN NUMBER
21142 --Exchange Rate Date
21143  , p_source_28            IN DATE
21144 --Exchange Rate
21145  , p_source_29            IN NUMBER
21146 --Exchange Rate Type
21147  , p_source_30            IN VARCHAR2
21148 --Actual Upgrade Debit Accounting Class
21149  , p_source_31            IN VARCHAR2
21150 --Use Actuals Upgrade Attributes Flag
21151  , p_source_32            IN VARCHAR2
21152 --Expenditure Item ID
21153  , p_source_33            IN NUMBER
21154 --Cost Distribution Line Number
21155  , p_source_34            IN NUMBER
21156 --Line Type
21157  , p_source_35            IN VARCHAR2
21158  , p_source_35_meaning    IN VARCHAR2
21159 --Reversed Line Number
21160  , p_source_36            IN NUMBER
21161 )
21162 IS
21163 
21164 l_component_type              VARCHAR2(80);
21165 l_component_code              VARCHAR2(30);
21166 l_component_type_code         VARCHAR2(1);
21170 l_event_class_code            VARCHAR2(30);
21167 l_component_appl_id           INTEGER;
21168 l_amb_context_code            VARCHAR2(30);
21169 l_entity_code                 VARCHAR2(30);
21171 l_ae_header_id                NUMBER;
21172 l_event_type_code             VARCHAR2(30);
21173 l_line_definition_code        VARCHAR2(30);
21174 l_line_definition_owner_code  VARCHAR2(1);
21175 --
21176 -- adr variables
21177 l_segment                     VARCHAR2(30);
21178 l_ccid                        NUMBER;
21179 l_adr_transaction_coa_id      NUMBER;
21180 l_adr_accounting_coa_id       NUMBER;
21181 l_adr_flexfield_segment_code  VARCHAR2(30);
21182 l_adr_flex_value_set_id       NUMBER;
21183 l_adr_value_type_code         VARCHAR2(30);
21184 l_adr_value_combination_id    NUMBER;
21185 l_adr_value_segment_code      VARCHAR2(30);
21186 
21187 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21188 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21189 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21190 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21191 
21192 -- 4262811 Variables ------------------------------------------------------------------------------------------
21193 l_entered_amt_idx             NUMBER;
21194 l_accted_amt_idx              NUMBER;
21195 l_acc_rev_flag                VARCHAR2(1);
21196 l_accrual_line_num            NUMBER;
21197 l_tmp_amt                     NUMBER;
21198 l_acc_rev_natural_side_code   VARCHAR2(1);
21199 
21200 l_num_entries                 NUMBER;
21201 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21202 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21203 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21204 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21205 l_recog_line_1                NUMBER;
21206 l_recog_line_2                NUMBER;
21207 
21208 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21209 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21210 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21211 
21212 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21213 
21214 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21215 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21216 
21217 ---------------------------------------------------------------------------------------------------------------
21218 
21219 
21220 --
21221 -- bulk performance
21222 --
21223 l_balance_type_code           VARCHAR2(1);
21224 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21225 l_log_module                  VARCHAR2(240);
21226 
21227 --
21228 -- Upgrade strategy
21229 --
21230 l_actual_upg_option           VARCHAR2(1);
21231 l_enc_upg_option           VARCHAR2(1);
21232 
21233 --
21234 BEGIN
21235 --
21236 IF g_log_enabled THEN
21237       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
21238 END IF;
21239 --
21240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21241 
21242       trace
21243          (p_msg      => 'BEGIN of AcctLineType_58'
21244          ,p_level    => C_LEVEL_PROCEDURE
21245          ,p_module   => l_log_module);
21246 
21247 END IF;
21248 --
21249 l_component_type             := 'AMB_JLT';
21250 l_component_code             := 'PA_EXCH_RATE_VAR_CLEAR_FED';
21251 l_component_type_code        := 'S';
21252 l_component_appl_id          :=  275;
21253 l_amb_context_code           := 'DEFAULT';
21254 l_entity_code                := 'EXPENDITURES';
21255 l_event_class_code           := 'SUPPLIER_COST_ADJ';
21256 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
21257 l_line_definition_owner_code := 'S';
21258 l_line_definition_code       := 'FV_PROJECTS_JLD';
21259 --
21260 l_balance_type_code          := 'A';
21261 l_segment                     := NULL;
21262 l_ccid                        := NULL;
21263 l_adr_transaction_coa_id      := NULL;
21264 l_adr_accounting_coa_id       := NULL;
21265 l_adr_flexfield_segment_code  := NULL;
21266 l_adr_flex_value_set_id       := NULL;
21267 l_adr_value_type_code         := NULL;
21268 l_adr_value_combination_id    := NULL;
21269 l_adr_value_segment_code      := NULL;
21270 
21271 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21272 l_bflow_class_code           := '';    -- 4219869 Business Flow
21273 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21274 l_budgetary_control_flag     := 'N';
21275 
21276 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21277 l_bflow_applied_to_amt       := NULL; -- 5132302
21278 l_entered_amt_idx            := NULL;          -- 4262811
21279 l_accted_amt_idx             := NULL;          -- 4262811
21280 l_acc_rev_flag               := NULL;          -- 4262811
21281 l_accrual_line_num           := NULL;          -- 4262811
21282 l_tmp_amt                    := NULL;          -- 4262811
21283 --
21284 IF ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
21285             (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
21286                return;
21287   END IF;
21288   
21289 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21290     l_balance_type_code <> 'B' THEN
21291 IF NVL(p_source_22,'
21292 ') =  'Y'
21293  THEN 
21294 
21295    --
21296    XLA_AE_LINES_PKG.SetNewLine;
21297 
21298    p_balance_type_code          := l_balance_type_code;
21302      p_actual_flag :='G';
21299    -- set the flag so later we will know whether the gain loss line needs to be created
21300    
21301    IF(l_balance_type_code = 'A' ) THEN
21303    END IF;
21304 
21305    --
21306    -- bulk performance
21307    --
21308    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21309                                       p_header_num   => 0); -- 4262811
21310    --
21311    -- set accounting line options
21312    --
21313    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21314            p_natural_side_code          => 'C'
21315          , p_gain_or_loss_flag          => 'Y'
21316          , p_gl_transfer_mode_code      => 'S'
21317          , p_acct_entry_type_code       => 'A'
21318          , p_switch_side_flag           => 'Y'
21319          , p_merge_duplicate_code       => 'N'
21320          );
21321    --
21322    l_acc_rev_natural_side_code := 'D';  -- 4262811
21323    -- 
21324    --
21325    -- set accounting line type info
21326    --
21327    xla_ae_lines_pkg.SetAcctLineType
21328       (p_component_type             => l_component_type
21329       ,p_event_type_code            => l_event_type_code
21330       ,p_line_definition_owner_code => l_line_definition_owner_code
21331       ,p_line_definition_code       => l_line_definition_code
21332       ,p_accounting_line_code       => l_component_code
21333       ,p_accounting_line_type_code  => l_component_type_code
21334       ,p_accounting_line_appl_id    => l_component_appl_id
21335       ,p_amb_context_code           => l_amb_context_code
21336       ,p_entity_code                => l_entity_code
21337       ,p_event_class_code           => l_event_class_code);
21338    --
21339    -- set accounting class
21340    --
21341    xla_ae_lines_pkg.SetAcctClass(
21342            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
21343          , p_ae_header_id           => l_ae_header_id
21344          );
21345 
21346    --
21347    -- set rounding class
21348    --
21349    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21350                       'FEDERAL_PROJECT_COST_CLEARING';
21351 
21352    --
21353    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21354    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21355    --
21356    -- bulk performance
21357    --
21358    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21359 
21360    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21361       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21362 
21363    -- 4955764
21364    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21365       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21366 
21367    -- 4458381 Public Sector Enh
21368    
21369    --
21370    -- set accounting attributes for the line type
21371    --
21372    l_entered_amt_idx := 22;
21373    l_accted_amt_idx  := 27;
21374    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21375    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21376    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
21377    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
21378    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
21379    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
21380    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
21381    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
21382    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
21383    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
21384    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
21385    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
21386    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
21387    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
21388    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
21389    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
21390    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
21391    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
21392    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
21393    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
21394    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
21395    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
21396    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
21397    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
21398    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
21399    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
21400    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
21401    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
21402    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
21403    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
21404    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
21405    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
21406    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
21407    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
21408    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
21409    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
21410    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
21411    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
21412    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
21413    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
21417    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
21414    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
21415    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
21416    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
21418    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
21419    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
21420    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
21421    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
21422    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
21423    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
21424    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
21425    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
21426    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
21427    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
21428    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
21429    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
21430    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
21431    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
21432    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
21433    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
21434    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
21435 
21436    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21437    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21438 
21439    ---------------------------------------------------------------------------------------------------------------
21440    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21441    ---------------------------------------------------------------------------------------------------------------
21442    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21443 
21444    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21445    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21446 
21447    IF xla_accounting_cache_pkg.GetValueChar
21448          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21449          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21450    AND l_bflow_method_code = 'PRIOR_ENTRY'
21451 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21452    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21453          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21454        )
21455    THEN
21456          xla_ae_lines_pkg.BflowUpgEntry
21457            (p_business_method_code    => l_bflow_method_code
21458            ,p_business_class_code     => l_bflow_class_code
21459            ,p_balance_type            => l_balance_type_code);
21460    ELSE
21461       NULL;
21462 -- No business flow processing for business flow method of NONE.
21463    END IF;
21464 
21465    --
21466    -- call analytical criteria
21467    --
21468    
21469    --
21470    -- call description
21471    --
21472    -- No description or it is inherited.
21473    --
21474    -- call ADRs
21475    -- Bug 4922099
21476    --
21477    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21478         (NVL(l_actual_upg_option, 'N') = 'O') OR
21479         (NVL(l_enc_upg_option, 'N') = 'O')
21480       )
21481    THEN
21482    NULL;
21483    --
21484    --
21485    
21486   l_ccid := AcctDerRule_15(
21487            p_application_id           => p_application_id
21488          , p_ae_header_id             => l_ae_header_id 
21489 , p_source_5 => p_source_5
21490 , p_source_8 => p_source_8
21491          , x_transaction_coa_id       => l_adr_transaction_coa_id
21492          , x_accounting_coa_id        => l_adr_accounting_coa_id
21493          , x_value_type_code          => l_adr_value_type_code
21494          , p_side                     => 'NA'
21495    );
21496 
21497    xla_ae_lines_pkg.set_ccid(
21498     p_code_combination_id          => l_ccid
21499   , p_value_type_code              => l_adr_value_type_code
21500   , p_transaction_coa_id           => l_adr_transaction_coa_id
21501   , p_accounting_coa_id            => l_adr_accounting_coa_id
21502   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
21503   , p_adr_type_code                => 'S'
21504   , p_component_type               => l_component_type
21505   , p_component_code               => l_component_code
21506   , p_component_type_code          => l_component_type_code
21507   , p_component_appl_id            => l_component_appl_id
21508   , p_amb_context_code             => l_amb_context_code
21509   , p_side                         => 'NA'
21510   );
21511 
21512 
21513    l_segment := AcctDerRule_5(
21514            p_application_id           => p_application_id
21515          , p_ae_header_id             => l_ae_header_id 
21516          , x_transaction_coa_id       => l_adr_transaction_coa_id
21517          , x_accounting_coa_id        => l_adr_accounting_coa_id
21518          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
21519          , x_flex_value_set_id        => l_adr_flex_value_set_id
21520          , x_value_type_code          => l_adr_value_type_code
21521          , x_value_combination_id     => l_adr_value_combination_id
21522          , x_value_segment_code       => l_adr_value_segment_code
21523          , p_side                     => 'NA'
21524          , p_override_seg_flag        => 'Y'
21525    );
21526 
21527    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
21528 
21529       xla_ae_lines_pkg.set_segment(
21530           p_to_segment_code         => 'GL_ACCOUNT'
21531         , p_segment_value           => l_segment
21535         , p_transaction_coa_id      => l_adr_transaction_coa_id
21532         , p_from_segment_code       => l_adr_value_segment_code
21533         , p_from_combination_id     => l_adr_value_combination_id
21534         , p_value_type_code         => l_adr_value_type_code
21536         , p_accounting_coa_id       => l_adr_accounting_coa_id
21537         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
21538         , p_flex_value_set_id       => l_adr_flex_value_set_id
21539         , p_adr_code                => 'FV_490201_PROJECTS'
21540         , p_adr_type_code           => 'S'
21541         , p_component_type          => l_component_type
21542         , p_component_code          => l_component_code
21543         , p_component_type_code     => l_component_type_code
21544         , p_component_appl_id       => l_component_appl_id
21545         , p_amb_context_code        => l_amb_context_code
21546         , p_entity_code             => 'EXPENDITURES'
21547         , p_event_class_code        => 'SUPPLIER_COST_ADJ'
21548         , p_side                    => 'NA'
21549         );
21550 
21551   END IF;
21552 
21553    --
21554    --
21555    END IF;
21556    --
21557    -- Bug 4922099
21558    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21559           (NVL(l_enc_upg_option, 'N') = 'O')
21560         ) AND
21561         (l_bflow_method_code = 'PRIOR_ENTRY')
21562       )
21563    THEN
21564       IF
21565       --
21566       1 = 2
21567       --
21568       THEN
21569       xla_accounting_err_pkg.build_message
21570                                     (p_appli_s_name            => 'XLA'
21571                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21572                                     ,p_token_1                 => 'LINE_NUMBER'
21573                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21574                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21575                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21576                                                                              l_component_type
21577                                                                             ,l_component_code
21578                                                                             ,l_component_type_code
21579                                                                             ,l_component_appl_id
21580                                                                             ,l_amb_context_code
21581                                                                             ,l_entity_code
21582                                                                             ,l_event_class_code
21583                                                                            )
21584                                     ,p_token_3                 => 'OWNER'
21585                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21586                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21587                                                                           ,p_lookup_code    => l_component_type_code
21588                                                                          )
21589                                     ,p_token_4                 => 'PRODUCT_NAME'
21590                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21591                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21592                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21593                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21594                                     ,p_ae_header_id            =>  NULL
21595                                        );
21596 
21597         IF (C_LEVEL_ERROR>= g_log_level) THEN
21598                  trace
21599                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21600                       ,p_level    => C_LEVEL_ERROR
21601                       ,p_module   => l_log_module);
21602         END IF;
21603       END IF;
21604    END IF;
21605    --
21606    --
21607    ------------------------------------------------------------------------------------------------
21608    -- 4219869 Business Flow
21609    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21610    -- Prior Entry.  Currently, the following code is always generated.
21611    ------------------------------------------------------------------------------------------------
21612    XLA_AE_LINES_PKG.ValidateCurrentLine;
21613 
21614    ------------------------------------------------------------------------------------
21615    -- 4219869 Business Flow
21616    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21617    ------------------------------------------------------------------------------------
21618    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21619 
21620    ----------------------------------------------------------------------------------
21621    -- 4219869 Business Flow
21622    -- Update journal entry status -- Need to generate this within IF <condition>
21623    ----------------------------------------------------------------------------------
21624    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21625          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21626          ,p_balance_type_code => l_balance_type_code
21627          );
21628 
21629    -------------------------------------------------------------------------------------------
21630    -- 4262811 - Generate the Accrual Reversal lines
21631    -------------------------------------------------------------------------------------------
21632    BEGIN
21633       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21637       END IF;
21634                               (g_array_event(p_event_id).array_value_num('header_index'));
21635       IF l_acc_rev_flag IS NULL THEN
21636          l_acc_rev_flag := 'N';
21638    EXCEPTION
21639       WHEN OTHERS THEN
21640          l_acc_rev_flag := 'N';
21641    END;
21642    --
21643    IF (l_acc_rev_flag = 'Y') THEN
21644 
21645        -- 4645092  ------------------------------------------------------------------------------
21646        -- To allow MPA report to determine if it should generate report process
21647        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21648        ------------------------------------------------------------------------------------------
21649 
21650        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21651        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21652 
21653        --
21654        -- Update the line information that should be overwritten
21655        --
21656        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21657                                          p_header_num   => 1);
21658        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21659 
21660        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21661 
21662        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21663           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21664        END IF;
21665 
21666       --
21667       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21668       --
21669       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21670           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21671       ELSE
21672           ---------------------------------------------------------------------------------------------------
21673           -- 4262811a Switch Sign
21674           ---------------------------------------------------------------------------------------------------
21675           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21676           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21677                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21678           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21679                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21680           -- 5132302
21681           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21682                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21683 
21684       END IF;
21685 
21686       -- 4955764
21687       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21688       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21689 
21690 
21691       XLA_AE_LINES_PKG.ValidateCurrentLine;
21692       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21693 
21694       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21695                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21696                ,p_balance_type_code => l_balance_type_code);
21697 
21698    END IF;
21699 
21700    -----------------------------------------------------------------------------------------
21701    -- 4262811 Multiperiod Accounting
21702    -----------------------------------------------------------------------------------------
21703      -- No MPA option is assigned.
21704 
21705 
21706 END IF;
21707 END IF;
21708 --
21709 
21710 --
21711 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21712    trace
21713       (p_msg      => 'END of AcctLineType_58'
21714       ,p_level    => C_LEVEL_PROCEDURE
21715       ,p_module   => l_log_module);
21716 END IF;
21717 --
21718 EXCEPTION
21719   WHEN xla_exceptions_pkg.application_exception THEN
21720       RAISE;
21721   WHEN OTHERS THEN
21722        xla_exceptions_pkg.raise_message
21723            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_58');
21724 END AcctLineType_58;
21725 --
21726 
21727 ---------------------------------------
21728 --
21729 -- PRIVATE FUNCTION
21730 --         AcctLineType_59
21731 --
21732 ---------------------------------------
21733 PROCEDURE AcctLineType_59 (
21734   p_application_id        IN NUMBER
21735  ,p_event_id              IN NUMBER
21736  ,p_calculate_acctd_flag  IN VARCHAR2
21737  ,p_calculate_g_l_flag    IN VARCHAR2
21738  ,p_actual_flag           IN OUT VARCHAR2
21739  ,p_balance_type_code     OUT VARCHAR2
21740  ,p_gain_or_loss_ref      OUT VARCHAR2
21741  
21742 --Revenue CCID
21743  , p_source_19            IN NUMBER
21744 --Entered Currency Code
21745  , p_source_26            IN VARCHAR2
21746 --Exchange Rate Date
21747  , p_source_28            IN DATE
21748 --Exchange Rate
21749  , p_source_29            IN NUMBER
21750 --Exchange Rate Type
21751  , p_source_30            IN VARCHAR2
21752 --Entered Amount
21753  , p_source_42            IN NUMBER
21754 --Accounted Amount
21755  , p_source_43            IN NUMBER
21756 --Revenue Distribution Type
21757  , p_source_46            IN VARCHAR2
21758 --System Linkage Function
21759  , p_source_47            IN VARCHAR2
21760 --Crediting Revenue Flag
21761  , p_source_48            IN VARCHAR2
21762 --Revenue First Distribution ID
21763  , p_source_49            IN NUMBER
21764 --Revenue Second Distribution ID
21765  , p_source_50            IN NUMBER
21766 --Event ID
21770 
21767  , p_source_51            IN NUMBER
21768 )
21769 IS
21771 l_component_type              VARCHAR2(80);
21772 l_component_code              VARCHAR2(30);
21773 l_component_type_code         VARCHAR2(1);
21774 l_component_appl_id           INTEGER;
21775 l_amb_context_code            VARCHAR2(30);
21776 l_entity_code                 VARCHAR2(30);
21777 l_event_class_code            VARCHAR2(30);
21778 l_ae_header_id                NUMBER;
21779 l_event_type_code             VARCHAR2(30);
21780 l_line_definition_code        VARCHAR2(30);
21781 l_line_definition_owner_code  VARCHAR2(1);
21782 --
21783 -- adr variables
21784 l_segment                     VARCHAR2(30);
21785 l_ccid                        NUMBER;
21786 l_adr_transaction_coa_id      NUMBER;
21787 l_adr_accounting_coa_id       NUMBER;
21788 l_adr_flexfield_segment_code  VARCHAR2(30);
21789 l_adr_flex_value_set_id       NUMBER;
21790 l_adr_value_type_code         VARCHAR2(30);
21791 l_adr_value_combination_id    NUMBER;
21792 l_adr_value_segment_code      VARCHAR2(30);
21793 
21794 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21795 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21796 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21797 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21798 
21799 -- 4262811 Variables ------------------------------------------------------------------------------------------
21800 l_entered_amt_idx             NUMBER;
21801 l_accted_amt_idx              NUMBER;
21802 l_acc_rev_flag                VARCHAR2(1);
21803 l_accrual_line_num            NUMBER;
21804 l_tmp_amt                     NUMBER;
21805 l_acc_rev_natural_side_code   VARCHAR2(1);
21806 
21807 l_num_entries                 NUMBER;
21808 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21809 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21810 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21811 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21812 l_recog_line_1                NUMBER;
21813 l_recog_line_2                NUMBER;
21814 
21815 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21816 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21817 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21818 
21819 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21820 
21821 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21822 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21823 
21824 ---------------------------------------------------------------------------------------------------------------
21825 
21826 
21827 --
21828 -- bulk performance
21829 --
21830 l_balance_type_code           VARCHAR2(1);
21831 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21832 l_log_module                  VARCHAR2(240);
21833 
21834 --
21835 -- Upgrade strategy
21836 --
21837 l_actual_upg_option           VARCHAR2(1);
21838 l_enc_upg_option           VARCHAR2(1);
21839 
21840 --
21841 BEGIN
21842 --
21843 IF g_log_enabled THEN
21844       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
21845 END IF;
21846 --
21847 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21848 
21849       trace
21850          (p_msg      => 'BEGIN of AcctLineType_59'
21851          ,p_level    => C_LEVEL_PROCEDURE
21852          ,p_module   => l_log_module);
21853 
21854 END IF;
21855 --
21856 l_component_type             := 'AMB_JLT';
21857 l_component_code             := 'PA_INV_REV';
21858 l_component_type_code        := 'S';
21859 l_component_appl_id          :=  275;
21860 l_amb_context_code           := 'DEFAULT';
21861 l_entity_code                := 'REVENUE';
21862 l_event_class_code           := 'REVENUE';
21863 l_event_type_code            := 'REVENUE_ALL';
21864 l_line_definition_owner_code := 'S';
21865 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
21866 --
21867 l_balance_type_code          := 'A';
21868 l_segment                     := NULL;
21869 l_ccid                        := NULL;
21870 l_adr_transaction_coa_id      := NULL;
21871 l_adr_accounting_coa_id       := NULL;
21872 l_adr_flexfield_segment_code  := NULL;
21873 l_adr_flex_value_set_id       := NULL;
21874 l_adr_value_type_code         := NULL;
21875 l_adr_value_combination_id    := NULL;
21876 l_adr_value_segment_code      := NULL;
21877 
21878 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21879 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
21880 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21881 l_budgetary_control_flag     := 'N';
21882 
21883 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21884 l_bflow_applied_to_amt       := NULL; -- 5132302
21885 l_entered_amt_idx            := NULL;          -- 4262811
21886 l_accted_amt_idx             := NULL;          -- 4262811
21887 l_acc_rev_flag               := NULL;          -- 4262811
21888 l_accrual_line_num           := NULL;          -- 4262811
21889 l_tmp_amt                    := NULL;          -- 4262811
21890 --
21891  
21892 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21893     l_balance_type_code <> 'B' THEN
21894 IF NVL(p_source_46,'
21895 ') =  'Revenue - Normal Revenue' AND 
21896 NVL(p_source_47,'
21897 ') =  'INV' AND 
21898 NVL(p_source_48,'
21899 ') =  'N'
21900  THEN 
21901 
21902    --
21903    XLA_AE_LINES_PKG.SetNewLine;
21904 
21905    p_balance_type_code          := l_balance_type_code;
21909      p_actual_flag :='A';
21906    -- set the flag so later we will know whether the gain loss line needs to be created
21907    
21908    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21910    END IF;
21911 
21912    --
21913    -- bulk performance
21914    --
21915    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21916                                       p_header_num   => 0); -- 4262811
21917    --
21918    -- set accounting line options
21919    --
21920    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21921            p_natural_side_code          => 'C'
21922          , p_gain_or_loss_flag          => 'N'
21923          , p_gl_transfer_mode_code      => 'S'
21924          , p_acct_entry_type_code       => 'A'
21925          , p_switch_side_flag           => 'Y'
21926          , p_merge_duplicate_code       => 'N'
21927          );
21928    --
21929    l_acc_rev_natural_side_code := 'D';  -- 4262811
21930    -- 
21931    --
21932    -- set accounting line type info
21933    --
21934    xla_ae_lines_pkg.SetAcctLineType
21935       (p_component_type             => l_component_type
21936       ,p_event_type_code            => l_event_type_code
21937       ,p_line_definition_owner_code => l_line_definition_owner_code
21938       ,p_line_definition_code       => l_line_definition_code
21939       ,p_accounting_line_code       => l_component_code
21940       ,p_accounting_line_type_code  => l_component_type_code
21941       ,p_accounting_line_appl_id    => l_component_appl_id
21942       ,p_amb_context_code           => l_amb_context_code
21943       ,p_entity_code                => l_entity_code
21944       ,p_event_class_code           => l_event_class_code);
21945    --
21946    -- set accounting class
21947    --
21948    xla_ae_lines_pkg.SetAcctClass(
21949            p_accounting_class_code  => 'REVENUE'
21950          , p_ae_header_id           => l_ae_header_id
21951          );
21952 
21953    --
21954    -- set rounding class
21955    --
21956    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21957                       'REVENUE';
21958 
21959    --
21960    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21961    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21962    --
21963    -- bulk performance
21964    --
21965    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21966 
21967    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21968       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21969 
21970    -- 4955764
21971    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21972       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21973 
21974    -- 4458381 Public Sector Enh
21975    
21976    --
21977    -- set accounting attributes for the line type
21978    --
21979    l_entered_amt_idx := 4;
21980    l_accted_amt_idx  := 10;
21981    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21982    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21983    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
21984    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
21985    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
21986    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
21987    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
21988    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
21989    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
21990    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
21991    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
21992    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
21993    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
21994    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
21995    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
21996    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
21997    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
21998    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
21999    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
22000    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
22001    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
22002 
22003    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22004    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22005 
22006    ---------------------------------------------------------------------------------------------------------------
22007    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22008    ---------------------------------------------------------------------------------------------------------------
22009    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22010 
22011    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22012    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22013 
22014    IF xla_accounting_cache_pkg.GetValueChar
22015          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22016          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22017    AND l_bflow_method_code = 'PRIOR_ENTRY'
22018 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22019    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22020          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22021        )
22022    THEN
22026            ,p_balance_type            => l_balance_type_code);
22023          xla_ae_lines_pkg.BflowUpgEntry
22024            (p_business_method_code    => l_bflow_method_code
22025            ,p_business_class_code     => l_bflow_class_code
22027    ELSE
22028       NULL;
22029 -- No business flow processing for business flow method of NONE.
22030    END IF;
22031 
22032    --
22033    -- call analytical criteria
22034    --
22035    
22036    --
22037    -- call description
22038    --
22039    -- No description or it is inherited.
22040    --
22041    -- call ADRs
22042    -- Bug 4922099
22043    --
22044    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22045         (NVL(l_actual_upg_option, 'N') = 'O') OR
22046         (NVL(l_enc_upg_option, 'N') = 'O')
22047       )
22048    THEN
22049    NULL;
22050    --
22051    --
22052    
22053   l_ccid := AcctDerRule_26(
22054            p_application_id           => p_application_id
22055          , p_ae_header_id             => l_ae_header_id 
22056 , p_source_19 => p_source_19
22057          , x_transaction_coa_id       => l_adr_transaction_coa_id
22058          , x_accounting_coa_id        => l_adr_accounting_coa_id
22059          , x_value_type_code          => l_adr_value_type_code
22060          , p_side                     => 'NA'
22061    );
22062 
22063    xla_ae_lines_pkg.set_ccid(
22064     p_code_combination_id          => l_ccid
22065   , p_value_type_code              => l_adr_value_type_code
22066   , p_transaction_coa_id           => l_adr_transaction_coa_id
22067   , p_accounting_coa_id            => l_adr_accounting_coa_id
22068   , p_adr_code                     => 'REVENUE_RULE'
22069   , p_adr_type_code                => 'S'
22070   , p_component_type               => l_component_type
22071   , p_component_code               => l_component_code
22072   , p_component_type_code          => l_component_type_code
22073   , p_component_appl_id            => l_component_appl_id
22074   , p_amb_context_code             => l_amb_context_code
22075   , p_side                         => 'NA'
22076   );
22077 
22078 
22079    --
22080    --
22081    END IF;
22082    --
22083    -- Bug 4922099
22084    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22085           (NVL(l_enc_upg_option, 'N') = 'O')
22086         ) AND
22087         (l_bflow_method_code = 'PRIOR_ENTRY')
22088       )
22089    THEN
22090       IF
22091       --
22092       1 = 2
22093       --
22094       THEN
22095       xla_accounting_err_pkg.build_message
22096                                     (p_appli_s_name            => 'XLA'
22097                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22098                                     ,p_token_1                 => 'LINE_NUMBER'
22099                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22100                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22101                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22102                                                                              l_component_type
22103                                                                             ,l_component_code
22104                                                                             ,l_component_type_code
22105                                                                             ,l_component_appl_id
22106                                                                             ,l_amb_context_code
22107                                                                             ,l_entity_code
22108                                                                             ,l_event_class_code
22109                                                                            )
22110                                     ,p_token_3                 => 'OWNER'
22111                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22112                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22113                                                                           ,p_lookup_code    => l_component_type_code
22114                                                                          )
22115                                     ,p_token_4                 => 'PRODUCT_NAME'
22116                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22117                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22118                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22119                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22120                                     ,p_ae_header_id            =>  NULL
22121                                        );
22122 
22123         IF (C_LEVEL_ERROR>= g_log_level) THEN
22124                  trace
22125                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22126                       ,p_level    => C_LEVEL_ERROR
22127                       ,p_module   => l_log_module);
22128         END IF;
22129       END IF;
22130    END IF;
22131    --
22132    --
22133    ------------------------------------------------------------------------------------------------
22134    -- 4219869 Business Flow
22135    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22136    -- Prior Entry.  Currently, the following code is always generated.
22137    ------------------------------------------------------------------------------------------------
22138    XLA_AE_LINES_PKG.ValidateCurrentLine;
22139 
22140    ------------------------------------------------------------------------------------
22141    -- 4219869 Business Flow
22145 
22142    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22143    ------------------------------------------------------------------------------------
22144    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22146    ----------------------------------------------------------------------------------
22147    -- 4219869 Business Flow
22148    -- Update journal entry status -- Need to generate this within IF <condition>
22149    ----------------------------------------------------------------------------------
22150    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22151          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22152          ,p_balance_type_code => l_balance_type_code
22153          );
22154 
22155    -------------------------------------------------------------------------------------------
22156    -- 4262811 - Generate the Accrual Reversal lines
22157    -------------------------------------------------------------------------------------------
22158    BEGIN
22159       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22160                               (g_array_event(p_event_id).array_value_num('header_index'));
22161       IF l_acc_rev_flag IS NULL THEN
22162          l_acc_rev_flag := 'N';
22163       END IF;
22164    EXCEPTION
22165       WHEN OTHERS THEN
22166          l_acc_rev_flag := 'N';
22167    END;
22168    --
22169    IF (l_acc_rev_flag = 'Y') THEN
22170 
22171        -- 4645092  ------------------------------------------------------------------------------
22172        -- To allow MPA report to determine if it should generate report process
22173        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22174        ------------------------------------------------------------------------------------------
22175 
22176        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22177        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22178 
22179        --
22180        -- Update the line information that should be overwritten
22181        --
22182        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22183                                          p_header_num   => 1);
22184        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22185 
22186        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22187 
22188        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22189           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22190        END IF;
22191 
22192       --
22193       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22194       --
22195       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22196           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22197       ELSE
22198           ---------------------------------------------------------------------------------------------------
22199           -- 4262811a Switch Sign
22200           ---------------------------------------------------------------------------------------------------
22201           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22202           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22203                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22204           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22205                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22206           -- 5132302
22207           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22208                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22209 
22210       END IF;
22211 
22212       -- 4955764
22213       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22214       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22215 
22216 
22217       XLA_AE_LINES_PKG.ValidateCurrentLine;
22218       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22219 
22220       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22221                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22222                ,p_balance_type_code => l_balance_type_code);
22223 
22224    END IF;
22225 
22226    -----------------------------------------------------------------------------------------
22227    -- 4262811 Multiperiod Accounting
22228    -----------------------------------------------------------------------------------------
22229      -- No MPA option is assigned.
22230 
22231 
22232 END IF;
22233 END IF;
22234 --
22235 
22236 --
22237 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22238    trace
22239       (p_msg      => 'END of AcctLineType_59'
22240       ,p_level    => C_LEVEL_PROCEDURE
22241       ,p_module   => l_log_module);
22242 END IF;
22243 --
22244 EXCEPTION
22245   WHEN xla_exceptions_pkg.application_exception THEN
22246       RAISE;
22247   WHEN OTHERS THEN
22248        xla_exceptions_pkg.raise_message
22249            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_59');
22250 END AcctLineType_59;
22251 --
22252 
22253 ---------------------------------------
22254 --
22255 -- PRIVATE FUNCTION
22256 --         AcctLineType_60
22257 --
22258 ---------------------------------------
22259 PROCEDURE AcctLineType_60 (
22260   p_application_id        IN NUMBER
22261  ,p_event_id              IN NUMBER
22262  ,p_calculate_acctd_flag  IN VARCHAR2
22263  ,p_calculate_g_l_flag    IN VARCHAR2
22267  
22264  ,p_actual_flag           IN OUT VARCHAR2
22265  ,p_balance_type_code     OUT VARCHAR2
22266  ,p_gain_or_loss_ref      OUT VARCHAR2
22268 --Revenue CCID
22269  , p_source_19            IN NUMBER
22270 --Entered Currency Code
22271  , p_source_26            IN VARCHAR2
22272 --Exchange Rate Date
22273  , p_source_28            IN DATE
22274 --Exchange Rate
22275  , p_source_29            IN NUMBER
22276 --Exchange Rate Type
22277  , p_source_30            IN VARCHAR2
22278 --Entered Amount
22279  , p_source_42            IN NUMBER
22280 --Accounted Amount
22281  , p_source_43            IN NUMBER
22282 --Revenue Distribution Type
22283  , p_source_46            IN VARCHAR2
22284 --System Linkage Function
22285  , p_source_47            IN VARCHAR2
22286 --Crediting Revenue Flag
22287  , p_source_48            IN VARCHAR2
22288 --Revenue First Distribution ID
22289  , p_source_49            IN NUMBER
22290 --Revenue Second Distribution ID
22291  , p_source_50            IN NUMBER
22292 --Event ID
22293  , p_source_51            IN NUMBER
22294 )
22295 IS
22296 
22297 l_component_type              VARCHAR2(80);
22298 l_component_code              VARCHAR2(30);
22299 l_component_type_code         VARCHAR2(1);
22300 l_component_appl_id           INTEGER;
22301 l_amb_context_code            VARCHAR2(30);
22302 l_entity_code                 VARCHAR2(30);
22303 l_event_class_code            VARCHAR2(30);
22304 l_ae_header_id                NUMBER;
22305 l_event_type_code             VARCHAR2(30);
22306 l_line_definition_code        VARCHAR2(30);
22307 l_line_definition_owner_code  VARCHAR2(1);
22308 --
22309 -- adr variables
22310 l_segment                     VARCHAR2(30);
22311 l_ccid                        NUMBER;
22312 l_adr_transaction_coa_id      NUMBER;
22313 l_adr_accounting_coa_id       NUMBER;
22314 l_adr_flexfield_segment_code  VARCHAR2(30);
22315 l_adr_flex_value_set_id       NUMBER;
22316 l_adr_value_type_code         VARCHAR2(30);
22317 l_adr_value_combination_id    NUMBER;
22318 l_adr_value_segment_code      VARCHAR2(30);
22319 
22320 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22321 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22322 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22323 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22324 
22325 -- 4262811 Variables ------------------------------------------------------------------------------------------
22326 l_entered_amt_idx             NUMBER;
22327 l_accted_amt_idx              NUMBER;
22328 l_acc_rev_flag                VARCHAR2(1);
22329 l_accrual_line_num            NUMBER;
22330 l_tmp_amt                     NUMBER;
22331 l_acc_rev_natural_side_code   VARCHAR2(1);
22332 
22333 l_num_entries                 NUMBER;
22334 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22335 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22336 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22337 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22338 l_recog_line_1                NUMBER;
22339 l_recog_line_2                NUMBER;
22340 
22341 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22342 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22343 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22344 
22345 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22346 
22347 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22348 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22349 
22350 ---------------------------------------------------------------------------------------------------------------
22351 
22352 
22353 --
22354 -- bulk performance
22355 --
22356 l_balance_type_code           VARCHAR2(1);
22357 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22358 l_log_module                  VARCHAR2(240);
22359 
22360 --
22361 -- Upgrade strategy
22362 --
22363 l_actual_upg_option           VARCHAR2(1);
22364 l_enc_upg_option           VARCHAR2(1);
22365 
22366 --
22367 BEGIN
22368 --
22369 IF g_log_enabled THEN
22370       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
22371 END IF;
22372 --
22373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22374 
22375       trace
22376          (p_msg      => 'BEGIN of AcctLineType_60'
22377          ,p_level    => C_LEVEL_PROCEDURE
22378          ,p_module   => l_log_module);
22379 
22380 END IF;
22381 --
22382 l_component_type             := 'AMB_JLT';
22383 l_component_code             := 'PA_LABOR_REV';
22384 l_component_type_code        := 'S';
22385 l_component_appl_id          :=  275;
22386 l_amb_context_code           := 'DEFAULT';
22387 l_entity_code                := 'REVENUE';
22388 l_event_class_code           := 'REVENUE';
22389 l_event_type_code            := 'REVENUE_ALL';
22390 l_line_definition_owner_code := 'S';
22391 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
22392 --
22393 l_balance_type_code          := 'A';
22394 l_segment                     := NULL;
22395 l_ccid                        := NULL;
22396 l_adr_transaction_coa_id      := NULL;
22397 l_adr_accounting_coa_id       := NULL;
22398 l_adr_flexfield_segment_code  := NULL;
22399 l_adr_flex_value_set_id       := NULL;
22400 l_adr_value_type_code         := NULL;
22401 l_adr_value_combination_id    := NULL;
22402 l_adr_value_segment_code      := NULL;
22403 
22404 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22405 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
22409 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22406 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22407 l_budgetary_control_flag     := 'N';
22408 
22410 l_bflow_applied_to_amt       := NULL; -- 5132302
22411 l_entered_amt_idx            := NULL;          -- 4262811
22412 l_accted_amt_idx             := NULL;          -- 4262811
22413 l_acc_rev_flag               := NULL;          -- 4262811
22414 l_accrual_line_num           := NULL;          -- 4262811
22415 l_tmp_amt                    := NULL;          -- 4262811
22416 --
22417  
22418 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22419     l_balance_type_code <> 'B' THEN
22420 IF NVL(p_source_46,'
22421 ') =  'Revenue - Normal Revenue' AND 
22422 (NVL(p_source_47,'
22423 ') =  'ST' OR 
22424 NVL(p_source_47,'
22425 ') =  'OT') AND 
22426 NVL(p_source_48,'
22427 ') =  'N'
22428  THEN 
22429 
22430    --
22431    XLA_AE_LINES_PKG.SetNewLine;
22432 
22433    p_balance_type_code          := l_balance_type_code;
22434    -- set the flag so later we will know whether the gain loss line needs to be created
22435    
22436    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22437      p_actual_flag :='A';
22438    END IF;
22439 
22440    --
22441    -- bulk performance
22442    --
22443    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22444                                       p_header_num   => 0); -- 4262811
22445    --
22446    -- set accounting line options
22447    --
22448    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22449            p_natural_side_code          => 'C'
22450          , p_gain_or_loss_flag          => 'N'
22451          , p_gl_transfer_mode_code      => 'S'
22452          , p_acct_entry_type_code       => 'A'
22453          , p_switch_side_flag           => 'Y'
22454          , p_merge_duplicate_code       => 'N'
22455          );
22456    --
22457    l_acc_rev_natural_side_code := 'D';  -- 4262811
22458    -- 
22459    --
22460    -- set accounting line type info
22461    --
22462    xla_ae_lines_pkg.SetAcctLineType
22463       (p_component_type             => l_component_type
22464       ,p_event_type_code            => l_event_type_code
22465       ,p_line_definition_owner_code => l_line_definition_owner_code
22466       ,p_line_definition_code       => l_line_definition_code
22467       ,p_accounting_line_code       => l_component_code
22468       ,p_accounting_line_type_code  => l_component_type_code
22469       ,p_accounting_line_appl_id    => l_component_appl_id
22470       ,p_amb_context_code           => l_amb_context_code
22471       ,p_entity_code                => l_entity_code
22472       ,p_event_class_code           => l_event_class_code);
22473    --
22474    -- set accounting class
22475    --
22476    xla_ae_lines_pkg.SetAcctClass(
22477            p_accounting_class_code  => 'REVENUE'
22478          , p_ae_header_id           => l_ae_header_id
22479          );
22480 
22481    --
22482    -- set rounding class
22483    --
22484    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22485                       'REVENUE';
22486 
22487    --
22488    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22489    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22490    --
22491    -- bulk performance
22492    --
22493    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22494 
22495    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22496       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22497 
22498    -- 4955764
22499    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22501 
22502    -- 4458381 Public Sector Enh
22503    
22504    --
22505    -- set accounting attributes for the line type
22506    --
22507    l_entered_amt_idx := 4;
22508    l_accted_amt_idx  := 10;
22509    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22510    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
22511    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
22512    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
22513    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
22514    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
22515    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
22516    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
22517    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
22518    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
22519    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
22520    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
22521    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
22522    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
22523    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
22524    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
22525    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
22526    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
22527    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
22528    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
22529    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
22530 
22531    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22532    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22533 
22537    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22534    ---------------------------------------------------------------------------------------------------------------
22535    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22536    ---------------------------------------------------------------------------------------------------------------
22538 
22539    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22540    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22541 
22542    IF xla_accounting_cache_pkg.GetValueChar
22543          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22544          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22545    AND l_bflow_method_code = 'PRIOR_ENTRY'
22546 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22547    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22548          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22549        )
22550    THEN
22551          xla_ae_lines_pkg.BflowUpgEntry
22552            (p_business_method_code    => l_bflow_method_code
22553            ,p_business_class_code     => l_bflow_class_code
22554            ,p_balance_type            => l_balance_type_code);
22555    ELSE
22556       NULL;
22557 -- No business flow processing for business flow method of NONE.
22558    END IF;
22559 
22560    --
22561    -- call analytical criteria
22562    --
22563    
22564    --
22565    -- call description
22566    --
22567    -- No description or it is inherited.
22568    --
22569    -- call ADRs
22570    -- Bug 4922099
22571    --
22572    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22573         (NVL(l_actual_upg_option, 'N') = 'O') OR
22574         (NVL(l_enc_upg_option, 'N') = 'O')
22575       )
22576    THEN
22577    NULL;
22578    --
22579    --
22580    
22581   l_ccid := AcctDerRule_26(
22582            p_application_id           => p_application_id
22583          , p_ae_header_id             => l_ae_header_id 
22584 , p_source_19 => p_source_19
22585          , x_transaction_coa_id       => l_adr_transaction_coa_id
22586          , x_accounting_coa_id        => l_adr_accounting_coa_id
22587          , x_value_type_code          => l_adr_value_type_code
22588          , p_side                     => 'NA'
22589    );
22590 
22591    xla_ae_lines_pkg.set_ccid(
22592     p_code_combination_id          => l_ccid
22593   , p_value_type_code              => l_adr_value_type_code
22594   , p_transaction_coa_id           => l_adr_transaction_coa_id
22595   , p_accounting_coa_id            => l_adr_accounting_coa_id
22596   , p_adr_code                     => 'REVENUE_RULE'
22597   , p_adr_type_code                => 'S'
22598   , p_component_type               => l_component_type
22599   , p_component_code               => l_component_code
22600   , p_component_type_code          => l_component_type_code
22601   , p_component_appl_id            => l_component_appl_id
22602   , p_amb_context_code             => l_amb_context_code
22603   , p_side                         => 'NA'
22604   );
22605 
22606 
22607    --
22608    --
22609    END IF;
22610    --
22611    -- Bug 4922099
22612    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22613           (NVL(l_enc_upg_option, 'N') = 'O')
22614         ) AND
22615         (l_bflow_method_code = 'PRIOR_ENTRY')
22616       )
22617    THEN
22618       IF
22619       --
22620       1 = 2
22621       --
22622       THEN
22623       xla_accounting_err_pkg.build_message
22624                                     (p_appli_s_name            => 'XLA'
22625                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22626                                     ,p_token_1                 => 'LINE_NUMBER'
22627                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22628                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22629                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22630                                                                              l_component_type
22631                                                                             ,l_component_code
22632                                                                             ,l_component_type_code
22633                                                                             ,l_component_appl_id
22634                                                                             ,l_amb_context_code
22635                                                                             ,l_entity_code
22636                                                                             ,l_event_class_code
22637                                                                            )
22638                                     ,p_token_3                 => 'OWNER'
22639                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22640                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22641                                                                           ,p_lookup_code    => l_component_type_code
22642                                                                          )
22643                                     ,p_token_4                 => 'PRODUCT_NAME'
22644                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22645                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22646                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22650 
22647                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22648                                     ,p_ae_header_id            =>  NULL
22649                                        );
22651         IF (C_LEVEL_ERROR>= g_log_level) THEN
22652                  trace
22653                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22654                       ,p_level    => C_LEVEL_ERROR
22655                       ,p_module   => l_log_module);
22656         END IF;
22657       END IF;
22658    END IF;
22659    --
22660    --
22661    ------------------------------------------------------------------------------------------------
22662    -- 4219869 Business Flow
22663    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22664    -- Prior Entry.  Currently, the following code is always generated.
22665    ------------------------------------------------------------------------------------------------
22666    XLA_AE_LINES_PKG.ValidateCurrentLine;
22667 
22668    ------------------------------------------------------------------------------------
22669    -- 4219869 Business Flow
22670    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22671    ------------------------------------------------------------------------------------
22672    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22673 
22674    ----------------------------------------------------------------------------------
22675    -- 4219869 Business Flow
22676    -- Update journal entry status -- Need to generate this within IF <condition>
22677    ----------------------------------------------------------------------------------
22678    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22679          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22680          ,p_balance_type_code => l_balance_type_code
22681          );
22682 
22683    -------------------------------------------------------------------------------------------
22684    -- 4262811 - Generate the Accrual Reversal lines
22685    -------------------------------------------------------------------------------------------
22686    BEGIN
22687       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22688                               (g_array_event(p_event_id).array_value_num('header_index'));
22689       IF l_acc_rev_flag IS NULL THEN
22690          l_acc_rev_flag := 'N';
22691       END IF;
22692    EXCEPTION
22693       WHEN OTHERS THEN
22694          l_acc_rev_flag := 'N';
22695    END;
22696    --
22697    IF (l_acc_rev_flag = 'Y') THEN
22698 
22699        -- 4645092  ------------------------------------------------------------------------------
22700        -- To allow MPA report to determine if it should generate report process
22701        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22702        ------------------------------------------------------------------------------------------
22703 
22704        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22705        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22706 
22707        --
22708        -- Update the line information that should be overwritten
22709        --
22710        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22711                                          p_header_num   => 1);
22712        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22713 
22714        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22715 
22716        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22717           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22718        END IF;
22719 
22720       --
22721       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22722       --
22723       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22724           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22725       ELSE
22726           ---------------------------------------------------------------------------------------------------
22727           -- 4262811a Switch Sign
22728           ---------------------------------------------------------------------------------------------------
22729           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22730           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22731                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22732           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22733                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22734           -- 5132302
22735           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22736                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22737 
22738       END IF;
22739 
22740       -- 4955764
22741       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22742       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22743 
22744 
22745       XLA_AE_LINES_PKG.ValidateCurrentLine;
22746       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22747 
22748       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22749                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22750                ,p_balance_type_code => l_balance_type_code);
22751 
22752    END IF;
22753 
22754    -----------------------------------------------------------------------------------------
22758 
22755    -- 4262811 Multiperiod Accounting
22756    -----------------------------------------------------------------------------------------
22757      -- No MPA option is assigned.
22759 
22760 END IF;
22761 END IF;
22762 --
22763 
22764 --
22765 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22766    trace
22767       (p_msg      => 'END of AcctLineType_60'
22768       ,p_level    => C_LEVEL_PROCEDURE
22769       ,p_module   => l_log_module);
22770 END IF;
22771 --
22772 EXCEPTION
22773   WHEN xla_exceptions_pkg.application_exception THEN
22774       RAISE;
22775   WHEN OTHERS THEN
22776        xla_exceptions_pkg.raise_message
22777            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_60');
22778 END AcctLineType_60;
22779 --
22780 
22781 ---------------------------------------
22782 --
22783 -- PRIVATE FUNCTION
22784 --         AcctLineType_61
22785 --
22786 ---------------------------------------
22787 PROCEDURE AcctLineType_61 (
22788   p_application_id        IN NUMBER
22789  ,p_event_id              IN NUMBER
22790  ,p_calculate_acctd_flag  IN VARCHAR2
22791  ,p_calculate_g_l_flag    IN VARCHAR2
22792  ,p_actual_flag           IN OUT VARCHAR2
22793  ,p_balance_type_code     OUT VARCHAR2
22794  ,p_gain_or_loss_ref      OUT VARCHAR2
22795  
22796 --Revenue CCID
22797  , p_source_19            IN NUMBER
22798 --Entered Currency Code
22799  , p_source_26            IN VARCHAR2
22800 --Exchange Rate Date
22801  , p_source_28            IN DATE
22802 --Exchange Rate
22803  , p_source_29            IN NUMBER
22804 --Exchange Rate Type
22805  , p_source_30            IN VARCHAR2
22806 --Entered Amount
22807  , p_source_42            IN NUMBER
22808 --Accounted Amount
22809  , p_source_43            IN NUMBER
22810 --Revenue Distribution Type
22811  , p_source_46            IN VARCHAR2
22812 --System Linkage Function
22813  , p_source_47            IN VARCHAR2
22814 --Crediting Revenue Flag
22815  , p_source_48            IN VARCHAR2
22816 --Revenue First Distribution ID
22817  , p_source_49            IN NUMBER
22818 --Revenue Second Distribution ID
22819  , p_source_50            IN NUMBER
22820 --Event ID
22821  , p_source_51            IN NUMBER
22822 )
22823 IS
22824 
22825 l_component_type              VARCHAR2(80);
22826 l_component_code              VARCHAR2(30);
22827 l_component_type_code         VARCHAR2(1);
22828 l_component_appl_id           INTEGER;
22829 l_amb_context_code            VARCHAR2(30);
22830 l_entity_code                 VARCHAR2(30);
22831 l_event_class_code            VARCHAR2(30);
22832 l_ae_header_id                NUMBER;
22833 l_event_type_code             VARCHAR2(30);
22834 l_line_definition_code        VARCHAR2(30);
22835 l_line_definition_owner_code  VARCHAR2(1);
22836 --
22837 -- adr variables
22838 l_segment                     VARCHAR2(30);
22839 l_ccid                        NUMBER;
22840 l_adr_transaction_coa_id      NUMBER;
22841 l_adr_accounting_coa_id       NUMBER;
22842 l_adr_flexfield_segment_code  VARCHAR2(30);
22843 l_adr_flex_value_set_id       NUMBER;
22844 l_adr_value_type_code         VARCHAR2(30);
22845 l_adr_value_combination_id    NUMBER;
22846 l_adr_value_segment_code      VARCHAR2(30);
22847 
22848 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22849 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22850 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22851 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22852 
22853 -- 4262811 Variables ------------------------------------------------------------------------------------------
22854 l_entered_amt_idx             NUMBER;
22855 l_accted_amt_idx              NUMBER;
22856 l_acc_rev_flag                VARCHAR2(1);
22857 l_accrual_line_num            NUMBER;
22858 l_tmp_amt                     NUMBER;
22859 l_acc_rev_natural_side_code   VARCHAR2(1);
22860 
22861 l_num_entries                 NUMBER;
22862 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22863 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22864 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22865 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22866 l_recog_line_1                NUMBER;
22867 l_recog_line_2                NUMBER;
22868 
22869 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22870 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22871 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22872 
22873 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22874 
22875 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22876 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22877 
22878 ---------------------------------------------------------------------------------------------------------------
22879 
22880 
22881 --
22882 -- bulk performance
22883 --
22884 l_balance_type_code           VARCHAR2(1);
22885 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22886 l_log_module                  VARCHAR2(240);
22887 
22888 --
22889 -- Upgrade strategy
22890 --
22891 l_actual_upg_option           VARCHAR2(1);
22892 l_enc_upg_option           VARCHAR2(1);
22893 
22894 --
22895 BEGIN
22896 --
22897 IF g_log_enabled THEN
22898       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
22899 END IF;
22900 --
22901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22902 
22903       trace
22904          (p_msg      => 'BEGIN of AcctLineType_61'
22905          ,p_level    => C_LEVEL_PROCEDURE
22909 --
22906          ,p_module   => l_log_module);
22907 
22908 END IF;
22910 l_component_type             := 'AMB_JLT';
22911 l_component_code             := 'PA_PJ_REV';
22912 l_component_type_code        := 'S';
22913 l_component_appl_id          :=  275;
22914 l_amb_context_code           := 'DEFAULT';
22915 l_entity_code                := 'REVENUE';
22916 l_event_class_code           := 'REVENUE';
22917 l_event_type_code            := 'REVENUE_ALL';
22918 l_line_definition_owner_code := 'S';
22919 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
22920 --
22921 l_balance_type_code          := 'A';
22922 l_segment                     := NULL;
22923 l_ccid                        := NULL;
22924 l_adr_transaction_coa_id      := NULL;
22925 l_adr_accounting_coa_id       := NULL;
22926 l_adr_flexfield_segment_code  := NULL;
22927 l_adr_flex_value_set_id       := NULL;
22928 l_adr_value_type_code         := NULL;
22929 l_adr_value_combination_id    := NULL;
22930 l_adr_value_segment_code      := NULL;
22931 
22932 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22933 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
22934 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22935 l_budgetary_control_flag     := 'N';
22936 
22937 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22938 l_bflow_applied_to_amt       := NULL; -- 5132302
22939 l_entered_amt_idx            := NULL;          -- 4262811
22940 l_accted_amt_idx             := NULL;          -- 4262811
22941 l_acc_rev_flag               := NULL;          -- 4262811
22942 l_accrual_line_num           := NULL;          -- 4262811
22943 l_tmp_amt                    := NULL;          -- 4262811
22944 --
22945  
22946 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22947     l_balance_type_code <> 'B' THEN
22948 IF NVL(p_source_46,'
22949 ') =  'Revenue - Normal Revenue' AND 
22950 NVL(p_source_47,'
22951 ') =  'PJ' AND 
22952 NVL(p_source_48,'
22953 ') =  'N'
22954  THEN 
22955 
22956    --
22957    XLA_AE_LINES_PKG.SetNewLine;
22958 
22959    p_balance_type_code          := l_balance_type_code;
22960    -- set the flag so later we will know whether the gain loss line needs to be created
22961    
22962    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22963      p_actual_flag :='A';
22964    END IF;
22965 
22966    --
22967    -- bulk performance
22968    --
22969    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22970                                       p_header_num   => 0); -- 4262811
22971    --
22972    -- set accounting line options
22973    --
22974    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22975            p_natural_side_code          => 'C'
22976          , p_gain_or_loss_flag          => 'N'
22977          , p_gl_transfer_mode_code      => 'S'
22978          , p_acct_entry_type_code       => 'A'
22979          , p_switch_side_flag           => 'Y'
22980          , p_merge_duplicate_code       => 'N'
22981          );
22982    --
22983    l_acc_rev_natural_side_code := 'D';  -- 4262811
22984    -- 
22985    --
22986    -- set accounting line type info
22987    --
22988    xla_ae_lines_pkg.SetAcctLineType
22989       (p_component_type             => l_component_type
22990       ,p_event_type_code            => l_event_type_code
22991       ,p_line_definition_owner_code => l_line_definition_owner_code
22992       ,p_line_definition_code       => l_line_definition_code
22993       ,p_accounting_line_code       => l_component_code
22994       ,p_accounting_line_type_code  => l_component_type_code
22995       ,p_accounting_line_appl_id    => l_component_appl_id
22996       ,p_amb_context_code           => l_amb_context_code
22997       ,p_entity_code                => l_entity_code
22998       ,p_event_class_code           => l_event_class_code);
22999    --
23000    -- set accounting class
23001    --
23002    xla_ae_lines_pkg.SetAcctClass(
23003            p_accounting_class_code  => 'REVENUE'
23004          , p_ae_header_id           => l_ae_header_id
23005          );
23006 
23007    --
23008    -- set rounding class
23009    --
23010    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23011                       'REVENUE';
23012 
23013    --
23014    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23015    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23016    --
23017    -- bulk performance
23018    --
23019    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23020 
23021    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23022       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23023 
23024    -- 4955764
23025    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23026       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23027 
23028    -- 4458381 Public Sector Enh
23029    
23030    --
23031    -- set accounting attributes for the line type
23032    --
23033    l_entered_amt_idx := 4;
23034    l_accted_amt_idx  := 10;
23035    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23036    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23037    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
23038    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
23039    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
23040    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
23041    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
23045    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
23042    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
23043    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
23044    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
23046    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
23047    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
23048    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
23049    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
23050    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
23051    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
23052    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
23053    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
23054    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
23055    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
23056 
23057    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23058    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23059 
23060    ---------------------------------------------------------------------------------------------------------------
23061    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23062    ---------------------------------------------------------------------------------------------------------------
23063    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23064 
23065    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23066    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23067 
23068    IF xla_accounting_cache_pkg.GetValueChar
23069          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23070          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23071    AND l_bflow_method_code = 'PRIOR_ENTRY'
23072 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23073    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23074          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23075        )
23076    THEN
23077          xla_ae_lines_pkg.BflowUpgEntry
23078            (p_business_method_code    => l_bflow_method_code
23079            ,p_business_class_code     => l_bflow_class_code
23080            ,p_balance_type            => l_balance_type_code);
23081    ELSE
23082       NULL;
23083 -- No business flow processing for business flow method of NONE.
23084    END IF;
23085 
23086    --
23087    -- call analytical criteria
23088    --
23089    
23090    --
23091    -- call description
23092    --
23093    -- No description or it is inherited.
23094    --
23095    -- call ADRs
23096    -- Bug 4922099
23097    --
23098    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23099         (NVL(l_actual_upg_option, 'N') = 'O') OR
23100         (NVL(l_enc_upg_option, 'N') = 'O')
23101       )
23102    THEN
23103    NULL;
23104    --
23105    --
23106    
23107   l_ccid := AcctDerRule_26(
23108            p_application_id           => p_application_id
23109          , p_ae_header_id             => l_ae_header_id 
23110 , p_source_19 => p_source_19
23111          , x_transaction_coa_id       => l_adr_transaction_coa_id
23112          , x_accounting_coa_id        => l_adr_accounting_coa_id
23113          , x_value_type_code          => l_adr_value_type_code
23114          , p_side                     => 'NA'
23115    );
23116 
23117    xla_ae_lines_pkg.set_ccid(
23118     p_code_combination_id          => l_ccid
23119   , p_value_type_code              => l_adr_value_type_code
23120   , p_transaction_coa_id           => l_adr_transaction_coa_id
23121   , p_accounting_coa_id            => l_adr_accounting_coa_id
23122   , p_adr_code                     => 'REVENUE_RULE'
23123   , p_adr_type_code                => 'S'
23124   , p_component_type               => l_component_type
23125   , p_component_code               => l_component_code
23126   , p_component_type_code          => l_component_type_code
23127   , p_component_appl_id            => l_component_appl_id
23128   , p_amb_context_code             => l_amb_context_code
23129   , p_side                         => 'NA'
23130   );
23131 
23132 
23133    --
23134    --
23135    END IF;
23136    --
23137    -- Bug 4922099
23138    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23139           (NVL(l_enc_upg_option, 'N') = 'O')
23140         ) AND
23141         (l_bflow_method_code = 'PRIOR_ENTRY')
23142       )
23143    THEN
23144       IF
23145       --
23146       1 = 2
23147       --
23148       THEN
23149       xla_accounting_err_pkg.build_message
23150                                     (p_appli_s_name            => 'XLA'
23151                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23152                                     ,p_token_1                 => 'LINE_NUMBER'
23153                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23154                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23155                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23156                                                                              l_component_type
23157                                                                             ,l_component_code
23158                                                                             ,l_component_type_code
23159                                                                             ,l_component_appl_id
23160                                                                             ,l_amb_context_code
23164                                     ,p_token_3                 => 'OWNER'
23161                                                                             ,l_entity_code
23162                                                                             ,l_event_class_code
23163                                                                            )
23165                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23166                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23167                                                                           ,p_lookup_code    => l_component_type_code
23168                                                                          )
23169                                     ,p_token_4                 => 'PRODUCT_NAME'
23170                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23171                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23172                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23173                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23174                                     ,p_ae_header_id            =>  NULL
23175                                        );
23176 
23177         IF (C_LEVEL_ERROR>= g_log_level) THEN
23178                  trace
23179                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23180                       ,p_level    => C_LEVEL_ERROR
23181                       ,p_module   => l_log_module);
23182         END IF;
23183       END IF;
23184    END IF;
23185    --
23186    --
23187    ------------------------------------------------------------------------------------------------
23188    -- 4219869 Business Flow
23189    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23190    -- Prior Entry.  Currently, the following code is always generated.
23191    ------------------------------------------------------------------------------------------------
23192    XLA_AE_LINES_PKG.ValidateCurrentLine;
23193 
23194    ------------------------------------------------------------------------------------
23195    -- 4219869 Business Flow
23196    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23197    ------------------------------------------------------------------------------------
23198    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23199 
23200    ----------------------------------------------------------------------------------
23201    -- 4219869 Business Flow
23202    -- Update journal entry status -- Need to generate this within IF <condition>
23203    ----------------------------------------------------------------------------------
23204    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23205          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23206          ,p_balance_type_code => l_balance_type_code
23207          );
23208 
23209    -------------------------------------------------------------------------------------------
23210    -- 4262811 - Generate the Accrual Reversal lines
23211    -------------------------------------------------------------------------------------------
23212    BEGIN
23213       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23214                               (g_array_event(p_event_id).array_value_num('header_index'));
23215       IF l_acc_rev_flag IS NULL THEN
23216          l_acc_rev_flag := 'N';
23217       END IF;
23218    EXCEPTION
23219       WHEN OTHERS THEN
23220          l_acc_rev_flag := 'N';
23221    END;
23222    --
23223    IF (l_acc_rev_flag = 'Y') THEN
23224 
23225        -- 4645092  ------------------------------------------------------------------------------
23226        -- To allow MPA report to determine if it should generate report process
23227        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23228        ------------------------------------------------------------------------------------------
23229 
23230        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23231        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23232 
23233        --
23234        -- Update the line information that should be overwritten
23235        --
23236        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23237                                          p_header_num   => 1);
23238        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23239 
23240        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23241 
23242        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23243           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23244        END IF;
23245 
23246       --
23247       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23248       --
23249       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23250           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23251       ELSE
23252           ---------------------------------------------------------------------------------------------------
23253           -- 4262811a Switch Sign
23254           ---------------------------------------------------------------------------------------------------
23255           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23256           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23257                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23258           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23262                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23259                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23260           -- 5132302
23261           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23263 
23264       END IF;
23265 
23266       -- 4955764
23267       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23268       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23269 
23270 
23271       XLA_AE_LINES_PKG.ValidateCurrentLine;
23272       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23273 
23274       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23275                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23276                ,p_balance_type_code => l_balance_type_code);
23277 
23278    END IF;
23279 
23280    -----------------------------------------------------------------------------------------
23281    -- 4262811 Multiperiod Accounting
23282    -----------------------------------------------------------------------------------------
23283      -- No MPA option is assigned.
23284 
23285 
23286 END IF;
23287 END IF;
23288 --
23289 
23290 --
23291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23292    trace
23293       (p_msg      => 'END of AcctLineType_61'
23294       ,p_level    => C_LEVEL_PROCEDURE
23295       ,p_module   => l_log_module);
23296 END IF;
23297 --
23298 EXCEPTION
23299   WHEN xla_exceptions_pkg.application_exception THEN
23300       RAISE;
23301   WHEN OTHERS THEN
23302        xla_exceptions_pkg.raise_message
23303            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_61');
23304 END AcctLineType_61;
23305 --
23306 
23307 ---------------------------------------
23308 --
23309 -- PRIVATE FUNCTION
23310 --         AcctLineType_62
23311 --
23312 ---------------------------------------
23313 PROCEDURE AcctLineType_62 (
23314   p_application_id        IN NUMBER
23315  ,p_event_id              IN NUMBER
23316  ,p_calculate_acctd_flag  IN VARCHAR2
23317  ,p_calculate_g_l_flag    IN VARCHAR2
23318  ,p_actual_flag           IN OUT VARCHAR2
23319  ,p_balance_type_code     OUT VARCHAR2
23320  ,p_gain_or_loss_ref      OUT VARCHAR2
23321  
23322 --Allow Account Override Flag
23323  , p_source_5            IN VARCHAR2
23324 --Provider Cost/ Revenue CCID
23325  , p_source_9            IN NUMBER
23326 --Adjustment Provider Cost/ Revenue CCID
23327  , p_source_10            IN NUMBER
23328 --Receiver Cost/ Revenue CCID
23329  , p_source_16            IN NUMBER
23330 --Reversing Line Flag
23331  , p_source_23            IN VARCHAR2
23332 --Actual Upgrade Credit Accounting Class
23333  , p_source_24            IN VARCHAR2
23334 --Entered Currency Code
23335  , p_source_26            IN VARCHAR2
23336 --Exchange Rate Date
23337  , p_source_28            IN DATE
23338 --Exchange Rate
23339  , p_source_29            IN NUMBER
23340 --Exchange Rate Type
23341  , p_source_30            IN VARCHAR2
23342 --Actual Upgrade Debit Accounting Class
23343  , p_source_31            IN VARCHAR2
23344 --Use Actuals Upgrade Attributes Flag
23345  , p_source_32            IN VARCHAR2
23346 --Expenditure Item ID
23347  , p_source_33            IN NUMBER
23348 --Cost Distribution Line Number
23349  , p_source_34            IN NUMBER
23350 --Line Type
23351  , p_source_35            IN VARCHAR2
23352  , p_source_35_meaning    IN VARCHAR2
23353 --Reversed Line Number
23354  , p_source_36            IN NUMBER
23355 --Entered Amount
23356  , p_source_42            IN NUMBER
23357 --Accounted Amount
23358  , p_source_43            IN NUMBER
23359 --Transfer Amount Type
23360  , p_source_73            IN VARCHAR2
23361  , p_source_73_meaning    IN VARCHAR2
23362 )
23363 IS
23364 
23365 l_component_type              VARCHAR2(80);
23366 l_component_code              VARCHAR2(30);
23367 l_component_type_code         VARCHAR2(1);
23368 l_component_appl_id           INTEGER;
23369 l_amb_context_code            VARCHAR2(30);
23370 l_entity_code                 VARCHAR2(30);
23371 l_event_class_code            VARCHAR2(30);
23372 l_ae_header_id                NUMBER;
23373 l_event_type_code             VARCHAR2(30);
23374 l_line_definition_code        VARCHAR2(30);
23375 l_line_definition_owner_code  VARCHAR2(1);
23376 --
23377 -- adr variables
23378 l_segment                     VARCHAR2(30);
23379 l_ccid                        NUMBER;
23380 l_adr_transaction_coa_id      NUMBER;
23381 l_adr_accounting_coa_id       NUMBER;
23382 l_adr_flexfield_segment_code  VARCHAR2(30);
23383 l_adr_flex_value_set_id       NUMBER;
23384 l_adr_value_type_code         VARCHAR2(30);
23385 l_adr_value_combination_id    NUMBER;
23386 l_adr_value_segment_code      VARCHAR2(30);
23387 
23388 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23389 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23390 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23391 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23392 
23393 -- 4262811 Variables ------------------------------------------------------------------------------------------
23394 l_entered_amt_idx             NUMBER;
23395 l_accted_amt_idx              NUMBER;
23396 l_acc_rev_flag                VARCHAR2(1);
23397 l_accrual_line_num            NUMBER;
23398 l_tmp_amt                     NUMBER;
23399 l_acc_rev_natural_side_code   VARCHAR2(1);
23400 
23401 l_num_entries                 NUMBER;
23402 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23406 l_recog_line_1                NUMBER;
23403 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23404 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23405 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23407 l_recog_line_2                NUMBER;
23408 
23409 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23410 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23411 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23412 
23413 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23414 
23415 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23416 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23417 
23418 ---------------------------------------------------------------------------------------------------------------
23419 
23420 
23421 --
23422 -- bulk performance
23423 --
23424 l_balance_type_code           VARCHAR2(1);
23425 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23426 l_log_module                  VARCHAR2(240);
23427 
23428 --
23429 -- Upgrade strategy
23430 --
23431 l_actual_upg_option           VARCHAR2(1);
23432 l_enc_upg_option           VARCHAR2(1);
23433 
23434 --
23435 BEGIN
23436 --
23437 IF g_log_enabled THEN
23438       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
23439 END IF;
23440 --
23441 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23442 
23443       trace
23444          (p_msg      => 'BEGIN of AcctLineType_62'
23445          ,p_level    => C_LEVEL_PROCEDURE
23446          ,p_module   => l_log_module);
23447 
23448 END IF;
23449 --
23450 l_component_type             := 'AMB_JLT';
23451 l_component_code             := 'PA_PROVIDER_COST';
23452 l_component_type_code        := 'S';
23453 l_component_appl_id          :=  275;
23454 l_amb_context_code           := 'DEFAULT';
23455 l_entity_code                := 'EXPENDITURES';
23456 l_event_class_code           := 'BORROWED_AND_LENT';
23457 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
23458 l_line_definition_owner_code := 'S';
23459 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
23460 --
23461 l_balance_type_code          := 'A';
23462 l_segment                     := NULL;
23463 l_ccid                        := NULL;
23464 l_adr_transaction_coa_id      := NULL;
23465 l_adr_accounting_coa_id       := NULL;
23466 l_adr_flexfield_segment_code  := NULL;
23467 l_adr_flex_value_set_id       := NULL;
23468 l_adr_value_type_code         := NULL;
23469 l_adr_value_combination_id    := NULL;
23470 l_adr_value_segment_code      := NULL;
23471 
23472 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23473 l_bflow_class_code           := '';    -- 4219869 Business Flow
23474 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23475 l_budgetary_control_flag     := 'N';
23476 
23477 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23478 l_bflow_applied_to_amt       := NULL; -- 5132302
23479 l_entered_amt_idx            := NULL;          -- 4262811
23480 l_accted_amt_idx             := NULL;          -- 4262811
23481 l_acc_rev_flag               := NULL;          -- 4262811
23482 l_accrual_line_num           := NULL;          -- 4262811
23483 l_tmp_amt                    := NULL;          -- 4262811
23484 --
23485  
23486 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23487     l_balance_type_code <> 'B' THEN
23488 IF NVL(p_source_73,'
23489 ') =  'COST_TRANSFER' OR 
23490 NVL(p_source_73,'
23491 ') =  'COST_REVENUE' OR 
23492 p_source_73 IS NULL 
23493  THEN 
23494 
23495    --
23496    XLA_AE_LINES_PKG.SetNewLine;
23497 
23498    p_balance_type_code          := l_balance_type_code;
23499    -- set the flag so later we will know whether the gain loss line needs to be created
23500    
23501    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23502      p_actual_flag :='A';
23503    END IF;
23504 
23505    --
23506    -- bulk performance
23507    --
23508    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23509                                       p_header_num   => 0); -- 4262811
23510    --
23511    -- set accounting line options
23512    --
23513    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23514            p_natural_side_code          => 'C'
23515          , p_gain_or_loss_flag          => 'N'
23516          , p_gl_transfer_mode_code      => 'S'
23517          , p_acct_entry_type_code       => 'A'
23518          , p_switch_side_flag           => 'Y'
23519          , p_merge_duplicate_code       => 'N'
23520          );
23521    --
23522    l_acc_rev_natural_side_code := 'D';  -- 4262811
23523    -- 
23524    --
23525    -- set accounting line type info
23526    --
23527    xla_ae_lines_pkg.SetAcctLineType
23528       (p_component_type             => l_component_type
23529       ,p_event_type_code            => l_event_type_code
23530       ,p_line_definition_owner_code => l_line_definition_owner_code
23531       ,p_line_definition_code       => l_line_definition_code
23532       ,p_accounting_line_code       => l_component_code
23533       ,p_accounting_line_type_code  => l_component_type_code
23534       ,p_accounting_line_appl_id    => l_component_appl_id
23535       ,p_amb_context_code           => l_amb_context_code
23536       ,p_entity_code                => l_entity_code
23537       ,p_event_class_code           => l_event_class_code);
23538    --
23539    -- set accounting class
23540    --
23541    xla_ae_lines_pkg.SetAcctClass(
23542            p_accounting_class_code  => 'PROVIDER_COST'
23546    --
23543          , p_ae_header_id           => l_ae_header_id
23544          );
23545 
23547    -- set rounding class
23548    --
23549    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23550                       'PROVIDER_COST';
23551 
23552    --
23553    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23554    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23555    --
23556    -- bulk performance
23557    --
23558    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23559 
23560    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23561       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23562 
23563    -- 4955764
23564    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23565       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23566 
23567    -- 4458381 Public Sector Enh
23568    
23569    --
23570    -- set accounting attributes for the line type
23571    --
23572    l_entered_amt_idx := 22;
23573    l_accted_amt_idx  := 27;
23574    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23575    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23576    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
23577    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
23578    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
23579    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
23580    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
23581    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
23582    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
23583    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
23584    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
23585    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
23586    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
23587    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
23588    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
23589    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
23590    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
23591    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
23592    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
23593    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
23594    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
23595    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
23596    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
23597    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
23598    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
23599    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
23600    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
23601    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
23602    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
23603    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
23604    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
23605    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
23606    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
23607    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
23608    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
23609    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
23610    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
23611    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
23612    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
23613    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
23614    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
23615    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
23616    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
23617    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
23618    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
23619    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
23620    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
23621    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
23622    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
23623    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
23624    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
23625    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
23626    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
23627    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
23628    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
23629    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
23630    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
23631    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
23632    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
23633    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
23634    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
23635 
23636    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23637    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23638 
23639    ---------------------------------------------------------------------------------------------------------------
23640    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23641    ---------------------------------------------------------------------------------------------------------------
23645    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23642    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23643 
23644    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23646 
23647    IF xla_accounting_cache_pkg.GetValueChar
23648          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23649          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23650    AND l_bflow_method_code = 'PRIOR_ENTRY'
23651 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23652    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23653          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23654        )
23655    THEN
23656          xla_ae_lines_pkg.BflowUpgEntry
23657            (p_business_method_code    => l_bflow_method_code
23658            ,p_business_class_code     => l_bflow_class_code
23659            ,p_balance_type            => l_balance_type_code);
23660    ELSE
23661       NULL;
23662 -- No business flow processing for business flow method of NONE.
23663    END IF;
23664 
23665    --
23666    -- call analytical criteria
23667    --
23668    
23669    --
23670    -- call description
23671    --
23672    -- No description or it is inherited.
23673    --
23674    -- call ADRs
23675    -- Bug 4922099
23676    --
23677    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23678         (NVL(l_actual_upg_option, 'N') = 'O') OR
23679         (NVL(l_enc_upg_option, 'N') = 'O')
23680       )
23681    THEN
23682    NULL;
23683    --
23684    --
23685    
23686   l_ccid := AcctDerRule_16(
23687            p_application_id           => p_application_id
23688          , p_ae_header_id             => l_ae_header_id 
23689 , p_source_5 => p_source_5
23690 , p_source_9 => p_source_9
23691 , p_source_10 => p_source_10
23692          , x_transaction_coa_id       => l_adr_transaction_coa_id
23693          , x_accounting_coa_id        => l_adr_accounting_coa_id
23694          , x_value_type_code          => l_adr_value_type_code
23695          , p_side                     => 'NA'
23696    );
23697 
23698    xla_ae_lines_pkg.set_ccid(
23699     p_code_combination_id          => l_ccid
23700   , p_value_type_code              => l_adr_value_type_code
23701   , p_transaction_coa_id           => l_adr_transaction_coa_id
23702   , p_accounting_coa_id            => l_adr_accounting_coa_id
23703   , p_adr_code                     => 'PA_PROV_COST_REV_ACCT_RULE'
23704   , p_adr_type_code                => 'S'
23705   , p_component_type               => l_component_type
23706   , p_component_code               => l_component_code
23707   , p_component_type_code          => l_component_type_code
23708   , p_component_appl_id            => l_component_appl_id
23709   , p_amb_context_code             => l_amb_context_code
23710   , p_side                         => 'NA'
23711   );
23712 
23713 
23714    --
23715    --
23716    END IF;
23717    --
23718    -- Bug 4922099
23719    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23720           (NVL(l_enc_upg_option, 'N') = 'O')
23721         ) AND
23722         (l_bflow_method_code = 'PRIOR_ENTRY')
23723       )
23724    THEN
23725       IF
23726       --
23727       1 = 2
23728       --
23729       THEN
23730       xla_accounting_err_pkg.build_message
23731                                     (p_appli_s_name            => 'XLA'
23732                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23733                                     ,p_token_1                 => 'LINE_NUMBER'
23734                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23735                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23736                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23737                                                                              l_component_type
23738                                                                             ,l_component_code
23739                                                                             ,l_component_type_code
23740                                                                             ,l_component_appl_id
23741                                                                             ,l_amb_context_code
23742                                                                             ,l_entity_code
23743                                                                             ,l_event_class_code
23744                                                                            )
23745                                     ,p_token_3                 => 'OWNER'
23746                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23747                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23748                                                                           ,p_lookup_code    => l_component_type_code
23749                                                                          )
23750                                     ,p_token_4                 => 'PRODUCT_NAME'
23751                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23752                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23753                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23754                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23755                                     ,p_ae_header_id            =>  NULL
23756                                        );
23757 
23761                       ,p_level    => C_LEVEL_ERROR
23758         IF (C_LEVEL_ERROR>= g_log_level) THEN
23759                  trace
23760                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23762                       ,p_module   => l_log_module);
23763         END IF;
23764       END IF;
23765    END IF;
23766    --
23767    --
23768    ------------------------------------------------------------------------------------------------
23769    -- 4219869 Business Flow
23770    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23771    -- Prior Entry.  Currently, the following code is always generated.
23772    ------------------------------------------------------------------------------------------------
23773    XLA_AE_LINES_PKG.ValidateCurrentLine;
23774 
23775    ------------------------------------------------------------------------------------
23776    -- 4219869 Business Flow
23777    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23778    ------------------------------------------------------------------------------------
23779    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23780 
23781    ----------------------------------------------------------------------------------
23782    -- 4219869 Business Flow
23783    -- Update journal entry status -- Need to generate this within IF <condition>
23784    ----------------------------------------------------------------------------------
23785    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23786          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23787          ,p_balance_type_code => l_balance_type_code
23788          );
23789 
23790    -------------------------------------------------------------------------------------------
23791    -- 4262811 - Generate the Accrual Reversal lines
23792    -------------------------------------------------------------------------------------------
23793    BEGIN
23794       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23795                               (g_array_event(p_event_id).array_value_num('header_index'));
23796       IF l_acc_rev_flag IS NULL THEN
23797          l_acc_rev_flag := 'N';
23798       END IF;
23799    EXCEPTION
23800       WHEN OTHERS THEN
23801          l_acc_rev_flag := 'N';
23802    END;
23803    --
23804    IF (l_acc_rev_flag = 'Y') THEN
23805 
23806        -- 4645092  ------------------------------------------------------------------------------
23807        -- To allow MPA report to determine if it should generate report process
23808        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23809        ------------------------------------------------------------------------------------------
23810 
23811        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23812        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23813 
23814        --
23815        -- Update the line information that should be overwritten
23816        --
23817        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23818                                          p_header_num   => 1);
23819        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23820 
23821        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23822 
23823        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23824           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23825        END IF;
23826 
23827       --
23828       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23829       --
23830       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23831           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23832       ELSE
23833           ---------------------------------------------------------------------------------------------------
23834           -- 4262811a Switch Sign
23835           ---------------------------------------------------------------------------------------------------
23836           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23837           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23838                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23839           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23840                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23841           -- 5132302
23842           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23843                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23844 
23845       END IF;
23846 
23847       -- 4955764
23848       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23849       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23850 
23851 
23852       XLA_AE_LINES_PKG.ValidateCurrentLine;
23853       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23854 
23855       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23856                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23857                ,p_balance_type_code => l_balance_type_code);
23858 
23859    END IF;
23860 
23861    -----------------------------------------------------------------------------------------
23862    -- 4262811 Multiperiod Accounting
23863    -----------------------------------------------------------------------------------------
23864      -- No MPA option is assigned.
23865 
23866 
23867 END IF;
23868 END IF;
23869 --
23870 
23874       (p_msg      => 'END of AcctLineType_62'
23871 --
23872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23873    trace
23875       ,p_level    => C_LEVEL_PROCEDURE
23876       ,p_module   => l_log_module);
23877 END IF;
23878 --
23879 EXCEPTION
23880   WHEN xla_exceptions_pkg.application_exception THEN
23881       RAISE;
23882   WHEN OTHERS THEN
23883        xla_exceptions_pkg.raise_message
23884            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_62');
23885 END AcctLineType_62;
23886 --
23887 
23888 ---------------------------------------
23889 --
23890 -- PRIVATE FUNCTION
23891 --         AcctLineType_63
23892 --
23893 ---------------------------------------
23894 PROCEDURE AcctLineType_63 (
23895   p_application_id        IN NUMBER
23896  ,p_event_id              IN NUMBER
23897  ,p_calculate_acctd_flag  IN VARCHAR2
23898  ,p_calculate_g_l_flag    IN VARCHAR2
23899  ,p_actual_flag           IN OUT VARCHAR2
23900  ,p_balance_type_code     OUT VARCHAR2
23901  ,p_gain_or_loss_ref      OUT VARCHAR2
23902  
23903 --Allow Account Override Flag
23904  , p_source_5            IN VARCHAR2
23905 --Provider Cost/ Revenue CCID
23906  , p_source_9            IN NUMBER
23907 --Adjustment Provider Cost/ Revenue CCID
23908  , p_source_10            IN NUMBER
23909 --Receiver Cost/ Revenue CCID
23910  , p_source_16            IN NUMBER
23911 --Reversing Line Flag
23912  , p_source_23            IN VARCHAR2
23913 --Actual Upgrade Credit Accounting Class
23914  , p_source_24            IN VARCHAR2
23915 --Entered Currency Code
23916  , p_source_26            IN VARCHAR2
23917 --Exchange Rate Date
23918  , p_source_28            IN DATE
23919 --Exchange Rate
23920  , p_source_29            IN NUMBER
23921 --Exchange Rate Type
23922  , p_source_30            IN VARCHAR2
23923 --Actual Upgrade Debit Accounting Class
23924  , p_source_31            IN VARCHAR2
23925 --Use Actuals Upgrade Attributes Flag
23926  , p_source_32            IN VARCHAR2
23927 --Expenditure Item ID
23928  , p_source_33            IN NUMBER
23929 --Cost Distribution Line Number
23930  , p_source_34            IN NUMBER
23931 --Line Type
23932  , p_source_35            IN VARCHAR2
23933  , p_source_35_meaning    IN VARCHAR2
23934 --Reversed Line Number
23935  , p_source_36            IN NUMBER
23936 --Entered Amount
23937  , p_source_42            IN NUMBER
23938 --Accounted Amount
23939  , p_source_43            IN NUMBER
23940 --Transfer Amount Type
23941  , p_source_73            IN VARCHAR2
23942  , p_source_73_meaning    IN VARCHAR2
23943 )
23944 IS
23945 
23946 l_component_type              VARCHAR2(80);
23947 l_component_code              VARCHAR2(30);
23948 l_component_type_code         VARCHAR2(1);
23949 l_component_appl_id           INTEGER;
23950 l_amb_context_code            VARCHAR2(30);
23951 l_entity_code                 VARCHAR2(30);
23952 l_event_class_code            VARCHAR2(30);
23953 l_ae_header_id                NUMBER;
23954 l_event_type_code             VARCHAR2(30);
23955 l_line_definition_code        VARCHAR2(30);
23956 l_line_definition_owner_code  VARCHAR2(1);
23957 --
23958 -- adr variables
23959 l_segment                     VARCHAR2(30);
23960 l_ccid                        NUMBER;
23961 l_adr_transaction_coa_id      NUMBER;
23962 l_adr_accounting_coa_id       NUMBER;
23963 l_adr_flexfield_segment_code  VARCHAR2(30);
23964 l_adr_flex_value_set_id       NUMBER;
23965 l_adr_value_type_code         VARCHAR2(30);
23966 l_adr_value_combination_id    NUMBER;
23967 l_adr_value_segment_code      VARCHAR2(30);
23968 
23969 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23970 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23971 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23972 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23973 
23974 -- 4262811 Variables ------------------------------------------------------------------------------------------
23975 l_entered_amt_idx             NUMBER;
23976 l_accted_amt_idx              NUMBER;
23977 l_acc_rev_flag                VARCHAR2(1);
23978 l_accrual_line_num            NUMBER;
23979 l_tmp_amt                     NUMBER;
23980 l_acc_rev_natural_side_code   VARCHAR2(1);
23981 
23982 l_num_entries                 NUMBER;
23983 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23984 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23985 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23986 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23987 l_recog_line_1                NUMBER;
23988 l_recog_line_2                NUMBER;
23989 
23990 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23991 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23992 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23993 
23994 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23995 
23996 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23997 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23998 
23999 ---------------------------------------------------------------------------------------------------------------
24000 
24001 
24002 --
24003 -- bulk performance
24004 --
24005 l_balance_type_code           VARCHAR2(1);
24006 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24007 l_log_module                  VARCHAR2(240);
24008 
24009 --
24010 -- Upgrade strategy
24011 --
24012 l_actual_upg_option           VARCHAR2(1);
24013 l_enc_upg_option           VARCHAR2(1);
24014 
24015 --
24016 BEGIN
24020 END IF;
24017 --
24018 IF g_log_enabled THEN
24019       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
24021 --
24022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24023 
24024       trace
24025          (p_msg      => 'BEGIN of AcctLineType_63'
24026          ,p_level    => C_LEVEL_PROCEDURE
24027          ,p_module   => l_log_module);
24028 
24029 END IF;
24030 --
24031 l_component_type             := 'AMB_JLT';
24032 l_component_code             := 'PA_PROVIDER_COST_ADJ';
24033 l_component_type_code        := 'S';
24034 l_component_appl_id          :=  275;
24035 l_amb_context_code           := 'DEFAULT';
24036 l_entity_code                := 'EXPENDITURES';
24037 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
24038 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
24039 l_line_definition_owner_code := 'S';
24040 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
24041 --
24042 l_balance_type_code          := 'A';
24043 l_segment                     := NULL;
24044 l_ccid                        := NULL;
24045 l_adr_transaction_coa_id      := NULL;
24046 l_adr_accounting_coa_id       := NULL;
24047 l_adr_flexfield_segment_code  := NULL;
24048 l_adr_flex_value_set_id       := NULL;
24049 l_adr_value_type_code         := NULL;
24050 l_adr_value_combination_id    := NULL;
24051 l_adr_value_segment_code      := NULL;
24052 
24053 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24054 l_bflow_class_code           := '';    -- 4219869 Business Flow
24055 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24056 l_budgetary_control_flag     := 'N';
24057 
24058 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24059 l_bflow_applied_to_amt       := NULL; -- 5132302
24060 l_entered_amt_idx            := NULL;          -- 4262811
24061 l_accted_amt_idx             := NULL;          -- 4262811
24062 l_acc_rev_flag               := NULL;          -- 4262811
24063 l_accrual_line_num           := NULL;          -- 4262811
24064 l_tmp_amt                    := NULL;          -- 4262811
24065 --
24066  
24067 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24068     l_balance_type_code <> 'B' THEN
24069 IF NVL(p_source_73,'
24070 ') =  'COST_TRANSFER' OR 
24071 NVL(p_source_73,'
24072 ') =  'COST_REVENUE' OR 
24073 p_source_73 IS NULL 
24074  THEN 
24075 
24076    --
24077    XLA_AE_LINES_PKG.SetNewLine;
24078 
24079    p_balance_type_code          := l_balance_type_code;
24080    -- set the flag so later we will know whether the gain loss line needs to be created
24081    
24082    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24083      p_actual_flag :='A';
24084    END IF;
24085 
24086    --
24087    -- bulk performance
24088    --
24089    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24090                                       p_header_num   => 0); -- 4262811
24091    --
24092    -- set accounting line options
24093    --
24094    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24095            p_natural_side_code          => 'C'
24096          , p_gain_or_loss_flag          => 'N'
24097          , p_gl_transfer_mode_code      => 'S'
24098          , p_acct_entry_type_code       => 'A'
24099          , p_switch_side_flag           => 'Y'
24100          , p_merge_duplicate_code       => 'N'
24101          );
24102    --
24103    l_acc_rev_natural_side_code := 'D';  -- 4262811
24104    -- 
24105    --
24106    -- set accounting line type info
24107    --
24108    xla_ae_lines_pkg.SetAcctLineType
24109       (p_component_type             => l_component_type
24110       ,p_event_type_code            => l_event_type_code
24111       ,p_line_definition_owner_code => l_line_definition_owner_code
24112       ,p_line_definition_code       => l_line_definition_code
24113       ,p_accounting_line_code       => l_component_code
24114       ,p_accounting_line_type_code  => l_component_type_code
24115       ,p_accounting_line_appl_id    => l_component_appl_id
24116       ,p_amb_context_code           => l_amb_context_code
24117       ,p_entity_code                => l_entity_code
24118       ,p_event_class_code           => l_event_class_code);
24119    --
24120    -- set accounting class
24121    --
24122    xla_ae_lines_pkg.SetAcctClass(
24123            p_accounting_class_code  => 'PROVIDER_COST'
24124          , p_ae_header_id           => l_ae_header_id
24125          );
24126 
24127    --
24128    -- set rounding class
24129    --
24130    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24131                       'PROVIDER_COST';
24132 
24133    --
24134    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24135    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24136    --
24137    -- bulk performance
24138    --
24139    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24140 
24141    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24142       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24143 
24144    -- 4955764
24145    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24146       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24147 
24148    -- 4458381 Public Sector Enh
24149    
24150    --
24151    -- set accounting attributes for the line type
24152    --
24153    l_entered_amt_idx := 22;
24154    l_accted_amt_idx  := 27;
24155    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24156    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24160    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
24157    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
24158    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
24159    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
24161    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
24162    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
24163    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
24164    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
24165    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
24166    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
24167    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
24168    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
24169    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
24170    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
24171    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
24172    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
24173    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
24174    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
24175    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
24176    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
24177    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
24178    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
24179    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
24180    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
24181    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
24182    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
24183    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
24184    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
24185    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
24186    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
24187    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
24188    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
24189    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
24190    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
24191    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
24192    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
24193    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
24194    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
24195    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
24196    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
24197    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
24198    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
24199    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
24200    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
24201    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
24202    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
24203    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
24204    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
24205    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
24206    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
24207    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
24208    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
24209    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
24210    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
24211    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
24212    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
24213    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
24214    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
24215    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
24216 
24217    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24218    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24219 
24220    ---------------------------------------------------------------------------------------------------------------
24221    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24222    ---------------------------------------------------------------------------------------------------------------
24223    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24224 
24225    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24226    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24227 
24228    IF xla_accounting_cache_pkg.GetValueChar
24229          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24230          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24231    AND l_bflow_method_code = 'PRIOR_ENTRY'
24232 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24233    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24234          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24235        )
24236    THEN
24237          xla_ae_lines_pkg.BflowUpgEntry
24238            (p_business_method_code    => l_bflow_method_code
24239            ,p_business_class_code     => l_bflow_class_code
24240            ,p_balance_type            => l_balance_type_code);
24241    ELSE
24242       NULL;
24243 -- No business flow processing for business flow method of NONE.
24244    END IF;
24245 
24246    --
24247    -- call analytical criteria
24248    --
24249    
24250    --
24251    -- call description
24252    --
24253    -- No description or it is inherited.
24254    --
24255    -- call ADRs
24256    -- Bug 4922099
24260         (NVL(l_enc_upg_option, 'N') = 'O')
24257    --
24258    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24259         (NVL(l_actual_upg_option, 'N') = 'O') OR
24261       )
24262    THEN
24263    NULL;
24264    --
24265    --
24266    
24267   l_ccid := AcctDerRule_17(
24268            p_application_id           => p_application_id
24269          , p_ae_header_id             => l_ae_header_id 
24270 , p_source_5 => p_source_5
24271 , p_source_10 => p_source_10
24272          , x_transaction_coa_id       => l_adr_transaction_coa_id
24273          , x_accounting_coa_id        => l_adr_accounting_coa_id
24274          , x_value_type_code          => l_adr_value_type_code
24275          , p_side                     => 'NA'
24276    );
24277 
24278    xla_ae_lines_pkg.set_ccid(
24279     p_code_combination_id          => l_ccid
24280   , p_value_type_code              => l_adr_value_type_code
24281   , p_transaction_coa_id           => l_adr_transaction_coa_id
24282   , p_accounting_coa_id            => l_adr_accounting_coa_id
24283   , p_adr_code                     => 'PA_PROV_COST_REV_ADJ_ACCT_RULE'
24284   , p_adr_type_code                => 'S'
24285   , p_component_type               => l_component_type
24286   , p_component_code               => l_component_code
24287   , p_component_type_code          => l_component_type_code
24288   , p_component_appl_id            => l_component_appl_id
24289   , p_amb_context_code             => l_amb_context_code
24290   , p_side                         => 'NA'
24291   );
24292 
24293 
24294    --
24295    --
24296    END IF;
24297    --
24298    -- Bug 4922099
24299    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24300           (NVL(l_enc_upg_option, 'N') = 'O')
24301         ) AND
24302         (l_bflow_method_code = 'PRIOR_ENTRY')
24303       )
24304    THEN
24305       IF
24306       --
24307       1 = 2
24308       --
24309       THEN
24310       xla_accounting_err_pkg.build_message
24311                                     (p_appli_s_name            => 'XLA'
24312                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24313                                     ,p_token_1                 => 'LINE_NUMBER'
24314                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24315                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24316                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24317                                                                              l_component_type
24318                                                                             ,l_component_code
24319                                                                             ,l_component_type_code
24320                                                                             ,l_component_appl_id
24321                                                                             ,l_amb_context_code
24322                                                                             ,l_entity_code
24323                                                                             ,l_event_class_code
24324                                                                            )
24325                                     ,p_token_3                 => 'OWNER'
24326                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24327                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24328                                                                           ,p_lookup_code    => l_component_type_code
24329                                                                          )
24330                                     ,p_token_4                 => 'PRODUCT_NAME'
24331                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24332                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24333                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24334                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24335                                     ,p_ae_header_id            =>  NULL
24336                                        );
24337 
24338         IF (C_LEVEL_ERROR>= g_log_level) THEN
24339                  trace
24340                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24341                       ,p_level    => C_LEVEL_ERROR
24342                       ,p_module   => l_log_module);
24343         END IF;
24344       END IF;
24345    END IF;
24346    --
24347    --
24348    ------------------------------------------------------------------------------------------------
24349    -- 4219869 Business Flow
24350    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24351    -- Prior Entry.  Currently, the following code is always generated.
24352    ------------------------------------------------------------------------------------------------
24353    XLA_AE_LINES_PKG.ValidateCurrentLine;
24354 
24355    ------------------------------------------------------------------------------------
24356    -- 4219869 Business Flow
24357    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24358    ------------------------------------------------------------------------------------
24359    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24360 
24361    ----------------------------------------------------------------------------------
24362    -- 4219869 Business Flow
24363    -- Update journal entry status -- Need to generate this within IF <condition>
24364    ----------------------------------------------------------------------------------
24365    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24369 
24366          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24367          ,p_balance_type_code => l_balance_type_code
24368          );
24370    -------------------------------------------------------------------------------------------
24371    -- 4262811 - Generate the Accrual Reversal lines
24372    -------------------------------------------------------------------------------------------
24373    BEGIN
24374       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24375                               (g_array_event(p_event_id).array_value_num('header_index'));
24376       IF l_acc_rev_flag IS NULL THEN
24377          l_acc_rev_flag := 'N';
24378       END IF;
24379    EXCEPTION
24380       WHEN OTHERS THEN
24381          l_acc_rev_flag := 'N';
24382    END;
24383    --
24384    IF (l_acc_rev_flag = 'Y') THEN
24385 
24386        -- 4645092  ------------------------------------------------------------------------------
24387        -- To allow MPA report to determine if it should generate report process
24388        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24389        ------------------------------------------------------------------------------------------
24390 
24391        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24392        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24393 
24394        --
24395        -- Update the line information that should be overwritten
24396        --
24397        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24398                                          p_header_num   => 1);
24399        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24400 
24401        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24402 
24403        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24404           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24405        END IF;
24406 
24407       --
24408       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24409       --
24410       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24411           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24412       ELSE
24413           ---------------------------------------------------------------------------------------------------
24414           -- 4262811a Switch Sign
24415           ---------------------------------------------------------------------------------------------------
24416           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24417           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24418                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24419           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24420                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24421           -- 5132302
24422           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24423                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24424 
24425       END IF;
24426 
24427       -- 4955764
24428       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24429       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24430 
24431 
24432       XLA_AE_LINES_PKG.ValidateCurrentLine;
24433       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24434 
24435       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24436                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24437                ,p_balance_type_code => l_balance_type_code);
24438 
24439    END IF;
24440 
24441    -----------------------------------------------------------------------------------------
24442    -- 4262811 Multiperiod Accounting
24443    -----------------------------------------------------------------------------------------
24444      -- No MPA option is assigned.
24445 
24446 
24447 END IF;
24448 END IF;
24449 --
24450 
24451 --
24452 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24453    trace
24454       (p_msg      => 'END of AcctLineType_63'
24455       ,p_level    => C_LEVEL_PROCEDURE
24456       ,p_module   => l_log_module);
24457 END IF;
24458 --
24459 EXCEPTION
24460   WHEN xla_exceptions_pkg.application_exception THEN
24461       RAISE;
24462   WHEN OTHERS THEN
24463        xla_exceptions_pkg.raise_message
24464            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_63');
24465 END AcctLineType_63;
24466 --
24467 
24468 ---------------------------------------
24469 --
24470 -- PRIVATE FUNCTION
24471 --         AcctLineType_64
24472 --
24473 ---------------------------------------
24474 PROCEDURE AcctLineType_64 (
24475   p_application_id        IN NUMBER
24476  ,p_event_id              IN NUMBER
24477  ,p_calculate_acctd_flag  IN VARCHAR2
24478  ,p_calculate_g_l_flag    IN VARCHAR2
24479  ,p_actual_flag           IN OUT VARCHAR2
24480  ,p_balance_type_code     OUT VARCHAR2
24481  ,p_gain_or_loss_ref      OUT VARCHAR2
24482  
24483 --Allow Account Override Flag
24484  , p_source_5            IN VARCHAR2
24485 --Provider Cost/ Revenue CCID
24486  , p_source_9            IN NUMBER
24487 --Adjustment Provider Cost/ Revenue CCID
24488  , p_source_10            IN NUMBER
24489 --Receiver Cost/ Revenue CCID
24490  , p_source_16            IN NUMBER
24491 --Reversing Line Flag
24492  , p_source_23            IN VARCHAR2
24496  , p_source_26            IN VARCHAR2
24493 --Actual Upgrade Credit Accounting Class
24494  , p_source_24            IN VARCHAR2
24495 --Entered Currency Code
24497 --Exchange Rate Date
24498  , p_source_28            IN DATE
24499 --Exchange Rate
24500  , p_source_29            IN NUMBER
24501 --Exchange Rate Type
24502  , p_source_30            IN VARCHAR2
24503 --Actual Upgrade Debit Accounting Class
24504  , p_source_31            IN VARCHAR2
24505 --Use Actuals Upgrade Attributes Flag
24506  , p_source_32            IN VARCHAR2
24507 --Expenditure Item ID
24508  , p_source_33            IN NUMBER
24509 --Cost Distribution Line Number
24510  , p_source_34            IN NUMBER
24511 --Line Type
24512  , p_source_35            IN VARCHAR2
24513  , p_source_35_meaning    IN VARCHAR2
24514 --Reversed Line Number
24515  , p_source_36            IN NUMBER
24516 --Entered Amount
24517  , p_source_42            IN NUMBER
24518 --Accounted Amount
24519  , p_source_43            IN NUMBER
24520 --Transfer Amount Type
24521  , p_source_73            IN VARCHAR2
24522  , p_source_73_meaning    IN VARCHAR2
24523 )
24524 IS
24525 
24526 l_component_type              VARCHAR2(80);
24527 l_component_code              VARCHAR2(30);
24528 l_component_type_code         VARCHAR2(1);
24529 l_component_appl_id           INTEGER;
24530 l_amb_context_code            VARCHAR2(30);
24531 l_entity_code                 VARCHAR2(30);
24532 l_event_class_code            VARCHAR2(30);
24533 l_ae_header_id                NUMBER;
24534 l_event_type_code             VARCHAR2(30);
24535 l_line_definition_code        VARCHAR2(30);
24536 l_line_definition_owner_code  VARCHAR2(1);
24537 --
24538 -- adr variables
24539 l_segment                     VARCHAR2(30);
24540 l_ccid                        NUMBER;
24541 l_adr_transaction_coa_id      NUMBER;
24542 l_adr_accounting_coa_id       NUMBER;
24543 l_adr_flexfield_segment_code  VARCHAR2(30);
24544 l_adr_flex_value_set_id       NUMBER;
24545 l_adr_value_type_code         VARCHAR2(30);
24546 l_adr_value_combination_id    NUMBER;
24547 l_adr_value_segment_code      VARCHAR2(30);
24548 
24549 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24550 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24551 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24552 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24553 
24554 -- 4262811 Variables ------------------------------------------------------------------------------------------
24555 l_entered_amt_idx             NUMBER;
24556 l_accted_amt_idx              NUMBER;
24557 l_acc_rev_flag                VARCHAR2(1);
24558 l_accrual_line_num            NUMBER;
24559 l_tmp_amt                     NUMBER;
24560 l_acc_rev_natural_side_code   VARCHAR2(1);
24561 
24562 l_num_entries                 NUMBER;
24563 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24564 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24565 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24566 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24567 l_recog_line_1                NUMBER;
24568 l_recog_line_2                NUMBER;
24569 
24570 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24571 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24572 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24573 
24574 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24575 
24576 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24577 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24578 
24579 ---------------------------------------------------------------------------------------------------------------
24580 
24581 
24582 --
24583 -- bulk performance
24584 --
24585 l_balance_type_code           VARCHAR2(1);
24586 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24587 l_log_module                  VARCHAR2(240);
24588 
24589 --
24590 -- Upgrade strategy
24591 --
24592 l_actual_upg_option           VARCHAR2(1);
24593 l_enc_upg_option           VARCHAR2(1);
24594 
24595 --
24596 BEGIN
24597 --
24598 IF g_log_enabled THEN
24599       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
24600 END IF;
24601 --
24602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24603 
24604       trace
24605          (p_msg      => 'BEGIN of AcctLineType_64'
24606          ,p_level    => C_LEVEL_PROCEDURE
24607          ,p_module   => l_log_module);
24608 
24609 END IF;
24610 --
24611 l_component_type             := 'AMB_JLT';
24612 l_component_code             := 'PA_PROVIDER_REVENUE';
24613 l_component_type_code        := 'S';
24614 l_component_appl_id          :=  275;
24615 l_amb_context_code           := 'DEFAULT';
24616 l_entity_code                := 'EXPENDITURES';
24617 l_event_class_code           := 'BORROWED_AND_LENT';
24618 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
24619 l_line_definition_owner_code := 'S';
24620 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
24621 --
24622 l_balance_type_code          := 'A';
24623 l_segment                     := NULL;
24624 l_ccid                        := NULL;
24625 l_adr_transaction_coa_id      := NULL;
24626 l_adr_accounting_coa_id       := NULL;
24627 l_adr_flexfield_segment_code  := NULL;
24628 l_adr_flex_value_set_id       := NULL;
24629 l_adr_value_type_code         := NULL;
24630 l_adr_value_combination_id    := NULL;
24631 l_adr_value_segment_code      := NULL;
24632 
24633 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24637 
24634 l_bflow_class_code           := '';    -- 4219869 Business Flow
24635 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24636 l_budgetary_control_flag     := 'N';
24638 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24639 l_bflow_applied_to_amt       := NULL; -- 5132302
24640 l_entered_amt_idx            := NULL;          -- 4262811
24641 l_accted_amt_idx             := NULL;          -- 4262811
24642 l_acc_rev_flag               := NULL;          -- 4262811
24643 l_accrual_line_num           := NULL;          -- 4262811
24644 l_tmp_amt                    := NULL;          -- 4262811
24645 --
24646  
24647 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24648     l_balance_type_code <> 'B' THEN
24649 IF NVL(p_source_73,'
24650 ') =  'REVENUE_TRANSFER'
24651  THEN 
24652 
24653    --
24654    XLA_AE_LINES_PKG.SetNewLine;
24655 
24656    p_balance_type_code          := l_balance_type_code;
24657    -- set the flag so later we will know whether the gain loss line needs to be created
24658    
24659    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24660      p_actual_flag :='A';
24661    END IF;
24662 
24663    --
24664    -- bulk performance
24665    --
24666    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24667                                       p_header_num   => 0); -- 4262811
24668    --
24669    -- set accounting line options
24670    --
24671    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24672            p_natural_side_code          => 'C'
24673          , p_gain_or_loss_flag          => 'N'
24674          , p_gl_transfer_mode_code      => 'S'
24675          , p_acct_entry_type_code       => 'A'
24676          , p_switch_side_flag           => 'Y'
24677          , p_merge_duplicate_code       => 'N'
24678          );
24679    --
24680    l_acc_rev_natural_side_code := 'D';  -- 4262811
24681    -- 
24682    --
24683    -- set accounting line type info
24684    --
24685    xla_ae_lines_pkg.SetAcctLineType
24686       (p_component_type             => l_component_type
24687       ,p_event_type_code            => l_event_type_code
24688       ,p_line_definition_owner_code => l_line_definition_owner_code
24689       ,p_line_definition_code       => l_line_definition_code
24690       ,p_accounting_line_code       => l_component_code
24691       ,p_accounting_line_type_code  => l_component_type_code
24692       ,p_accounting_line_appl_id    => l_component_appl_id
24693       ,p_amb_context_code           => l_amb_context_code
24694       ,p_entity_code                => l_entity_code
24695       ,p_event_class_code           => l_event_class_code);
24696    --
24697    -- set accounting class
24698    --
24699    xla_ae_lines_pkg.SetAcctClass(
24700            p_accounting_class_code  => 'PROVIDER_REVENUE'
24701          , p_ae_header_id           => l_ae_header_id
24702          );
24703 
24704    --
24705    -- set rounding class
24706    --
24707    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24708                       'PROVIDER_REVENUE';
24709 
24710    --
24711    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24712    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24713    --
24714    -- bulk performance
24715    --
24716    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24717 
24718    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24719       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24720 
24721    -- 4955764
24722    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24723       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24724 
24725    -- 4458381 Public Sector Enh
24726    
24727    --
24728    -- set accounting attributes for the line type
24729    --
24730    l_entered_amt_idx := 22;
24731    l_accted_amt_idx  := 27;
24732    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24733    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24734    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
24735    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
24736    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
24737    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
24738    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
24739    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
24740    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
24741    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
24742    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
24743    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
24744    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
24745    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
24746    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
24747    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
24748    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
24749    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
24750    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
24751    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
24752    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
24753    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
24754    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
24755    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
24756    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
24760    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
24757    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
24758    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
24759    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
24761    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
24762    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
24763    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
24764    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
24765    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
24766    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
24767    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
24768    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
24769    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
24770    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
24771    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
24772    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
24773    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
24774    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
24775    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
24776    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
24777    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
24778    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
24779    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
24780    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
24781    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
24782    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
24783    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
24784    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
24785    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
24786    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
24787    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
24788    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
24789    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
24790    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
24791    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
24792    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
24793 
24794    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24795    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24796 
24797    ---------------------------------------------------------------------------------------------------------------
24798    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24799    ---------------------------------------------------------------------------------------------------------------
24800    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24801 
24802    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24803    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24804 
24805    IF xla_accounting_cache_pkg.GetValueChar
24806          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24807          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24808    AND l_bflow_method_code = 'PRIOR_ENTRY'
24809 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24810    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24811          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24812        )
24813    THEN
24814          xla_ae_lines_pkg.BflowUpgEntry
24815            (p_business_method_code    => l_bflow_method_code
24816            ,p_business_class_code     => l_bflow_class_code
24817            ,p_balance_type            => l_balance_type_code);
24818    ELSE
24819       NULL;
24820 -- No business flow processing for business flow method of NONE.
24821    END IF;
24822 
24823    --
24824    -- call analytical criteria
24825    --
24826    
24827    --
24828    -- call description
24829    --
24830    -- No description or it is inherited.
24831    --
24832    -- call ADRs
24833    -- Bug 4922099
24834    --
24835    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24836         (NVL(l_actual_upg_option, 'N') = 'O') OR
24837         (NVL(l_enc_upg_option, 'N') = 'O')
24838       )
24839    THEN
24840    NULL;
24841    --
24842    --
24843    
24844   l_ccid := AcctDerRule_16(
24845            p_application_id           => p_application_id
24846          , p_ae_header_id             => l_ae_header_id 
24847 , p_source_5 => p_source_5
24848 , p_source_9 => p_source_9
24849 , p_source_10 => p_source_10
24850          , x_transaction_coa_id       => l_adr_transaction_coa_id
24851          , x_accounting_coa_id        => l_adr_accounting_coa_id
24852          , x_value_type_code          => l_adr_value_type_code
24853          , p_side                     => 'NA'
24854    );
24855 
24856    xla_ae_lines_pkg.set_ccid(
24857     p_code_combination_id          => l_ccid
24858   , p_value_type_code              => l_adr_value_type_code
24859   , p_transaction_coa_id           => l_adr_transaction_coa_id
24860   , p_accounting_coa_id            => l_adr_accounting_coa_id
24861   , p_adr_code                     => 'PA_PROV_COST_REV_ACCT_RULE'
24862   , p_adr_type_code                => 'S'
24863   , p_component_type               => l_component_type
24864   , p_component_code               => l_component_code
24865   , p_component_type_code          => l_component_type_code
24866   , p_component_appl_id            => l_component_appl_id
24867   , p_amb_context_code             => l_amb_context_code
24871 
24868   , p_side                         => 'NA'
24869   );
24870 
24872    --
24873    --
24874    END IF;
24875    --
24876    -- Bug 4922099
24877    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24878           (NVL(l_enc_upg_option, 'N') = 'O')
24879         ) AND
24880         (l_bflow_method_code = 'PRIOR_ENTRY')
24881       )
24882    THEN
24883       IF
24884       --
24885       1 = 2
24886       --
24887       THEN
24888       xla_accounting_err_pkg.build_message
24889                                     (p_appli_s_name            => 'XLA'
24890                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24891                                     ,p_token_1                 => 'LINE_NUMBER'
24892                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24893                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24894                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24895                                                                              l_component_type
24896                                                                             ,l_component_code
24897                                                                             ,l_component_type_code
24898                                                                             ,l_component_appl_id
24899                                                                             ,l_amb_context_code
24900                                                                             ,l_entity_code
24901                                                                             ,l_event_class_code
24902                                                                            )
24903                                     ,p_token_3                 => 'OWNER'
24904                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24905                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24906                                                                           ,p_lookup_code    => l_component_type_code
24907                                                                          )
24908                                     ,p_token_4                 => 'PRODUCT_NAME'
24909                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24910                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24911                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24912                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24913                                     ,p_ae_header_id            =>  NULL
24914                                        );
24915 
24916         IF (C_LEVEL_ERROR>= g_log_level) THEN
24917                  trace
24918                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24919                       ,p_level    => C_LEVEL_ERROR
24920                       ,p_module   => l_log_module);
24921         END IF;
24922       END IF;
24923    END IF;
24924    --
24925    --
24926    ------------------------------------------------------------------------------------------------
24927    -- 4219869 Business Flow
24928    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24929    -- Prior Entry.  Currently, the following code is always generated.
24930    ------------------------------------------------------------------------------------------------
24931    XLA_AE_LINES_PKG.ValidateCurrentLine;
24932 
24933    ------------------------------------------------------------------------------------
24934    -- 4219869 Business Flow
24935    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24936    ------------------------------------------------------------------------------------
24937    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24938 
24939    ----------------------------------------------------------------------------------
24940    -- 4219869 Business Flow
24941    -- Update journal entry status -- Need to generate this within IF <condition>
24942    ----------------------------------------------------------------------------------
24943    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24944          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24945          ,p_balance_type_code => l_balance_type_code
24946          );
24947 
24948    -------------------------------------------------------------------------------------------
24949    -- 4262811 - Generate the Accrual Reversal lines
24950    -------------------------------------------------------------------------------------------
24951    BEGIN
24952       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24953                               (g_array_event(p_event_id).array_value_num('header_index'));
24954       IF l_acc_rev_flag IS NULL THEN
24955          l_acc_rev_flag := 'N';
24956       END IF;
24957    EXCEPTION
24958       WHEN OTHERS THEN
24959          l_acc_rev_flag := 'N';
24960    END;
24961    --
24962    IF (l_acc_rev_flag = 'Y') THEN
24963 
24964        -- 4645092  ------------------------------------------------------------------------------
24965        -- To allow MPA report to determine if it should generate report process
24966        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24967        ------------------------------------------------------------------------------------------
24968 
24969        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24970        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24971 
24972        --
24973        -- Update the line information that should be overwritten
24974        --
24978 
24975        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24976                                          p_header_num   => 1);
24977        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24979        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24980 
24981        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24982           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24983        END IF;
24984 
24985       --
24986       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24987       --
24988       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24989           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24990       ELSE
24991           ---------------------------------------------------------------------------------------------------
24992           -- 4262811a Switch Sign
24993           ---------------------------------------------------------------------------------------------------
24994           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24995           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24996                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24997           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24998                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24999           -- 5132302
25000           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25001                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25002 
25003       END IF;
25004 
25005       -- 4955764
25006       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25007       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25008 
25009 
25010       XLA_AE_LINES_PKG.ValidateCurrentLine;
25011       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25012 
25013       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25014                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25015                ,p_balance_type_code => l_balance_type_code);
25016 
25017    END IF;
25018 
25019    -----------------------------------------------------------------------------------------
25020    -- 4262811 Multiperiod Accounting
25021    -----------------------------------------------------------------------------------------
25022      -- No MPA option is assigned.
25023 
25024 
25025 END IF;
25026 END IF;
25027 --
25028 
25029 --
25030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25031    trace
25032       (p_msg      => 'END of AcctLineType_64'
25033       ,p_level    => C_LEVEL_PROCEDURE
25034       ,p_module   => l_log_module);
25035 END IF;
25036 --
25037 EXCEPTION
25038   WHEN xla_exceptions_pkg.application_exception THEN
25039       RAISE;
25040   WHEN OTHERS THEN
25041        xla_exceptions_pkg.raise_message
25042            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_64');
25043 END AcctLineType_64;
25044 --
25045 
25046 ---------------------------------------
25047 --
25048 -- PRIVATE FUNCTION
25049 --         AcctLineType_65
25050 --
25051 ---------------------------------------
25052 PROCEDURE AcctLineType_65 (
25053   p_application_id        IN NUMBER
25054  ,p_event_id              IN NUMBER
25055  ,p_calculate_acctd_flag  IN VARCHAR2
25056  ,p_calculate_g_l_flag    IN VARCHAR2
25057  ,p_actual_flag           IN OUT VARCHAR2
25058  ,p_balance_type_code     OUT VARCHAR2
25059  ,p_gain_or_loss_ref      OUT VARCHAR2
25060  
25061 --Allow Account Override Flag
25062  , p_source_5            IN VARCHAR2
25063 --Provider Cost/ Revenue CCID
25064  , p_source_9            IN NUMBER
25065 --Adjustment Provider Cost/ Revenue CCID
25066  , p_source_10            IN NUMBER
25067 --Receiver Cost/ Revenue CCID
25068  , p_source_16            IN NUMBER
25069 --Reversing Line Flag
25070  , p_source_23            IN VARCHAR2
25071 --Actual Upgrade Credit Accounting Class
25072  , p_source_24            IN VARCHAR2
25073 --Entered Currency Code
25074  , p_source_26            IN VARCHAR2
25075 --Exchange Rate Date
25076  , p_source_28            IN DATE
25077 --Exchange Rate
25078  , p_source_29            IN NUMBER
25079 --Exchange Rate Type
25080  , p_source_30            IN VARCHAR2
25081 --Actual Upgrade Debit Accounting Class
25082  , p_source_31            IN VARCHAR2
25083 --Use Actuals Upgrade Attributes Flag
25084  , p_source_32            IN VARCHAR2
25085 --Expenditure Item ID
25086  , p_source_33            IN NUMBER
25087 --Cost Distribution Line Number
25088  , p_source_34            IN NUMBER
25089 --Line Type
25090  , p_source_35            IN VARCHAR2
25091  , p_source_35_meaning    IN VARCHAR2
25092 --Reversed Line Number
25093  , p_source_36            IN NUMBER
25094 --Entered Amount
25095  , p_source_42            IN NUMBER
25096 --Accounted Amount
25097  , p_source_43            IN NUMBER
25098 --Transfer Amount Type
25099  , p_source_73            IN VARCHAR2
25100  , p_source_73_meaning    IN VARCHAR2
25101 )
25102 IS
25103 
25104 l_component_type              VARCHAR2(80);
25105 l_component_code              VARCHAR2(30);
25106 l_component_type_code         VARCHAR2(1);
25107 l_component_appl_id           INTEGER;
25108 l_amb_context_code            VARCHAR2(30);
25112 l_event_type_code             VARCHAR2(30);
25109 l_entity_code                 VARCHAR2(30);
25110 l_event_class_code            VARCHAR2(30);
25111 l_ae_header_id                NUMBER;
25113 l_line_definition_code        VARCHAR2(30);
25114 l_line_definition_owner_code  VARCHAR2(1);
25115 --
25116 -- adr variables
25117 l_segment                     VARCHAR2(30);
25118 l_ccid                        NUMBER;
25119 l_adr_transaction_coa_id      NUMBER;
25120 l_adr_accounting_coa_id       NUMBER;
25121 l_adr_flexfield_segment_code  VARCHAR2(30);
25122 l_adr_flex_value_set_id       NUMBER;
25123 l_adr_value_type_code         VARCHAR2(30);
25124 l_adr_value_combination_id    NUMBER;
25125 l_adr_value_segment_code      VARCHAR2(30);
25126 
25127 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25128 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25129 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25130 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25131 
25132 -- 4262811 Variables ------------------------------------------------------------------------------------------
25133 l_entered_amt_idx             NUMBER;
25134 l_accted_amt_idx              NUMBER;
25135 l_acc_rev_flag                VARCHAR2(1);
25136 l_accrual_line_num            NUMBER;
25137 l_tmp_amt                     NUMBER;
25138 l_acc_rev_natural_side_code   VARCHAR2(1);
25139 
25140 l_num_entries                 NUMBER;
25141 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25142 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25143 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25144 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25145 l_recog_line_1                NUMBER;
25146 l_recog_line_2                NUMBER;
25147 
25148 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25149 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25150 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25151 
25152 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25153 
25154 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25155 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25156 
25157 ---------------------------------------------------------------------------------------------------------------
25158 
25159 
25160 --
25161 -- bulk performance
25162 --
25163 l_balance_type_code           VARCHAR2(1);
25164 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25165 l_log_module                  VARCHAR2(240);
25166 
25167 --
25168 -- Upgrade strategy
25169 --
25170 l_actual_upg_option           VARCHAR2(1);
25171 l_enc_upg_option           VARCHAR2(1);
25172 
25173 --
25174 BEGIN
25175 --
25176 IF g_log_enabled THEN
25177       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
25178 END IF;
25179 --
25180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25181 
25182       trace
25183          (p_msg      => 'BEGIN of AcctLineType_65'
25184          ,p_level    => C_LEVEL_PROCEDURE
25185          ,p_module   => l_log_module);
25186 
25187 END IF;
25188 --
25189 l_component_type             := 'AMB_JLT';
25190 l_component_code             := 'PA_PROVIDER_REVENUE_ADJ';
25191 l_component_type_code        := 'S';
25192 l_component_appl_id          :=  275;
25193 l_amb_context_code           := 'DEFAULT';
25194 l_entity_code                := 'EXPENDITURES';
25195 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
25196 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
25197 l_line_definition_owner_code := 'S';
25198 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
25199 --
25200 l_balance_type_code          := 'A';
25201 l_segment                     := NULL;
25202 l_ccid                        := NULL;
25203 l_adr_transaction_coa_id      := NULL;
25204 l_adr_accounting_coa_id       := NULL;
25205 l_adr_flexfield_segment_code  := NULL;
25206 l_adr_flex_value_set_id       := NULL;
25207 l_adr_value_type_code         := NULL;
25208 l_adr_value_combination_id    := NULL;
25209 l_adr_value_segment_code      := NULL;
25210 
25211 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25212 l_bflow_class_code           := '';    -- 4219869 Business Flow
25213 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25214 l_budgetary_control_flag     := 'N';
25215 
25216 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25217 l_bflow_applied_to_amt       := NULL; -- 5132302
25218 l_entered_amt_idx            := NULL;          -- 4262811
25219 l_accted_amt_idx             := NULL;          -- 4262811
25220 l_acc_rev_flag               := NULL;          -- 4262811
25221 l_accrual_line_num           := NULL;          -- 4262811
25222 l_tmp_amt                    := NULL;          -- 4262811
25223 --
25224  
25225 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25226     l_balance_type_code <> 'B' THEN
25227 IF NVL(p_source_73,'
25228 ') =  'REVENUE_TRANSFER'
25229  THEN 
25230 
25231    --
25232    XLA_AE_LINES_PKG.SetNewLine;
25233 
25234    p_balance_type_code          := l_balance_type_code;
25235    -- set the flag so later we will know whether the gain loss line needs to be created
25236    
25237    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25238      p_actual_flag :='A';
25239    END IF;
25240 
25241    --
25242    -- bulk performance
25243    --
25244    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25245                                       p_header_num   => 0); -- 4262811
25246    --
25250            p_natural_side_code          => 'C'
25247    -- set accounting line options
25248    --
25249    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25251          , p_gain_or_loss_flag          => 'N'
25252          , p_gl_transfer_mode_code      => 'S'
25253          , p_acct_entry_type_code       => 'A'
25254          , p_switch_side_flag           => 'Y'
25255          , p_merge_duplicate_code       => 'N'
25256          );
25257    --
25258    l_acc_rev_natural_side_code := 'D';  -- 4262811
25259    -- 
25260    --
25261    -- set accounting line type info
25262    --
25263    xla_ae_lines_pkg.SetAcctLineType
25264       (p_component_type             => l_component_type
25265       ,p_event_type_code            => l_event_type_code
25266       ,p_line_definition_owner_code => l_line_definition_owner_code
25267       ,p_line_definition_code       => l_line_definition_code
25268       ,p_accounting_line_code       => l_component_code
25269       ,p_accounting_line_type_code  => l_component_type_code
25270       ,p_accounting_line_appl_id    => l_component_appl_id
25271       ,p_amb_context_code           => l_amb_context_code
25272       ,p_entity_code                => l_entity_code
25273       ,p_event_class_code           => l_event_class_code);
25274    --
25275    -- set accounting class
25276    --
25277    xla_ae_lines_pkg.SetAcctClass(
25278            p_accounting_class_code  => 'PROVIDER_REVENUE'
25279          , p_ae_header_id           => l_ae_header_id
25280          );
25281 
25282    --
25283    -- set rounding class
25284    --
25285    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25286                       'PROVIDER_REVENUE';
25287 
25288    --
25289    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25290    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25291    --
25292    -- bulk performance
25293    --
25294    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25295 
25296    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25297       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25298 
25299    -- 4955764
25300    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25301       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25302 
25303    -- 4458381 Public Sector Enh
25304    
25305    --
25306    -- set accounting attributes for the line type
25307    --
25308    l_entered_amt_idx := 22;
25309    l_accted_amt_idx  := 27;
25310    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25311    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25312    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
25313    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
25314    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
25315    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
25316    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
25317    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
25318    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
25319    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
25320    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
25321    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
25322    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
25323    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
25324    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
25325    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
25326    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
25327    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
25328    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
25329    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
25330    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
25331    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
25332    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
25333    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
25334    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
25335    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
25336    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
25337    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
25338    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
25339    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
25340    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
25341    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
25342    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
25343    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
25344    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
25345    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
25346    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
25347    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
25348    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
25349    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
25350    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
25351    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
25352    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
25353    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
25354    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
25355    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
25356    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
25360    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
25357    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
25358    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
25359    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
25361    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
25362    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
25363    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
25364    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
25365    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
25366    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
25367    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
25368    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
25369    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
25370    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
25371 
25372    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25373    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25374 
25375    ---------------------------------------------------------------------------------------------------------------
25376    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25377    ---------------------------------------------------------------------------------------------------------------
25378    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25379 
25380    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25381    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25382 
25383    IF xla_accounting_cache_pkg.GetValueChar
25384          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25385          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25386    AND l_bflow_method_code = 'PRIOR_ENTRY'
25387 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25388    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25389          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25390        )
25391    THEN
25392          xla_ae_lines_pkg.BflowUpgEntry
25393            (p_business_method_code    => l_bflow_method_code
25394            ,p_business_class_code     => l_bflow_class_code
25395            ,p_balance_type            => l_balance_type_code);
25396    ELSE
25397       NULL;
25398 -- No business flow processing for business flow method of NONE.
25399    END IF;
25400 
25401    --
25402    -- call analytical criteria
25403    --
25404    
25405    --
25406    -- call description
25407    --
25408    -- No description or it is inherited.
25409    --
25410    -- call ADRs
25411    -- Bug 4922099
25412    --
25413    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25414         (NVL(l_actual_upg_option, 'N') = 'O') OR
25415         (NVL(l_enc_upg_option, 'N') = 'O')
25416       )
25417    THEN
25418    NULL;
25419    --
25420    --
25421    
25422   l_ccid := AcctDerRule_17(
25423            p_application_id           => p_application_id
25424          , p_ae_header_id             => l_ae_header_id 
25425 , p_source_5 => p_source_5
25426 , p_source_10 => p_source_10
25427          , x_transaction_coa_id       => l_adr_transaction_coa_id
25428          , x_accounting_coa_id        => l_adr_accounting_coa_id
25429          , x_value_type_code          => l_adr_value_type_code
25430          , p_side                     => 'NA'
25431    );
25432 
25433    xla_ae_lines_pkg.set_ccid(
25434     p_code_combination_id          => l_ccid
25435   , p_value_type_code              => l_adr_value_type_code
25436   , p_transaction_coa_id           => l_adr_transaction_coa_id
25437   , p_accounting_coa_id            => l_adr_accounting_coa_id
25438   , p_adr_code                     => 'PA_PROV_COST_REV_ADJ_ACCT_RULE'
25439   , p_adr_type_code                => 'S'
25440   , p_component_type               => l_component_type
25441   , p_component_code               => l_component_code
25442   , p_component_type_code          => l_component_type_code
25443   , p_component_appl_id            => l_component_appl_id
25444   , p_amb_context_code             => l_amb_context_code
25445   , p_side                         => 'NA'
25446   );
25447 
25448 
25449    --
25450    --
25451    END IF;
25452    --
25453    -- Bug 4922099
25454    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25455           (NVL(l_enc_upg_option, 'N') = 'O')
25456         ) AND
25457         (l_bflow_method_code = 'PRIOR_ENTRY')
25458       )
25459    THEN
25460       IF
25461       --
25462       1 = 2
25463       --
25464       THEN
25465       xla_accounting_err_pkg.build_message
25466                                     (p_appli_s_name            => 'XLA'
25467                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25468                                     ,p_token_1                 => 'LINE_NUMBER'
25469                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25470                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25471                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25472                                                                              l_component_type
25473                                                                             ,l_component_code
25474                                                                             ,l_component_type_code
25475                                                                             ,l_component_appl_id
25476                                                                             ,l_amb_context_code
25480                                     ,p_token_3                 => 'OWNER'
25477                                                                             ,l_entity_code
25478                                                                             ,l_event_class_code
25479                                                                            )
25481                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25482                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25483                                                                           ,p_lookup_code    => l_component_type_code
25484                                                                          )
25485                                     ,p_token_4                 => 'PRODUCT_NAME'
25486                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25487                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25488                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25489                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25490                                     ,p_ae_header_id            =>  NULL
25491                                        );
25492 
25493         IF (C_LEVEL_ERROR>= g_log_level) THEN
25494                  trace
25495                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25496                       ,p_level    => C_LEVEL_ERROR
25497                       ,p_module   => l_log_module);
25498         END IF;
25499       END IF;
25500    END IF;
25501    --
25502    --
25503    ------------------------------------------------------------------------------------------------
25504    -- 4219869 Business Flow
25505    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25506    -- Prior Entry.  Currently, the following code is always generated.
25507    ------------------------------------------------------------------------------------------------
25508    XLA_AE_LINES_PKG.ValidateCurrentLine;
25509 
25510    ------------------------------------------------------------------------------------
25511    -- 4219869 Business Flow
25512    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25513    ------------------------------------------------------------------------------------
25514    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25515 
25516    ----------------------------------------------------------------------------------
25517    -- 4219869 Business Flow
25518    -- Update journal entry status -- Need to generate this within IF <condition>
25519    ----------------------------------------------------------------------------------
25520    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25521          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25522          ,p_balance_type_code => l_balance_type_code
25523          );
25524 
25525    -------------------------------------------------------------------------------------------
25526    -- 4262811 - Generate the Accrual Reversal lines
25527    -------------------------------------------------------------------------------------------
25528    BEGIN
25529       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25530                               (g_array_event(p_event_id).array_value_num('header_index'));
25531       IF l_acc_rev_flag IS NULL THEN
25532          l_acc_rev_flag := 'N';
25533       END IF;
25534    EXCEPTION
25535       WHEN OTHERS THEN
25536          l_acc_rev_flag := 'N';
25537    END;
25538    --
25539    IF (l_acc_rev_flag = 'Y') THEN
25540 
25541        -- 4645092  ------------------------------------------------------------------------------
25542        -- To allow MPA report to determine if it should generate report process
25543        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25544        ------------------------------------------------------------------------------------------
25545 
25546        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25547        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25548 
25549        --
25550        -- Update the line information that should be overwritten
25551        --
25552        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25553                                          p_header_num   => 1);
25554        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25555 
25556        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25557 
25558        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25559           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25560        END IF;
25561 
25562       --
25563       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25564       --
25565       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25566           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25567       ELSE
25568           ---------------------------------------------------------------------------------------------------
25569           -- 4262811a Switch Sign
25570           ---------------------------------------------------------------------------------------------------
25571           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25572           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25573                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25574           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25578                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25575                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25576           -- 5132302
25577           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25579 
25580       END IF;
25581 
25582       -- 4955764
25583       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25585 
25586 
25587       XLA_AE_LINES_PKG.ValidateCurrentLine;
25588       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25589 
25590       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25591                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25592                ,p_balance_type_code => l_balance_type_code);
25593 
25594    END IF;
25595 
25596    -----------------------------------------------------------------------------------------
25597    -- 4262811 Multiperiod Accounting
25598    -----------------------------------------------------------------------------------------
25599      -- No MPA option is assigned.
25600 
25601 
25602 END IF;
25603 END IF;
25604 --
25605 
25606 --
25607 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25608    trace
25609       (p_msg      => 'END of AcctLineType_65'
25610       ,p_level    => C_LEVEL_PROCEDURE
25611       ,p_module   => l_log_module);
25612 END IF;
25613 --
25614 EXCEPTION
25615   WHEN xla_exceptions_pkg.application_exception THEN
25616       RAISE;
25617   WHEN OTHERS THEN
25618        xla_exceptions_pkg.raise_message
25619            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_65');
25620 END AcctLineType_65;
25621 --
25622 
25623 ---------------------------------------
25624 --
25625 -- PRIVATE FUNCTION
25626 --         AcctLineType_66
25627 --
25628 ---------------------------------------
25629 PROCEDURE AcctLineType_66 (
25630   p_application_id        IN NUMBER
25631  ,p_event_id              IN NUMBER
25632  ,p_calculate_acctd_flag  IN VARCHAR2
25633  ,p_calculate_g_l_flag    IN VARCHAR2
25634  ,p_actual_flag           IN OUT VARCHAR2
25635  ,p_balance_type_code     OUT VARCHAR2
25636  ,p_gain_or_loss_ref      OUT VARCHAR2
25637  
25638 --Cost CCID
25639  , p_source_4            IN NUMBER
25640 --Allow Account Override Flag
25641  , p_source_5            IN VARCHAR2
25642 --Adjustment Cost CCID
25643  , p_source_6            IN NUMBER
25644 --Cost Clearing CCID
25645  , p_source_7            IN NUMBER
25646 --Reversing Line Flag
25647  , p_source_23            IN VARCHAR2
25648 --Actual Upgrade Credit Accounting Class
25649  , p_source_24            IN VARCHAR2
25650 --Entered Raw Cost
25651  , p_source_25            IN NUMBER
25652 --Entered Currency Code
25653  , p_source_26            IN VARCHAR2
25654 --Accounted Raw Cost
25655  , p_source_27            IN NUMBER
25656 --Exchange Rate Date
25657  , p_source_28            IN DATE
25658 --Exchange Rate
25659  , p_source_29            IN NUMBER
25660 --Exchange Rate Type
25661  , p_source_30            IN VARCHAR2
25662 --Actual Upgrade Debit Accounting Class
25663  , p_source_31            IN VARCHAR2
25664 --Use Actuals Upgrade Attributes Flag
25665  , p_source_32            IN VARCHAR2
25666 --Expenditure Item ID
25667  , p_source_33            IN NUMBER
25668 --Cost Distribution Line Number
25669  , p_source_34            IN NUMBER
25670 --Line Type
25671  , p_source_35            IN VARCHAR2
25672  , p_source_35_meaning    IN VARCHAR2
25673 --Reversed Line Number
25674  , p_source_36            IN NUMBER
25675 )
25676 IS
25677 
25678 l_component_type              VARCHAR2(80);
25679 l_component_code              VARCHAR2(30);
25680 l_component_type_code         VARCHAR2(1);
25681 l_component_appl_id           INTEGER;
25682 l_amb_context_code            VARCHAR2(30);
25683 l_entity_code                 VARCHAR2(30);
25684 l_event_class_code            VARCHAR2(30);
25685 l_ae_header_id                NUMBER;
25686 l_event_type_code             VARCHAR2(30);
25687 l_line_definition_code        VARCHAR2(30);
25688 l_line_definition_owner_code  VARCHAR2(1);
25689 --
25690 -- adr variables
25691 l_segment                     VARCHAR2(30);
25692 l_ccid                        NUMBER;
25693 l_adr_transaction_coa_id      NUMBER;
25694 l_adr_accounting_coa_id       NUMBER;
25695 l_adr_flexfield_segment_code  VARCHAR2(30);
25696 l_adr_flex_value_set_id       NUMBER;
25697 l_adr_value_type_code         VARCHAR2(30);
25698 l_adr_value_combination_id    NUMBER;
25699 l_adr_value_segment_code      VARCHAR2(30);
25700 
25701 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25702 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25703 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25704 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25705 
25706 -- 4262811 Variables ------------------------------------------------------------------------------------------
25707 l_entered_amt_idx             NUMBER;
25708 l_accted_amt_idx              NUMBER;
25709 l_acc_rev_flag                VARCHAR2(1);
25710 l_accrual_line_num            NUMBER;
25711 l_tmp_amt                     NUMBER;
25712 l_acc_rev_natural_side_code   VARCHAR2(1);
25713 
25714 l_num_entries                 NUMBER;
25715 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25716 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25717 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25718 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25722 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25719 l_recog_line_1                NUMBER;
25720 l_recog_line_2                NUMBER;
25721 
25723 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25724 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25725 
25726 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25727 
25728 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25729 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25730 
25731 ---------------------------------------------------------------------------------------------------------------
25732 
25733 
25734 --
25735 -- bulk performance
25736 --
25737 l_balance_type_code           VARCHAR2(1);
25738 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25739 l_log_module                  VARCHAR2(240);
25740 
25741 --
25742 -- Upgrade strategy
25743 --
25744 l_actual_upg_option           VARCHAR2(1);
25745 l_enc_upg_option           VARCHAR2(1);
25746 
25747 --
25748 BEGIN
25749 --
25750 IF g_log_enabled THEN
25751       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
25752 END IF;
25753 --
25754 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25755 
25756       trace
25757          (p_msg      => 'BEGIN of AcctLineType_66'
25758          ,p_level    => C_LEVEL_PROCEDURE
25759          ,p_module   => l_log_module);
25760 
25761 END IF;
25762 --
25763 l_component_type             := 'AMB_JLT';
25764 l_component_code             := 'PA_RAW_COST';
25765 l_component_type_code        := 'S';
25766 l_component_appl_id          :=  275;
25767 l_amb_context_code           := 'DEFAULT';
25768 l_entity_code                := 'EXPENDITURES';
25769 l_event_class_code           := 'LABOR_COST';
25770 l_event_type_code            := 'LABOR_COST_ALL';
25771 l_line_definition_owner_code := 'S';
25772 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
25773 --
25774 l_balance_type_code          := 'A';
25775 l_segment                     := NULL;
25776 l_ccid                        := NULL;
25777 l_adr_transaction_coa_id      := NULL;
25778 l_adr_accounting_coa_id       := NULL;
25779 l_adr_flexfield_segment_code  := NULL;
25780 l_adr_flex_value_set_id       := NULL;
25781 l_adr_value_type_code         := NULL;
25782 l_adr_value_combination_id    := NULL;
25783 l_adr_value_segment_code      := NULL;
25784 
25785 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25786 l_bflow_class_code           := '';    -- 4219869 Business Flow
25787 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25788 l_budgetary_control_flag     := 'N';
25789 
25790 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25791 l_bflow_applied_to_amt       := NULL; -- 5132302
25792 l_entered_amt_idx            := NULL;          -- 4262811
25793 l_accted_amt_idx             := NULL;          -- 4262811
25794 l_acc_rev_flag               := NULL;          -- 4262811
25795 l_accrual_line_num           := NULL;          -- 4262811
25796 l_tmp_amt                    := NULL;          -- 4262811
25797 --
25798  
25799 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25800     l_balance_type_code <> 'B' THEN
25801 
25802    --
25803    XLA_AE_LINES_PKG.SetNewLine;
25804 
25805    p_balance_type_code          := l_balance_type_code;
25806    -- set the flag so later we will know whether the gain loss line needs to be created
25807    
25808    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25809      p_actual_flag :='A';
25810    END IF;
25811 
25812    --
25813    -- bulk performance
25814    --
25815    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25816                                       p_header_num   => 0); -- 4262811
25817    --
25818    -- set accounting line options
25819    --
25820    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25821            p_natural_side_code          => 'D'
25822          , p_gain_or_loss_flag          => 'N'
25823          , p_gl_transfer_mode_code      => 'S'
25824          , p_acct_entry_type_code       => 'A'
25825          , p_switch_side_flag           => 'Y'
25826          , p_merge_duplicate_code       => 'N'
25827          );
25828    --
25829    l_acc_rev_natural_side_code := 'C';  -- 4262811
25830    -- 
25831    --
25832    -- set accounting line type info
25833    --
25834    xla_ae_lines_pkg.SetAcctLineType
25835       (p_component_type             => l_component_type
25836       ,p_event_type_code            => l_event_type_code
25837       ,p_line_definition_owner_code => l_line_definition_owner_code
25838       ,p_line_definition_code       => l_line_definition_code
25839       ,p_accounting_line_code       => l_component_code
25840       ,p_accounting_line_type_code  => l_component_type_code
25841       ,p_accounting_line_appl_id    => l_component_appl_id
25842       ,p_amb_context_code           => l_amb_context_code
25843       ,p_entity_code                => l_entity_code
25844       ,p_event_class_code           => l_event_class_code);
25845    --
25846    -- set accounting class
25847    --
25848    xla_ae_lines_pkg.SetAcctClass(
25849            p_accounting_class_code  => 'COST'
25850          , p_ae_header_id           => l_ae_header_id
25851          );
25852 
25853    --
25854    -- set rounding class
25855    --
25856    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25857                       'COST';
25858 
25859    --
25860    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25864    --
25861    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25862    --
25863    -- bulk performance
25865    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25866 
25867    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25868       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25869 
25870    -- 4955764
25871    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25872       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25873 
25874    -- 4458381 Public Sector Enh
25875    
25876    --
25877    -- set accounting attributes for the line type
25878    --
25879    l_entered_amt_idx := 22;
25880    l_accted_amt_idx  := 27;
25881    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25882    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25883    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
25884    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
25885    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
25886    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
25887    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
25888    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
25889    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
25890    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
25891    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
25892    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
25893    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
25894    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
25895    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
25896    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
25897    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
25898    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
25899    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
25900    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
25901    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
25902    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
25903    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
25904    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
25905    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
25906    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
25907    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
25908    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
25909    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
25910    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
25911    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
25912    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
25913    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
25914    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
25915    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
25916    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
25917    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
25918    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
25919    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
25920    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
25921    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
25922    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
25923    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
25924    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
25925    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
25926    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
25927    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
25928    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
25929    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
25930    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
25931    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
25932    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
25933    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
25934    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
25935    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
25936    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
25937    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
25938    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
25939    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
25940    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
25941    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
25942 
25943    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25944    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25945 
25946    ---------------------------------------------------------------------------------------------------------------
25947    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25948    ---------------------------------------------------------------------------------------------------------------
25949    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25950 
25951    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25952    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25953 
25954    IF xla_accounting_cache_pkg.GetValueChar
25955          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25959    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25956          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25957    AND l_bflow_method_code = 'PRIOR_ENTRY'
25958 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25960          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25961        )
25962    THEN
25963          xla_ae_lines_pkg.BflowUpgEntry
25964            (p_business_method_code    => l_bflow_method_code
25965            ,p_business_class_code     => l_bflow_class_code
25966            ,p_balance_type            => l_balance_type_code);
25967    ELSE
25968       NULL;
25969 -- No business flow processing for business flow method of NONE.
25970    END IF;
25971 
25972    --
25973    -- call analytical criteria
25974    --
25975    
25976    --
25977    -- call description
25978    --
25979    -- No description or it is inherited.
25980    --
25981    -- call ADRs
25982    -- Bug 4922099
25983    --
25984    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25985         (NVL(l_actual_upg_option, 'N') = 'O') OR
25986         (NVL(l_enc_upg_option, 'N') = 'O')
25987       )
25988    THEN
25989    NULL;
25990    --
25991    --
25992    
25993   l_ccid := AcctDerRule_12(
25994            p_application_id           => p_application_id
25995          , p_ae_header_id             => l_ae_header_id 
25996 , p_source_4 => p_source_4
25997 , p_source_5 => p_source_5
25998 , p_source_6 => p_source_6
25999          , x_transaction_coa_id       => l_adr_transaction_coa_id
26000          , x_accounting_coa_id        => l_adr_accounting_coa_id
26001          , x_value_type_code          => l_adr_value_type_code
26002          , p_side                     => 'NA'
26003    );
26004 
26005    xla_ae_lines_pkg.set_ccid(
26006     p_code_combination_id          => l_ccid
26007   , p_value_type_code              => l_adr_value_type_code
26008   , p_transaction_coa_id           => l_adr_transaction_coa_id
26009   , p_accounting_coa_id            => l_adr_accounting_coa_id
26010   , p_adr_code                     => 'PA_COST_ACCT_RULE'
26011   , p_adr_type_code                => 'S'
26012   , p_component_type               => l_component_type
26013   , p_component_code               => l_component_code
26014   , p_component_type_code          => l_component_type_code
26015   , p_component_appl_id            => l_component_appl_id
26016   , p_amb_context_code             => l_amb_context_code
26017   , p_side                         => 'NA'
26018   );
26019 
26020 
26021    --
26022    --
26023    END IF;
26024    --
26025    -- Bug 4922099
26026    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26027           (NVL(l_enc_upg_option, 'N') = 'O')
26028         ) AND
26029         (l_bflow_method_code = 'PRIOR_ENTRY')
26030       )
26031    THEN
26032       IF
26033       --
26034       1 = 2
26035       --
26036       THEN
26037       xla_accounting_err_pkg.build_message
26038                                     (p_appli_s_name            => 'XLA'
26039                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26040                                     ,p_token_1                 => 'LINE_NUMBER'
26041                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26042                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26043                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26044                                                                              l_component_type
26045                                                                             ,l_component_code
26046                                                                             ,l_component_type_code
26047                                                                             ,l_component_appl_id
26048                                                                             ,l_amb_context_code
26049                                                                             ,l_entity_code
26050                                                                             ,l_event_class_code
26051                                                                            )
26052                                     ,p_token_3                 => 'OWNER'
26053                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26054                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26055                                                                           ,p_lookup_code    => l_component_type_code
26056                                                                          )
26057                                     ,p_token_4                 => 'PRODUCT_NAME'
26058                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26059                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26060                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26061                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26062                                     ,p_ae_header_id            =>  NULL
26063                                        );
26064 
26065         IF (C_LEVEL_ERROR>= g_log_level) THEN
26066                  trace
26067                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26068                       ,p_level    => C_LEVEL_ERROR
26069                       ,p_module   => l_log_module);
26070         END IF;
26071       END IF;
26072    END IF;
26073    --
26074    --
26075    ------------------------------------------------------------------------------------------------
26079    ------------------------------------------------------------------------------------------------
26076    -- 4219869 Business Flow
26077    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26078    -- Prior Entry.  Currently, the following code is always generated.
26080    XLA_AE_LINES_PKG.ValidateCurrentLine;
26081 
26082    ------------------------------------------------------------------------------------
26083    -- 4219869 Business Flow
26084    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26085    ------------------------------------------------------------------------------------
26086    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26087 
26088    ----------------------------------------------------------------------------------
26089    -- 4219869 Business Flow
26090    -- Update journal entry status -- Need to generate this within IF <condition>
26091    ----------------------------------------------------------------------------------
26092    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26093          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26094          ,p_balance_type_code => l_balance_type_code
26095          );
26096 
26097    -------------------------------------------------------------------------------------------
26098    -- 4262811 - Generate the Accrual Reversal lines
26099    -------------------------------------------------------------------------------------------
26100    BEGIN
26101       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26102                               (g_array_event(p_event_id).array_value_num('header_index'));
26103       IF l_acc_rev_flag IS NULL THEN
26104          l_acc_rev_flag := 'N';
26105       END IF;
26106    EXCEPTION
26107       WHEN OTHERS THEN
26108          l_acc_rev_flag := 'N';
26109    END;
26110    --
26111    IF (l_acc_rev_flag = 'Y') THEN
26112 
26113        -- 4645092  ------------------------------------------------------------------------------
26114        -- To allow MPA report to determine if it should generate report process
26115        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26116        ------------------------------------------------------------------------------------------
26117 
26118        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26119        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26120 
26121        --
26122        -- Update the line information that should be overwritten
26123        --
26124        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26125                                          p_header_num   => 1);
26126        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26127 
26128        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26129 
26130        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26131           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26132        END IF;
26133 
26134       --
26135       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26136       --
26137       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26138           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26139       ELSE
26140           ---------------------------------------------------------------------------------------------------
26141           -- 4262811a Switch Sign
26142           ---------------------------------------------------------------------------------------------------
26143           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26144           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26145                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26146           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26147                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26148           -- 5132302
26149           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26150                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26151 
26152       END IF;
26153 
26154       -- 4955764
26155       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26156       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26157 
26158 
26159       XLA_AE_LINES_PKG.ValidateCurrentLine;
26160       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26161 
26162       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26163                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26164                ,p_balance_type_code => l_balance_type_code);
26165 
26166    END IF;
26167 
26168    -----------------------------------------------------------------------------------------
26169    -- 4262811 Multiperiod Accounting
26170    -----------------------------------------------------------------------------------------
26171      -- No MPA option is assigned.
26172 
26173 
26174 END IF;
26175 --
26176 
26177 --
26178 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26179    trace
26180       (p_msg      => 'END of AcctLineType_66'
26181       ,p_level    => C_LEVEL_PROCEDURE
26182       ,p_module   => l_log_module);
26183 END IF;
26184 --
26185 EXCEPTION
26186   WHEN xla_exceptions_pkg.application_exception THEN
26187       RAISE;
26188   WHEN OTHERS THEN
26189        xla_exceptions_pkg.raise_message
26193 
26190            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_66');
26191 END AcctLineType_66;
26192 --
26194 ---------------------------------------
26195 --
26196 -- PRIVATE FUNCTION
26197 --         AcctLineType_67
26198 --
26199 ---------------------------------------
26200 PROCEDURE AcctLineType_67 (
26201   p_application_id        IN NUMBER
26202  ,p_event_id              IN NUMBER
26203  ,p_calculate_acctd_flag  IN VARCHAR2
26204  ,p_calculate_g_l_flag    IN VARCHAR2
26205  ,p_actual_flag           IN OUT VARCHAR2
26206  ,p_balance_type_code     OUT VARCHAR2
26207  ,p_gain_or_loss_ref      OUT VARCHAR2
26208  
26209 --Cost CCID
26210  , p_source_4            IN NUMBER
26211 --Allow Account Override Flag
26212  , p_source_5            IN VARCHAR2
26213 --Adjustment Cost CCID
26214  , p_source_6            IN NUMBER
26215 --Cost Clearing CCID
26216  , p_source_7            IN NUMBER
26217 --Exchange Rate Variance Flag
26218  , p_source_22            IN VARCHAR2
26219 --Reversing Line Flag
26220  , p_source_23            IN VARCHAR2
26221 --Actual Upgrade Credit Accounting Class
26222  , p_source_24            IN VARCHAR2
26223 --Entered Raw Cost
26224  , p_source_25            IN NUMBER
26225 --Entered Currency Code
26226  , p_source_26            IN VARCHAR2
26227 --Accounted Raw Cost
26228  , p_source_27            IN NUMBER
26229 --Exchange Rate Date
26230  , p_source_28            IN DATE
26231 --Exchange Rate
26232  , p_source_29            IN NUMBER
26233 --Exchange Rate Type
26234  , p_source_30            IN VARCHAR2
26235 --Actual Upgrade Debit Accounting Class
26236  , p_source_31            IN VARCHAR2
26237 --Use Actuals Upgrade Attributes Flag
26238  , p_source_32            IN VARCHAR2
26239 --Expenditure Item ID
26240  , p_source_33            IN NUMBER
26241 --Cost Distribution Line Number
26242  , p_source_34            IN NUMBER
26243 --Line Type
26244  , p_source_35            IN VARCHAR2
26245  , p_source_35_meaning    IN VARCHAR2
26246 --Reversed Line Number
26247  , p_source_36            IN NUMBER
26248 )
26249 IS
26250 
26251 l_component_type              VARCHAR2(80);
26252 l_component_code              VARCHAR2(30);
26253 l_component_type_code         VARCHAR2(1);
26254 l_component_appl_id           INTEGER;
26255 l_amb_context_code            VARCHAR2(30);
26256 l_entity_code                 VARCHAR2(30);
26257 l_event_class_code            VARCHAR2(30);
26258 l_ae_header_id                NUMBER;
26259 l_event_type_code             VARCHAR2(30);
26260 l_line_definition_code        VARCHAR2(30);
26261 l_line_definition_owner_code  VARCHAR2(1);
26262 --
26263 -- adr variables
26264 l_segment                     VARCHAR2(30);
26265 l_ccid                        NUMBER;
26266 l_adr_transaction_coa_id      NUMBER;
26267 l_adr_accounting_coa_id       NUMBER;
26268 l_adr_flexfield_segment_code  VARCHAR2(30);
26269 l_adr_flex_value_set_id       NUMBER;
26270 l_adr_value_type_code         VARCHAR2(30);
26271 l_adr_value_combination_id    NUMBER;
26272 l_adr_value_segment_code      VARCHAR2(30);
26273 
26274 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26275 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26276 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26277 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26278 
26279 -- 4262811 Variables ------------------------------------------------------------------------------------------
26280 l_entered_amt_idx             NUMBER;
26281 l_accted_amt_idx              NUMBER;
26282 l_acc_rev_flag                VARCHAR2(1);
26283 l_accrual_line_num            NUMBER;
26284 l_tmp_amt                     NUMBER;
26285 l_acc_rev_natural_side_code   VARCHAR2(1);
26286 
26287 l_num_entries                 NUMBER;
26288 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26289 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26290 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26291 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26292 l_recog_line_1                NUMBER;
26293 l_recog_line_2                NUMBER;
26294 
26295 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26296 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26297 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26298 
26299 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26300 
26301 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26302 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26303 
26304 ---------------------------------------------------------------------------------------------------------------
26305 
26306 
26307 --
26308 -- bulk performance
26309 --
26310 l_balance_type_code           VARCHAR2(1);
26311 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26312 l_log_module                  VARCHAR2(240);
26313 
26314 --
26315 -- Upgrade strategy
26316 --
26317 l_actual_upg_option           VARCHAR2(1);
26318 l_enc_upg_option           VARCHAR2(1);
26319 
26320 --
26321 BEGIN
26322 --
26323 IF g_log_enabled THEN
26324       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
26325 END IF;
26326 --
26327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26328 
26329       trace
26330          (p_msg      => 'BEGIN of AcctLineType_67'
26331          ,p_level    => C_LEVEL_PROCEDURE
26332          ,p_module   => l_log_module);
26333 
26334 END IF;
26335 --
26336 l_component_type             := 'AMB_JLT';
26340 l_amb_context_code           := 'DEFAULT';
26337 l_component_code             := 'PA_RAW_COST';
26338 l_component_type_code        := 'S';
26339 l_component_appl_id          :=  275;
26341 l_entity_code                := 'EXPENDITURES';
26342 l_event_class_code           := 'SUPPLIER_COST';
26343 l_event_type_code            := 'SUPPLIER_COST_ALL';
26344 l_line_definition_owner_code := 'S';
26345 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
26346 --
26347 l_balance_type_code          := 'A';
26348 l_segment                     := NULL;
26349 l_ccid                        := NULL;
26350 l_adr_transaction_coa_id      := NULL;
26351 l_adr_accounting_coa_id       := NULL;
26352 l_adr_flexfield_segment_code  := NULL;
26353 l_adr_flex_value_set_id       := NULL;
26354 l_adr_value_type_code         := NULL;
26355 l_adr_value_combination_id    := NULL;
26356 l_adr_value_segment_code      := NULL;
26357 
26358 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26359 l_bflow_class_code           := '';    -- 4219869 Business Flow
26360 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26361 l_budgetary_control_flag     := 'N';
26362 
26363 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26364 l_bflow_applied_to_amt       := NULL; -- 5132302
26365 l_entered_amt_idx            := NULL;          -- 4262811
26366 l_accted_amt_idx             := NULL;          -- 4262811
26367 l_acc_rev_flag               := NULL;          -- 4262811
26368 l_accrual_line_num           := NULL;          -- 4262811
26369 l_tmp_amt                    := NULL;          -- 4262811
26370 --
26371  
26372 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26373     l_balance_type_code <> 'B' THEN
26374 IF NVL(p_source_22,'
26375 ') =  'N'
26376  THEN 
26377 
26378    --
26379    XLA_AE_LINES_PKG.SetNewLine;
26380 
26381    p_balance_type_code          := l_balance_type_code;
26382    -- set the flag so later we will know whether the gain loss line needs to be created
26383    
26384    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26385      p_actual_flag :='A';
26386    END IF;
26387 
26388    --
26389    -- bulk performance
26390    --
26391    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26392                                       p_header_num   => 0); -- 4262811
26393    --
26394    -- set accounting line options
26395    --
26396    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26397            p_natural_side_code          => 'D'
26398          , p_gain_or_loss_flag          => 'N'
26399          , p_gl_transfer_mode_code      => 'S'
26400          , p_acct_entry_type_code       => 'A'
26401          , p_switch_side_flag           => 'Y'
26402          , p_merge_duplicate_code       => 'N'
26403          );
26404    --
26405    l_acc_rev_natural_side_code := 'C';  -- 4262811
26406    -- 
26407    --
26408    -- set accounting line type info
26409    --
26410    xla_ae_lines_pkg.SetAcctLineType
26411       (p_component_type             => l_component_type
26412       ,p_event_type_code            => l_event_type_code
26413       ,p_line_definition_owner_code => l_line_definition_owner_code
26414       ,p_line_definition_code       => l_line_definition_code
26415       ,p_accounting_line_code       => l_component_code
26416       ,p_accounting_line_type_code  => l_component_type_code
26417       ,p_accounting_line_appl_id    => l_component_appl_id
26418       ,p_amb_context_code           => l_amb_context_code
26419       ,p_entity_code                => l_entity_code
26420       ,p_event_class_code           => l_event_class_code);
26421    --
26422    -- set accounting class
26423    --
26424    xla_ae_lines_pkg.SetAcctClass(
26425            p_accounting_class_code  => 'COST'
26426          , p_ae_header_id           => l_ae_header_id
26427          );
26428 
26429    --
26430    -- set rounding class
26431    --
26432    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26433                       'COST';
26434 
26435    --
26436    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26437    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26438    --
26439    -- bulk performance
26440    --
26441    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26442 
26443    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26444       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26445 
26446    -- 4955764
26447    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26448       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26449 
26450    -- 4458381 Public Sector Enh
26451    
26452    --
26453    -- set accounting attributes for the line type
26454    --
26455    l_entered_amt_idx := 22;
26456    l_accted_amt_idx  := 27;
26457    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26458    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
26459    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
26460    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
26461    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
26462    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
26463    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
26464    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
26465    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
26466    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
26467    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
26471    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
26468    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
26469    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
26470    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
26472    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
26473    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
26474    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
26475    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
26476    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
26477    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
26478    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
26479    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
26480    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
26481    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
26482    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
26483    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
26484    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
26485    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
26486    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
26487    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
26488    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
26489    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
26490    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
26491    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
26492    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
26493    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
26494    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
26495    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
26496    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
26497    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
26498    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
26499    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
26500    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
26501    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
26502    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
26503    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
26504    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
26505    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
26506    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
26507    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
26508    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
26509    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
26510    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
26511    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
26512    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
26513    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
26514    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
26515    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
26516    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
26517    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
26518 
26519    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26520    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26521 
26522    ---------------------------------------------------------------------------------------------------------------
26523    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26524    ---------------------------------------------------------------------------------------------------------------
26525    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26526 
26527    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26528    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26529 
26530    IF xla_accounting_cache_pkg.GetValueChar
26531          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26532          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26533    AND l_bflow_method_code = 'PRIOR_ENTRY'
26534 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26535    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26536          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26537        )
26538    THEN
26539          xla_ae_lines_pkg.BflowUpgEntry
26540            (p_business_method_code    => l_bflow_method_code
26541            ,p_business_class_code     => l_bflow_class_code
26542            ,p_balance_type            => l_balance_type_code);
26543    ELSE
26544       NULL;
26545 -- No business flow processing for business flow method of NONE.
26546    END IF;
26547 
26548    --
26549    -- call analytical criteria
26550    --
26551    
26552    --
26553    -- call description
26554    --
26555    -- No description or it is inherited.
26556    --
26557    -- call ADRs
26558    -- Bug 4922099
26559    --
26560    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26561         (NVL(l_actual_upg_option, 'N') = 'O') OR
26562         (NVL(l_enc_upg_option, 'N') = 'O')
26563       )
26564    THEN
26565    NULL;
26566    --
26567    --
26568    
26569   l_ccid := AcctDerRule_12(
26570            p_application_id           => p_application_id
26571          , p_ae_header_id             => l_ae_header_id 
26572 , p_source_4 => p_source_4
26573 , p_source_5 => p_source_5
26574 , p_source_6 => p_source_6
26575          , x_transaction_coa_id       => l_adr_transaction_coa_id
26579    );
26576          , x_accounting_coa_id        => l_adr_accounting_coa_id
26577          , x_value_type_code          => l_adr_value_type_code
26578          , p_side                     => 'NA'
26580 
26581    xla_ae_lines_pkg.set_ccid(
26582     p_code_combination_id          => l_ccid
26583   , p_value_type_code              => l_adr_value_type_code
26584   , p_transaction_coa_id           => l_adr_transaction_coa_id
26585   , p_accounting_coa_id            => l_adr_accounting_coa_id
26586   , p_adr_code                     => 'PA_COST_ACCT_RULE'
26587   , p_adr_type_code                => 'S'
26588   , p_component_type               => l_component_type
26589   , p_component_code               => l_component_code
26590   , p_component_type_code          => l_component_type_code
26591   , p_component_appl_id            => l_component_appl_id
26592   , p_amb_context_code             => l_amb_context_code
26593   , p_side                         => 'NA'
26594   );
26595 
26596 
26597    --
26598    --
26599    END IF;
26600    --
26601    -- Bug 4922099
26602    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26603           (NVL(l_enc_upg_option, 'N') = 'O')
26604         ) AND
26605         (l_bflow_method_code = 'PRIOR_ENTRY')
26606       )
26607    THEN
26608       IF
26609       --
26610       1 = 2
26611       --
26612       THEN
26613       xla_accounting_err_pkg.build_message
26614                                     (p_appli_s_name            => 'XLA'
26615                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26616                                     ,p_token_1                 => 'LINE_NUMBER'
26617                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26618                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26619                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26620                                                                              l_component_type
26621                                                                             ,l_component_code
26622                                                                             ,l_component_type_code
26623                                                                             ,l_component_appl_id
26624                                                                             ,l_amb_context_code
26625                                                                             ,l_entity_code
26626                                                                             ,l_event_class_code
26627                                                                            )
26628                                     ,p_token_3                 => 'OWNER'
26629                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26630                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26631                                                                           ,p_lookup_code    => l_component_type_code
26632                                                                          )
26633                                     ,p_token_4                 => 'PRODUCT_NAME'
26634                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26635                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26636                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26637                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26638                                     ,p_ae_header_id            =>  NULL
26639                                        );
26640 
26641         IF (C_LEVEL_ERROR>= g_log_level) THEN
26642                  trace
26643                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26644                       ,p_level    => C_LEVEL_ERROR
26645                       ,p_module   => l_log_module);
26646         END IF;
26647       END IF;
26648    END IF;
26649    --
26650    --
26651    ------------------------------------------------------------------------------------------------
26652    -- 4219869 Business Flow
26653    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26654    -- Prior Entry.  Currently, the following code is always generated.
26655    ------------------------------------------------------------------------------------------------
26656    XLA_AE_LINES_PKG.ValidateCurrentLine;
26657 
26658    ------------------------------------------------------------------------------------
26659    -- 4219869 Business Flow
26660    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26661    ------------------------------------------------------------------------------------
26662    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26663 
26664    ----------------------------------------------------------------------------------
26665    -- 4219869 Business Flow
26666    -- Update journal entry status -- Need to generate this within IF <condition>
26667    ----------------------------------------------------------------------------------
26668    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26669          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26670          ,p_balance_type_code => l_balance_type_code
26671          );
26672 
26673    -------------------------------------------------------------------------------------------
26674    -- 4262811 - Generate the Accrual Reversal lines
26675    -------------------------------------------------------------------------------------------
26676    BEGIN
26677       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26678                               (g_array_event(p_event_id).array_value_num('header_index'));
26682    EXCEPTION
26679       IF l_acc_rev_flag IS NULL THEN
26680          l_acc_rev_flag := 'N';
26681       END IF;
26683       WHEN OTHERS THEN
26684          l_acc_rev_flag := 'N';
26685    END;
26686    --
26687    IF (l_acc_rev_flag = 'Y') THEN
26688 
26689        -- 4645092  ------------------------------------------------------------------------------
26690        -- To allow MPA report to determine if it should generate report process
26691        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26692        ------------------------------------------------------------------------------------------
26693 
26694        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26695        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26696 
26697        --
26698        -- Update the line information that should be overwritten
26699        --
26700        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26701                                          p_header_num   => 1);
26702        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26703 
26704        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26705 
26706        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26707           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26708        END IF;
26709 
26710       --
26711       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26712       --
26713       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26714           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26715       ELSE
26716           ---------------------------------------------------------------------------------------------------
26717           -- 4262811a Switch Sign
26718           ---------------------------------------------------------------------------------------------------
26719           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26720           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26721                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26722           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26723                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26724           -- 5132302
26725           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26726                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26727 
26728       END IF;
26729 
26730       -- 4955764
26731       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26732       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26733 
26734 
26735       XLA_AE_LINES_PKG.ValidateCurrentLine;
26736       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26737 
26738       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26739                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26740                ,p_balance_type_code => l_balance_type_code);
26741 
26742    END IF;
26743 
26744    -----------------------------------------------------------------------------------------
26745    -- 4262811 Multiperiod Accounting
26746    -----------------------------------------------------------------------------------------
26747      -- No MPA option is assigned.
26748 
26749 
26750 END IF;
26751 END IF;
26752 --
26753 
26754 --
26755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26756    trace
26757       (p_msg      => 'END of AcctLineType_67'
26758       ,p_level    => C_LEVEL_PROCEDURE
26759       ,p_module   => l_log_module);
26760 END IF;
26761 --
26762 EXCEPTION
26763   WHEN xla_exceptions_pkg.application_exception THEN
26764       RAISE;
26765   WHEN OTHERS THEN
26766        xla_exceptions_pkg.raise_message
26767            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_67');
26768 END AcctLineType_67;
26769 --
26770 
26771 ---------------------------------------
26772 --
26773 -- PRIVATE FUNCTION
26774 --         AcctLineType_68
26775 --
26776 ---------------------------------------
26777 PROCEDURE AcctLineType_68 (
26778   p_application_id        IN NUMBER
26779  ,p_event_id              IN NUMBER
26780  ,p_calculate_acctd_flag  IN VARCHAR2
26781  ,p_calculate_g_l_flag    IN VARCHAR2
26782  ,p_actual_flag           IN OUT VARCHAR2
26783  ,p_balance_type_code     OUT VARCHAR2
26784  ,p_gain_or_loss_ref      OUT VARCHAR2
26785  
26786 --Cost CCID
26787  , p_source_4            IN NUMBER
26788 --Allow Account Override Flag
26789  , p_source_5            IN VARCHAR2
26790 --Adjustment Cost CCID
26791  , p_source_6            IN NUMBER
26792 --Cost Clearing CCID
26793  , p_source_7            IN NUMBER
26794 --Reversing Line Flag
26795  , p_source_23            IN VARCHAR2
26796 --Actual Upgrade Credit Accounting Class
26797  , p_source_24            IN VARCHAR2
26798 --Entered Raw Cost
26799  , p_source_25            IN NUMBER
26800 --Entered Currency Code
26801  , p_source_26            IN VARCHAR2
26802 --Accounted Raw Cost
26803  , p_source_27            IN NUMBER
26804 --Exchange Rate Date
26805  , p_source_28            IN DATE
26806 --Exchange Rate
26807  , p_source_29            IN NUMBER
26808 --Exchange Rate Type
26809  , p_source_30            IN VARCHAR2
26810 --Actual Upgrade Debit Accounting Class
26811  , p_source_31            IN VARCHAR2
26815  , p_source_33            IN NUMBER
26812 --Use Actuals Upgrade Attributes Flag
26813  , p_source_32            IN VARCHAR2
26814 --Expenditure Item ID
26816 --Cost Distribution Line Number
26817  , p_source_34            IN NUMBER
26818 --Line Type
26819  , p_source_35            IN VARCHAR2
26820  , p_source_35_meaning    IN VARCHAR2
26821 --Reversed Line Number
26822  , p_source_36            IN NUMBER
26823 )
26824 IS
26825 
26826 l_component_type              VARCHAR2(80);
26827 l_component_code              VARCHAR2(30);
26828 l_component_type_code         VARCHAR2(1);
26829 l_component_appl_id           INTEGER;
26830 l_amb_context_code            VARCHAR2(30);
26831 l_entity_code                 VARCHAR2(30);
26832 l_event_class_code            VARCHAR2(30);
26833 l_ae_header_id                NUMBER;
26834 l_event_type_code             VARCHAR2(30);
26835 l_line_definition_code        VARCHAR2(30);
26836 l_line_definition_owner_code  VARCHAR2(1);
26837 --
26838 -- adr variables
26839 l_segment                     VARCHAR2(30);
26840 l_ccid                        NUMBER;
26841 l_adr_transaction_coa_id      NUMBER;
26842 l_adr_accounting_coa_id       NUMBER;
26843 l_adr_flexfield_segment_code  VARCHAR2(30);
26844 l_adr_flex_value_set_id       NUMBER;
26845 l_adr_value_type_code         VARCHAR2(30);
26846 l_adr_value_combination_id    NUMBER;
26847 l_adr_value_segment_code      VARCHAR2(30);
26848 
26849 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26850 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26851 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26852 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26853 
26854 -- 4262811 Variables ------------------------------------------------------------------------------------------
26855 l_entered_amt_idx             NUMBER;
26856 l_accted_amt_idx              NUMBER;
26857 l_acc_rev_flag                VARCHAR2(1);
26858 l_accrual_line_num            NUMBER;
26859 l_tmp_amt                     NUMBER;
26860 l_acc_rev_natural_side_code   VARCHAR2(1);
26861 
26862 l_num_entries                 NUMBER;
26863 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26864 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26865 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26866 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26867 l_recog_line_1                NUMBER;
26868 l_recog_line_2                NUMBER;
26869 
26870 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26871 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26872 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26873 
26874 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26875 
26876 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26877 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26878 
26879 ---------------------------------------------------------------------------------------------------------------
26880 
26881 
26882 --
26883 -- bulk performance
26884 --
26885 l_balance_type_code           VARCHAR2(1);
26886 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26887 l_log_module                  VARCHAR2(240);
26888 
26889 --
26890 -- Upgrade strategy
26891 --
26892 l_actual_upg_option           VARCHAR2(1);
26893 l_enc_upg_option           VARCHAR2(1);
26894 
26895 --
26896 BEGIN
26897 --
26898 IF g_log_enabled THEN
26899       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
26900 END IF;
26901 --
26902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26903 
26904       trace
26905          (p_msg      => 'BEGIN of AcctLineType_68'
26906          ,p_level    => C_LEVEL_PROCEDURE
26907          ,p_module   => l_log_module);
26908 
26909 END IF;
26910 --
26911 l_component_type             := 'AMB_JLT';
26912 l_component_code             := 'PA_RAW_COST';
26913 l_component_type_code        := 'S';
26914 l_component_appl_id          :=  275;
26915 l_amb_context_code           := 'DEFAULT';
26916 l_entity_code                := 'EXPENDITURES';
26917 l_event_class_code           := 'INVENTORY_COST';
26918 l_event_type_code            := 'INVENTORY_COST_ALL';
26919 l_line_definition_owner_code := 'S';
26920 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
26921 --
26922 l_balance_type_code          := 'A';
26923 l_segment                     := NULL;
26924 l_ccid                        := NULL;
26925 l_adr_transaction_coa_id      := NULL;
26926 l_adr_accounting_coa_id       := NULL;
26927 l_adr_flexfield_segment_code  := NULL;
26928 l_adr_flex_value_set_id       := NULL;
26929 l_adr_value_type_code         := NULL;
26930 l_adr_value_combination_id    := NULL;
26931 l_adr_value_segment_code      := NULL;
26932 
26933 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26934 l_bflow_class_code           := '';    -- 4219869 Business Flow
26935 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26936 l_budgetary_control_flag     := 'N';
26937 
26938 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26939 l_bflow_applied_to_amt       := NULL; -- 5132302
26940 l_entered_amt_idx            := NULL;          -- 4262811
26941 l_accted_amt_idx             := NULL;          -- 4262811
26942 l_acc_rev_flag               := NULL;          -- 4262811
26943 l_accrual_line_num           := NULL;          -- 4262811
26944 l_tmp_amt                    := NULL;          -- 4262811
26945 --
26946  
26947 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26948     l_balance_type_code <> 'B' THEN
26952 
26949 
26950    --
26951    XLA_AE_LINES_PKG.SetNewLine;
26953    p_balance_type_code          := l_balance_type_code;
26954    -- set the flag so later we will know whether the gain loss line needs to be created
26955    
26956    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26957      p_actual_flag :='A';
26958    END IF;
26959 
26960    --
26961    -- bulk performance
26962    --
26963    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26964                                       p_header_num   => 0); -- 4262811
26965    --
26966    -- set accounting line options
26967    --
26968    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26969            p_natural_side_code          => 'D'
26970          , p_gain_or_loss_flag          => 'N'
26971          , p_gl_transfer_mode_code      => 'S'
26972          , p_acct_entry_type_code       => 'A'
26973          , p_switch_side_flag           => 'Y'
26974          , p_merge_duplicate_code       => 'N'
26975          );
26976    --
26977    l_acc_rev_natural_side_code := 'C';  -- 4262811
26978    -- 
26979    --
26980    -- set accounting line type info
26981    --
26982    xla_ae_lines_pkg.SetAcctLineType
26983       (p_component_type             => l_component_type
26984       ,p_event_type_code            => l_event_type_code
26985       ,p_line_definition_owner_code => l_line_definition_owner_code
26986       ,p_line_definition_code       => l_line_definition_code
26987       ,p_accounting_line_code       => l_component_code
26988       ,p_accounting_line_type_code  => l_component_type_code
26989       ,p_accounting_line_appl_id    => l_component_appl_id
26990       ,p_amb_context_code           => l_amb_context_code
26991       ,p_entity_code                => l_entity_code
26992       ,p_event_class_code           => l_event_class_code);
26993    --
26994    -- set accounting class
26995    --
26996    xla_ae_lines_pkg.SetAcctClass(
26997            p_accounting_class_code  => 'COST'
26998          , p_ae_header_id           => l_ae_header_id
26999          );
27000 
27001    --
27002    -- set rounding class
27003    --
27004    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27005                       'COST';
27006 
27007    --
27008    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27009    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27010    --
27011    -- bulk performance
27012    --
27013    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27014 
27015    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27016       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27017 
27018    -- 4955764
27019    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27020       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27021 
27022    -- 4458381 Public Sector Enh
27023    
27024    --
27025    -- set accounting attributes for the line type
27026    --
27027    l_entered_amt_idx := 22;
27028    l_accted_amt_idx  := 27;
27029    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27030    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27031    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
27032    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
27033    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
27034    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
27035    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
27036    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
27037    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
27038    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
27039    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
27040    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
27041    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
27042    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
27043    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
27044    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
27045    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
27046    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
27047    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
27048    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
27049    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
27050    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
27051    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
27052    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
27053    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
27054    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
27055    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
27056    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
27057    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
27058    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
27059    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
27060    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
27061    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
27062    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
27063    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
27064    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
27065    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
27066    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
27070    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
27067    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
27068    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
27069    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
27071    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
27072    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
27073    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
27074    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
27075    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
27076    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
27077    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
27078    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
27079    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
27080    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
27081    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
27082    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
27083    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
27084    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
27085    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
27086    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
27087    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
27088    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
27089    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
27090 
27091    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27092    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27093 
27094    ---------------------------------------------------------------------------------------------------------------
27095    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27096    ---------------------------------------------------------------------------------------------------------------
27097    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27098 
27099    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27100    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27101 
27102    IF xla_accounting_cache_pkg.GetValueChar
27103          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27104          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27105    AND l_bflow_method_code = 'PRIOR_ENTRY'
27106 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27107    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27108          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27109        )
27110    THEN
27111          xla_ae_lines_pkg.BflowUpgEntry
27112            (p_business_method_code    => l_bflow_method_code
27113            ,p_business_class_code     => l_bflow_class_code
27114            ,p_balance_type            => l_balance_type_code);
27115    ELSE
27116       NULL;
27117 -- No business flow processing for business flow method of NONE.
27118    END IF;
27119 
27120    --
27121    -- call analytical criteria
27122    --
27123    
27124    --
27125    -- call description
27126    --
27127    -- No description or it is inherited.
27128    --
27129    -- call ADRs
27130    -- Bug 4922099
27131    --
27132    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27133         (NVL(l_actual_upg_option, 'N') = 'O') OR
27134         (NVL(l_enc_upg_option, 'N') = 'O')
27135       )
27136    THEN
27137    NULL;
27138    --
27139    --
27140    
27141   l_ccid := AcctDerRule_12(
27142            p_application_id           => p_application_id
27143          , p_ae_header_id             => l_ae_header_id 
27144 , p_source_4 => p_source_4
27145 , p_source_5 => p_source_5
27146 , p_source_6 => p_source_6
27147          , x_transaction_coa_id       => l_adr_transaction_coa_id
27148          , x_accounting_coa_id        => l_adr_accounting_coa_id
27149          , x_value_type_code          => l_adr_value_type_code
27150          , p_side                     => 'NA'
27151    );
27152 
27153    xla_ae_lines_pkg.set_ccid(
27154     p_code_combination_id          => l_ccid
27155   , p_value_type_code              => l_adr_value_type_code
27156   , p_transaction_coa_id           => l_adr_transaction_coa_id
27157   , p_accounting_coa_id            => l_adr_accounting_coa_id
27158   , p_adr_code                     => 'PA_COST_ACCT_RULE'
27159   , p_adr_type_code                => 'S'
27160   , p_component_type               => l_component_type
27161   , p_component_code               => l_component_code
27162   , p_component_type_code          => l_component_type_code
27163   , p_component_appl_id            => l_component_appl_id
27164   , p_amb_context_code             => l_amb_context_code
27165   , p_side                         => 'NA'
27166   );
27167 
27168 
27169    --
27170    --
27171    END IF;
27172    --
27173    -- Bug 4922099
27174    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27175           (NVL(l_enc_upg_option, 'N') = 'O')
27176         ) AND
27177         (l_bflow_method_code = 'PRIOR_ENTRY')
27178       )
27179    THEN
27180       IF
27181       --
27182       1 = 2
27183       --
27184       THEN
27185       xla_accounting_err_pkg.build_message
27186                                     (p_appli_s_name            => 'XLA'
27187                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27188                                     ,p_token_1                 => 'LINE_NUMBER'
27189                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27193                                                                             ,l_component_code
27190                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27191                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27192                                                                              l_component_type
27194                                                                             ,l_component_type_code
27195                                                                             ,l_component_appl_id
27196                                                                             ,l_amb_context_code
27197                                                                             ,l_entity_code
27198                                                                             ,l_event_class_code
27199                                                                            )
27200                                     ,p_token_3                 => 'OWNER'
27201                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27202                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27203                                                                           ,p_lookup_code    => l_component_type_code
27204                                                                          )
27205                                     ,p_token_4                 => 'PRODUCT_NAME'
27206                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27207                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27208                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27209                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27210                                     ,p_ae_header_id            =>  NULL
27211                                        );
27212 
27213         IF (C_LEVEL_ERROR>= g_log_level) THEN
27214                  trace
27215                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27216                       ,p_level    => C_LEVEL_ERROR
27217                       ,p_module   => l_log_module);
27218         END IF;
27219       END IF;
27220    END IF;
27221    --
27222    --
27223    ------------------------------------------------------------------------------------------------
27224    -- 4219869 Business Flow
27225    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27226    -- Prior Entry.  Currently, the following code is always generated.
27227    ------------------------------------------------------------------------------------------------
27228    XLA_AE_LINES_PKG.ValidateCurrentLine;
27229 
27230    ------------------------------------------------------------------------------------
27231    -- 4219869 Business Flow
27232    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27233    ------------------------------------------------------------------------------------
27234    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27235 
27236    ----------------------------------------------------------------------------------
27237    -- 4219869 Business Flow
27238    -- Update journal entry status -- Need to generate this within IF <condition>
27239    ----------------------------------------------------------------------------------
27240    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27241          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27242          ,p_balance_type_code => l_balance_type_code
27243          );
27244 
27245    -------------------------------------------------------------------------------------------
27246    -- 4262811 - Generate the Accrual Reversal lines
27247    -------------------------------------------------------------------------------------------
27248    BEGIN
27249       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27250                               (g_array_event(p_event_id).array_value_num('header_index'));
27251       IF l_acc_rev_flag IS NULL THEN
27252          l_acc_rev_flag := 'N';
27253       END IF;
27254    EXCEPTION
27255       WHEN OTHERS THEN
27256          l_acc_rev_flag := 'N';
27257    END;
27258    --
27259    IF (l_acc_rev_flag = 'Y') THEN
27260 
27261        -- 4645092  ------------------------------------------------------------------------------
27262        -- To allow MPA report to determine if it should generate report process
27263        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27264        ------------------------------------------------------------------------------------------
27265 
27266        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27267        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27268 
27269        --
27270        -- Update the line information that should be overwritten
27271        --
27272        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27273                                          p_header_num   => 1);
27274        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27275 
27276        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27277 
27278        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27279           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27280        END IF;
27281 
27282       --
27283       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27284       --
27285       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27286           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27287       ELSE
27291           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27288           ---------------------------------------------------------------------------------------------------
27289           -- 4262811a Switch Sign
27290           ---------------------------------------------------------------------------------------------------
27292           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27293                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27294           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27295                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27296           -- 5132302
27297           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27298                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27299 
27300       END IF;
27301 
27302       -- 4955764
27303       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27304       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27305 
27306 
27307       XLA_AE_LINES_PKG.ValidateCurrentLine;
27308       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27309 
27310       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27311                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27312                ,p_balance_type_code => l_balance_type_code);
27313 
27314    END IF;
27315 
27316    -----------------------------------------------------------------------------------------
27317    -- 4262811 Multiperiod Accounting
27318    -----------------------------------------------------------------------------------------
27319      -- No MPA option is assigned.
27320 
27321 
27322 END IF;
27323 --
27324 
27325 --
27326 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27327    trace
27328       (p_msg      => 'END of AcctLineType_68'
27329       ,p_level    => C_LEVEL_PROCEDURE
27330       ,p_module   => l_log_module);
27331 END IF;
27332 --
27333 EXCEPTION
27334   WHEN xla_exceptions_pkg.application_exception THEN
27335       RAISE;
27336   WHEN OTHERS THEN
27337        xla_exceptions_pkg.raise_message
27338            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_68');
27339 END AcctLineType_68;
27340 --
27341 
27342 ---------------------------------------
27343 --
27344 -- PRIVATE FUNCTION
27345 --         AcctLineType_69
27346 --
27347 ---------------------------------------
27348 PROCEDURE AcctLineType_69 (
27349   p_application_id        IN NUMBER
27350  ,p_event_id              IN NUMBER
27351  ,p_calculate_acctd_flag  IN VARCHAR2
27352  ,p_calculate_g_l_flag    IN VARCHAR2
27353  ,p_actual_flag           IN OUT VARCHAR2
27354  ,p_balance_type_code     OUT VARCHAR2
27355  ,p_gain_or_loss_ref      OUT VARCHAR2
27356  
27357 --Cost CCID
27358  , p_source_4            IN NUMBER
27359 --Allow Account Override Flag
27360  , p_source_5            IN VARCHAR2
27361 --Adjustment Cost CCID
27362  , p_source_6            IN NUMBER
27363 --Cost Clearing CCID
27364  , p_source_7            IN NUMBER
27365 --Reversing Line Flag
27366  , p_source_23            IN VARCHAR2
27367 --Actual Upgrade Credit Accounting Class
27368  , p_source_24            IN VARCHAR2
27369 --Entered Raw Cost
27370  , p_source_25            IN NUMBER
27371 --Entered Currency Code
27372  , p_source_26            IN VARCHAR2
27373 --Accounted Raw Cost
27374  , p_source_27            IN NUMBER
27375 --Exchange Rate Date
27376  , p_source_28            IN DATE
27377 --Exchange Rate
27378  , p_source_29            IN NUMBER
27379 --Exchange Rate Type
27380  , p_source_30            IN VARCHAR2
27381 --Actual Upgrade Debit Accounting Class
27382  , p_source_31            IN VARCHAR2
27383 --Use Actuals Upgrade Attributes Flag
27384  , p_source_32            IN VARCHAR2
27385 --Expenditure Item ID
27386  , p_source_33            IN NUMBER
27387 --Cost Distribution Line Number
27388  , p_source_34            IN NUMBER
27389 --Line Type
27390  , p_source_35            IN VARCHAR2
27391  , p_source_35_meaning    IN VARCHAR2
27392 --Reversed Line Number
27393  , p_source_36            IN NUMBER
27394 )
27395 IS
27396 
27397 l_component_type              VARCHAR2(80);
27398 l_component_code              VARCHAR2(30);
27399 l_component_type_code         VARCHAR2(1);
27400 l_component_appl_id           INTEGER;
27401 l_amb_context_code            VARCHAR2(30);
27402 l_entity_code                 VARCHAR2(30);
27403 l_event_class_code            VARCHAR2(30);
27404 l_ae_header_id                NUMBER;
27405 l_event_type_code             VARCHAR2(30);
27406 l_line_definition_code        VARCHAR2(30);
27407 l_line_definition_owner_code  VARCHAR2(1);
27408 --
27409 -- adr variables
27410 l_segment                     VARCHAR2(30);
27411 l_ccid                        NUMBER;
27412 l_adr_transaction_coa_id      NUMBER;
27413 l_adr_accounting_coa_id       NUMBER;
27414 l_adr_flexfield_segment_code  VARCHAR2(30);
27415 l_adr_flex_value_set_id       NUMBER;
27416 l_adr_value_type_code         VARCHAR2(30);
27417 l_adr_value_combination_id    NUMBER;
27418 l_adr_value_segment_code      VARCHAR2(30);
27419 
27420 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27421 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27422 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27423 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27424 
27428 l_acc_rev_flag                VARCHAR2(1);
27425 -- 4262811 Variables ------------------------------------------------------------------------------------------
27426 l_entered_amt_idx             NUMBER;
27427 l_accted_amt_idx              NUMBER;
27429 l_accrual_line_num            NUMBER;
27430 l_tmp_amt                     NUMBER;
27431 l_acc_rev_natural_side_code   VARCHAR2(1);
27432 
27433 l_num_entries                 NUMBER;
27434 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27435 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27436 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27437 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27438 l_recog_line_1                NUMBER;
27439 l_recog_line_2                NUMBER;
27440 
27441 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27442 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27443 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27444 
27445 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27446 
27447 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27448 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27449 
27450 ---------------------------------------------------------------------------------------------------------------
27451 
27452 
27453 --
27454 -- bulk performance
27455 --
27456 l_balance_type_code           VARCHAR2(1);
27457 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27458 l_log_module                  VARCHAR2(240);
27459 
27460 --
27461 -- Upgrade strategy
27462 --
27463 l_actual_upg_option           VARCHAR2(1);
27464 l_enc_upg_option           VARCHAR2(1);
27465 
27466 --
27467 BEGIN
27468 --
27469 IF g_log_enabled THEN
27470       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
27471 END IF;
27472 --
27473 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27474 
27475       trace
27476          (p_msg      => 'BEGIN of AcctLineType_69'
27477          ,p_level    => C_LEVEL_PROCEDURE
27478          ,p_module   => l_log_module);
27479 
27480 END IF;
27481 --
27482 l_component_type             := 'AMB_JLT';
27483 l_component_code             := 'PA_RAW_COST';
27484 l_component_type_code        := 'S';
27485 l_component_appl_id          :=  275;
27486 l_amb_context_code           := 'DEFAULT';
27487 l_entity_code                := 'EXPENDITURES';
27488 l_event_class_code           := 'USG_COST';
27489 l_event_type_code            := 'USG_COST_ALL';
27490 l_line_definition_owner_code := 'S';
27491 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
27492 --
27493 l_balance_type_code          := 'A';
27494 l_segment                     := NULL;
27495 l_ccid                        := NULL;
27496 l_adr_transaction_coa_id      := NULL;
27497 l_adr_accounting_coa_id       := NULL;
27498 l_adr_flexfield_segment_code  := NULL;
27499 l_adr_flex_value_set_id       := NULL;
27500 l_adr_value_type_code         := NULL;
27501 l_adr_value_combination_id    := NULL;
27502 l_adr_value_segment_code      := NULL;
27503 
27504 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27505 l_bflow_class_code           := '';    -- 4219869 Business Flow
27506 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27507 l_budgetary_control_flag     := 'N';
27508 
27509 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27510 l_bflow_applied_to_amt       := NULL; -- 5132302
27511 l_entered_amt_idx            := NULL;          -- 4262811
27512 l_accted_amt_idx             := NULL;          -- 4262811
27513 l_acc_rev_flag               := NULL;          -- 4262811
27514 l_accrual_line_num           := NULL;          -- 4262811
27515 l_tmp_amt                    := NULL;          -- 4262811
27516 --
27517  
27518 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27519     l_balance_type_code <> 'B' THEN
27520 
27521    --
27522    XLA_AE_LINES_PKG.SetNewLine;
27523 
27524    p_balance_type_code          := l_balance_type_code;
27525    -- set the flag so later we will know whether the gain loss line needs to be created
27526    
27527    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27528      p_actual_flag :='A';
27529    END IF;
27530 
27531    --
27532    -- bulk performance
27533    --
27534    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27535                                       p_header_num   => 0); -- 4262811
27536    --
27537    -- set accounting line options
27538    --
27539    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27540            p_natural_side_code          => 'D'
27541          , p_gain_or_loss_flag          => 'N'
27542          , p_gl_transfer_mode_code      => 'S'
27543          , p_acct_entry_type_code       => 'A'
27544          , p_switch_side_flag           => 'Y'
27545          , p_merge_duplicate_code       => 'N'
27546          );
27547    --
27548    l_acc_rev_natural_side_code := 'C';  -- 4262811
27549    -- 
27550    --
27551    -- set accounting line type info
27552    --
27553    xla_ae_lines_pkg.SetAcctLineType
27554       (p_component_type             => l_component_type
27555       ,p_event_type_code            => l_event_type_code
27556       ,p_line_definition_owner_code => l_line_definition_owner_code
27557       ,p_line_definition_code       => l_line_definition_code
27558       ,p_accounting_line_code       => l_component_code
27559       ,p_accounting_line_type_code  => l_component_type_code
27560       ,p_accounting_line_appl_id    => l_component_appl_id
27561       ,p_amb_context_code           => l_amb_context_code
27565    -- set accounting class
27562       ,p_entity_code                => l_entity_code
27563       ,p_event_class_code           => l_event_class_code);
27564    --
27566    --
27567    xla_ae_lines_pkg.SetAcctClass(
27568            p_accounting_class_code  => 'COST'
27569          , p_ae_header_id           => l_ae_header_id
27570          );
27571 
27572    --
27573    -- set rounding class
27574    --
27575    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27576                       'COST';
27577 
27578    --
27579    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27580    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27581    --
27582    -- bulk performance
27583    --
27584    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27585 
27586    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27587       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27588 
27589    -- 4955764
27590    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27591       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27592 
27593    -- 4458381 Public Sector Enh
27594    
27595    --
27596    -- set accounting attributes for the line type
27597    --
27598    l_entered_amt_idx := 22;
27599    l_accted_amt_idx  := 27;
27600    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27601    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
27602    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
27603    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
27604    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
27605    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
27606    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
27607    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
27608    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
27609    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
27610    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
27611    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
27612    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
27613    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
27614    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
27615    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
27616    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
27617    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
27618    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
27619    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
27620    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
27621    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
27622    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
27623    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
27624    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
27625    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
27626    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
27627    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
27628    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
27629    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
27630    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
27631    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
27632    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
27633    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
27634    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
27635    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
27636    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
27637    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
27638    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
27639    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
27640    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
27641    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
27642    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
27643    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
27644    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
27645    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
27646    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
27647    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
27648    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
27649    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
27650    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
27651    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
27652    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
27653    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
27654    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
27655    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
27656    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
27657    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
27658    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
27659    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
27660    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
27661 
27662    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27663    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27664 
27668    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27665    ---------------------------------------------------------------------------------------------------------------
27666    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27667    ---------------------------------------------------------------------------------------------------------------
27669 
27670    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27671    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27672 
27673    IF xla_accounting_cache_pkg.GetValueChar
27674          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27675          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27676    AND l_bflow_method_code = 'PRIOR_ENTRY'
27677 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27678    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27679          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27680        )
27681    THEN
27682          xla_ae_lines_pkg.BflowUpgEntry
27683            (p_business_method_code    => l_bflow_method_code
27684            ,p_business_class_code     => l_bflow_class_code
27685            ,p_balance_type            => l_balance_type_code);
27686    ELSE
27687       NULL;
27688 -- No business flow processing for business flow method of NONE.
27689    END IF;
27690 
27691    --
27692    -- call analytical criteria
27693    --
27694    
27695    --
27696    -- call description
27697    --
27698    -- No description or it is inherited.
27699    --
27700    -- call ADRs
27701    -- Bug 4922099
27702    --
27703    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27704         (NVL(l_actual_upg_option, 'N') = 'O') OR
27705         (NVL(l_enc_upg_option, 'N') = 'O')
27706       )
27707    THEN
27708    NULL;
27709    --
27710    --
27711    
27712   l_ccid := AcctDerRule_12(
27713            p_application_id           => p_application_id
27714          , p_ae_header_id             => l_ae_header_id 
27715 , p_source_4 => p_source_4
27716 , p_source_5 => p_source_5
27717 , p_source_6 => p_source_6
27718          , x_transaction_coa_id       => l_adr_transaction_coa_id
27719          , x_accounting_coa_id        => l_adr_accounting_coa_id
27720          , x_value_type_code          => l_adr_value_type_code
27721          , p_side                     => 'NA'
27722    );
27723 
27724    xla_ae_lines_pkg.set_ccid(
27725     p_code_combination_id          => l_ccid
27726   , p_value_type_code              => l_adr_value_type_code
27727   , p_transaction_coa_id           => l_adr_transaction_coa_id
27728   , p_accounting_coa_id            => l_adr_accounting_coa_id
27729   , p_adr_code                     => 'PA_COST_ACCT_RULE'
27730   , p_adr_type_code                => 'S'
27731   , p_component_type               => l_component_type
27732   , p_component_code               => l_component_code
27733   , p_component_type_code          => l_component_type_code
27734   , p_component_appl_id            => l_component_appl_id
27735   , p_amb_context_code             => l_amb_context_code
27736   , p_side                         => 'NA'
27737   );
27738 
27739 
27740    --
27741    --
27742    END IF;
27743    --
27744    -- Bug 4922099
27745    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27746           (NVL(l_enc_upg_option, 'N') = 'O')
27747         ) AND
27748         (l_bflow_method_code = 'PRIOR_ENTRY')
27749       )
27750    THEN
27751       IF
27752       --
27753       1 = 2
27754       --
27755       THEN
27756       xla_accounting_err_pkg.build_message
27757                                     (p_appli_s_name            => 'XLA'
27758                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27759                                     ,p_token_1                 => 'LINE_NUMBER'
27760                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27761                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27762                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27763                                                                              l_component_type
27764                                                                             ,l_component_code
27765                                                                             ,l_component_type_code
27766                                                                             ,l_component_appl_id
27767                                                                             ,l_amb_context_code
27768                                                                             ,l_entity_code
27769                                                                             ,l_event_class_code
27770                                                                            )
27771                                     ,p_token_3                 => 'OWNER'
27772                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27773                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27774                                                                           ,p_lookup_code    => l_component_type_code
27775                                                                          )
27776                                     ,p_token_4                 => 'PRODUCT_NAME'
27777                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27778                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27782                                        );
27779                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27780                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27781                                     ,p_ae_header_id            =>  NULL
27783 
27784         IF (C_LEVEL_ERROR>= g_log_level) THEN
27785                  trace
27786                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27787                       ,p_level    => C_LEVEL_ERROR
27788                       ,p_module   => l_log_module);
27789         END IF;
27790       END IF;
27791    END IF;
27792    --
27793    --
27794    ------------------------------------------------------------------------------------------------
27795    -- 4219869 Business Flow
27796    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27797    -- Prior Entry.  Currently, the following code is always generated.
27798    ------------------------------------------------------------------------------------------------
27799    XLA_AE_LINES_PKG.ValidateCurrentLine;
27800 
27801    ------------------------------------------------------------------------------------
27802    -- 4219869 Business Flow
27803    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27804    ------------------------------------------------------------------------------------
27805    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27806 
27807    ----------------------------------------------------------------------------------
27808    -- 4219869 Business Flow
27809    -- Update journal entry status -- Need to generate this within IF <condition>
27810    ----------------------------------------------------------------------------------
27811    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27812          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27813          ,p_balance_type_code => l_balance_type_code
27814          );
27815 
27816    -------------------------------------------------------------------------------------------
27817    -- 4262811 - Generate the Accrual Reversal lines
27818    -------------------------------------------------------------------------------------------
27819    BEGIN
27820       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27821                               (g_array_event(p_event_id).array_value_num('header_index'));
27822       IF l_acc_rev_flag IS NULL THEN
27823          l_acc_rev_flag := 'N';
27824       END IF;
27825    EXCEPTION
27826       WHEN OTHERS THEN
27827          l_acc_rev_flag := 'N';
27828    END;
27829    --
27830    IF (l_acc_rev_flag = 'Y') THEN
27831 
27832        -- 4645092  ------------------------------------------------------------------------------
27833        -- To allow MPA report to determine if it should generate report process
27834        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27835        ------------------------------------------------------------------------------------------
27836 
27837        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27838        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27839 
27840        --
27841        -- Update the line information that should be overwritten
27842        --
27843        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27844                                          p_header_num   => 1);
27845        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27846 
27847        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27848 
27849        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27850           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27851        END IF;
27852 
27853       --
27854       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27855       --
27856       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27857           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27858       ELSE
27859           ---------------------------------------------------------------------------------------------------
27860           -- 4262811a Switch Sign
27861           ---------------------------------------------------------------------------------------------------
27862           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27863           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27864                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27865           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27866                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27867           -- 5132302
27868           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27869                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27870 
27871       END IF;
27872 
27873       -- 4955764
27874       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27875       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27876 
27877 
27878       XLA_AE_LINES_PKG.ValidateCurrentLine;
27879       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27880 
27881       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27882                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27883                ,p_balance_type_code => l_balance_type_code);
27884 
27885    END IF;
27886 
27890      -- No MPA option is assigned.
27887    -----------------------------------------------------------------------------------------
27888    -- 4262811 Multiperiod Accounting
27889    -----------------------------------------------------------------------------------------
27891 
27892 
27893 END IF;
27894 --
27895 
27896 --
27897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27898    trace
27899       (p_msg      => 'END of AcctLineType_69'
27900       ,p_level    => C_LEVEL_PROCEDURE
27901       ,p_module   => l_log_module);
27902 END IF;
27903 --
27904 EXCEPTION
27905   WHEN xla_exceptions_pkg.application_exception THEN
27906       RAISE;
27907   WHEN OTHERS THEN
27908        xla_exceptions_pkg.raise_message
27909            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_69');
27910 END AcctLineType_69;
27911 --
27912 
27913 ---------------------------------------
27914 --
27915 -- PRIVATE FUNCTION
27916 --         AcctLineType_70
27917 --
27918 ---------------------------------------
27919 PROCEDURE AcctLineType_70 (
27920   p_application_id        IN NUMBER
27921  ,p_event_id              IN NUMBER
27922  ,p_calculate_acctd_flag  IN VARCHAR2
27923  ,p_calculate_g_l_flag    IN VARCHAR2
27924  ,p_actual_flag           IN OUT VARCHAR2
27925  ,p_balance_type_code     OUT VARCHAR2
27926  ,p_gain_or_loss_ref      OUT VARCHAR2
27927  
27928 --Cost CCID
27929  , p_source_4            IN NUMBER
27930 --Allow Account Override Flag
27931  , p_source_5            IN VARCHAR2
27932 --Adjustment Cost CCID
27933  , p_source_6            IN NUMBER
27934 --Cost Clearing CCID
27935  , p_source_7            IN NUMBER
27936 --Reversing Line Flag
27937  , p_source_23            IN VARCHAR2
27938 --Actual Upgrade Credit Accounting Class
27939  , p_source_24            IN VARCHAR2
27940 --Entered Raw Cost
27941  , p_source_25            IN NUMBER
27942 --Entered Currency Code
27943  , p_source_26            IN VARCHAR2
27944 --Accounted Raw Cost
27945  , p_source_27            IN NUMBER
27946 --Exchange Rate Date
27947  , p_source_28            IN DATE
27948 --Exchange Rate
27949  , p_source_29            IN NUMBER
27950 --Exchange Rate Type
27951  , p_source_30            IN VARCHAR2
27952 --Actual Upgrade Debit Accounting Class
27953  , p_source_31            IN VARCHAR2
27954 --Use Actuals Upgrade Attributes Flag
27955  , p_source_32            IN VARCHAR2
27956 --Expenditure Item ID
27957  , p_source_33            IN NUMBER
27958 --Cost Distribution Line Number
27959  , p_source_34            IN NUMBER
27960 --Line Type
27961  , p_source_35            IN VARCHAR2
27962  , p_source_35_meaning    IN VARCHAR2
27963 --Reversed Line Number
27964  , p_source_36            IN NUMBER
27965 )
27966 IS
27967 
27968 l_component_type              VARCHAR2(80);
27969 l_component_code              VARCHAR2(30);
27970 l_component_type_code         VARCHAR2(1);
27971 l_component_appl_id           INTEGER;
27972 l_amb_context_code            VARCHAR2(30);
27973 l_entity_code                 VARCHAR2(30);
27974 l_event_class_code            VARCHAR2(30);
27975 l_ae_header_id                NUMBER;
27976 l_event_type_code             VARCHAR2(30);
27977 l_line_definition_code        VARCHAR2(30);
27978 l_line_definition_owner_code  VARCHAR2(1);
27979 --
27980 -- adr variables
27981 l_segment                     VARCHAR2(30);
27982 l_ccid                        NUMBER;
27983 l_adr_transaction_coa_id      NUMBER;
27984 l_adr_accounting_coa_id       NUMBER;
27985 l_adr_flexfield_segment_code  VARCHAR2(30);
27986 l_adr_flex_value_set_id       NUMBER;
27987 l_adr_value_type_code         VARCHAR2(30);
27988 l_adr_value_combination_id    NUMBER;
27989 l_adr_value_segment_code      VARCHAR2(30);
27990 
27991 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27992 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27993 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27994 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27995 
27996 -- 4262811 Variables ------------------------------------------------------------------------------------------
27997 l_entered_amt_idx             NUMBER;
27998 l_accted_amt_idx              NUMBER;
27999 l_acc_rev_flag                VARCHAR2(1);
28000 l_accrual_line_num            NUMBER;
28001 l_tmp_amt                     NUMBER;
28002 l_acc_rev_natural_side_code   VARCHAR2(1);
28003 
28004 l_num_entries                 NUMBER;
28005 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28006 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28007 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28008 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28009 l_recog_line_1                NUMBER;
28010 l_recog_line_2                NUMBER;
28011 
28012 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28013 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28014 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28015 
28016 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28017 
28018 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28019 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28020 
28021 ---------------------------------------------------------------------------------------------------------------
28022 
28023 
28024 --
28025 -- bulk performance
28026 --
28027 l_balance_type_code           VARCHAR2(1);
28028 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28029 l_log_module                  VARCHAR2(240);
28030 
28031 --
28035 l_enc_upg_option           VARCHAR2(1);
28032 -- Upgrade strategy
28033 --
28034 l_actual_upg_option           VARCHAR2(1);
28036 
28037 --
28038 BEGIN
28039 --
28040 IF g_log_enabled THEN
28041       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
28042 END IF;
28043 --
28044 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28045 
28046       trace
28047          (p_msg      => 'BEGIN of AcctLineType_70'
28048          ,p_level    => C_LEVEL_PROCEDURE
28049          ,p_module   => l_log_module);
28050 
28051 END IF;
28052 --
28053 l_component_type             := 'AMB_JLT';
28054 l_component_code             := 'PA_RAW_COST';
28055 l_component_type_code        := 'S';
28056 l_component_appl_id          :=  275;
28057 l_amb_context_code           := 'DEFAULT';
28058 l_entity_code                := 'EXPENDITURES';
28059 l_event_class_code           := 'WIP_COST';
28060 l_event_type_code            := 'WIP_COST_ALL';
28061 l_line_definition_owner_code := 'S';
28062 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
28063 --
28064 l_balance_type_code          := 'A';
28065 l_segment                     := NULL;
28066 l_ccid                        := NULL;
28067 l_adr_transaction_coa_id      := NULL;
28068 l_adr_accounting_coa_id       := NULL;
28069 l_adr_flexfield_segment_code  := NULL;
28070 l_adr_flex_value_set_id       := NULL;
28071 l_adr_value_type_code         := NULL;
28072 l_adr_value_combination_id    := NULL;
28073 l_adr_value_segment_code      := NULL;
28074 
28075 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28076 l_bflow_class_code           := '';    -- 4219869 Business Flow
28077 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28078 l_budgetary_control_flag     := 'N';
28079 
28080 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28081 l_bflow_applied_to_amt       := NULL; -- 5132302
28082 l_entered_amt_idx            := NULL;          -- 4262811
28083 l_accted_amt_idx             := NULL;          -- 4262811
28084 l_acc_rev_flag               := NULL;          -- 4262811
28085 l_accrual_line_num           := NULL;          -- 4262811
28086 l_tmp_amt                    := NULL;          -- 4262811
28087 --
28088  
28089 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28090     l_balance_type_code <> 'B' THEN
28091 
28092    --
28093    XLA_AE_LINES_PKG.SetNewLine;
28094 
28095    p_balance_type_code          := l_balance_type_code;
28096    -- set the flag so later we will know whether the gain loss line needs to be created
28097    
28098    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28099      p_actual_flag :='A';
28100    END IF;
28101 
28102    --
28103    -- bulk performance
28104    --
28105    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28106                                       p_header_num   => 0); -- 4262811
28107    --
28108    -- set accounting line options
28109    --
28110    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28111            p_natural_side_code          => 'D'
28112          , p_gain_or_loss_flag          => 'N'
28113          , p_gl_transfer_mode_code      => 'S'
28114          , p_acct_entry_type_code       => 'A'
28115          , p_switch_side_flag           => 'Y'
28116          , p_merge_duplicate_code       => 'N'
28117          );
28118    --
28119    l_acc_rev_natural_side_code := 'C';  -- 4262811
28120    -- 
28121    --
28122    -- set accounting line type info
28123    --
28124    xla_ae_lines_pkg.SetAcctLineType
28125       (p_component_type             => l_component_type
28126       ,p_event_type_code            => l_event_type_code
28127       ,p_line_definition_owner_code => l_line_definition_owner_code
28128       ,p_line_definition_code       => l_line_definition_code
28129       ,p_accounting_line_code       => l_component_code
28130       ,p_accounting_line_type_code  => l_component_type_code
28131       ,p_accounting_line_appl_id    => l_component_appl_id
28132       ,p_amb_context_code           => l_amb_context_code
28133       ,p_entity_code                => l_entity_code
28134       ,p_event_class_code           => l_event_class_code);
28135    --
28136    -- set accounting class
28137    --
28138    xla_ae_lines_pkg.SetAcctClass(
28139            p_accounting_class_code  => 'COST'
28140          , p_ae_header_id           => l_ae_header_id
28141          );
28142 
28143    --
28144    -- set rounding class
28145    --
28146    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28147                       'COST';
28148 
28149    --
28150    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28151    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28152    --
28153    -- bulk performance
28154    --
28155    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28156 
28157    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28158       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28159 
28160    -- 4955764
28161    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28162       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28163 
28164    -- 4458381 Public Sector Enh
28165    
28166    --
28167    -- set accounting attributes for the line type
28168    --
28169    l_entered_amt_idx := 22;
28170    l_accted_amt_idx  := 27;
28171    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28172    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28176    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
28173    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
28174    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
28175    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
28177    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
28178    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
28179    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
28180    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
28181    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
28182    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
28183    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
28184    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
28185    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
28186    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
28187    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
28188    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
28189    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
28190    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
28191    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
28192    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
28193    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
28194    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
28195    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
28196    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
28197    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
28198    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
28199    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
28200    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
28201    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
28202    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
28203    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
28204    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
28205    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
28206    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
28207    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
28208    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
28209    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
28210    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
28211    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
28212    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
28213    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
28214    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
28215    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
28216    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
28217    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
28218    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
28219    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
28220    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
28221    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
28222    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
28223    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
28224    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
28225    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
28226    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
28227    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
28228    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
28229    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
28230    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
28231    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
28232 
28233    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28234    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28235 
28236    ---------------------------------------------------------------------------------------------------------------
28237    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28238    ---------------------------------------------------------------------------------------------------------------
28239    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28240 
28241    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28242    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28243 
28244    IF xla_accounting_cache_pkg.GetValueChar
28245          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28246          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28247    AND l_bflow_method_code = 'PRIOR_ENTRY'
28248 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28249    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28250          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28251        )
28252    THEN
28253          xla_ae_lines_pkg.BflowUpgEntry
28254            (p_business_method_code    => l_bflow_method_code
28255            ,p_business_class_code     => l_bflow_class_code
28256            ,p_balance_type            => l_balance_type_code);
28257    ELSE
28258       NULL;
28259 -- No business flow processing for business flow method of NONE.
28260    END IF;
28261 
28262    --
28263    -- call analytical criteria
28264    --
28265    
28266    --
28267    -- call description
28268    --
28269    -- No description or it is inherited.
28270    --
28271    -- call ADRs
28272    -- Bug 4922099
28276         (NVL(l_enc_upg_option, 'N') = 'O')
28273    --
28274    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28275         (NVL(l_actual_upg_option, 'N') = 'O') OR
28277       )
28278    THEN
28279    NULL;
28280    --
28281    --
28282    
28283   l_ccid := AcctDerRule_12(
28284            p_application_id           => p_application_id
28285          , p_ae_header_id             => l_ae_header_id 
28286 , p_source_4 => p_source_4
28287 , p_source_5 => p_source_5
28288 , p_source_6 => p_source_6
28289          , x_transaction_coa_id       => l_adr_transaction_coa_id
28290          , x_accounting_coa_id        => l_adr_accounting_coa_id
28291          , x_value_type_code          => l_adr_value_type_code
28292          , p_side                     => 'NA'
28293    );
28294 
28295    xla_ae_lines_pkg.set_ccid(
28296     p_code_combination_id          => l_ccid
28297   , p_value_type_code              => l_adr_value_type_code
28298   , p_transaction_coa_id           => l_adr_transaction_coa_id
28299   , p_accounting_coa_id            => l_adr_accounting_coa_id
28300   , p_adr_code                     => 'PA_COST_ACCT_RULE'
28301   , p_adr_type_code                => 'S'
28302   , p_component_type               => l_component_type
28303   , p_component_code               => l_component_code
28304   , p_component_type_code          => l_component_type_code
28305   , p_component_appl_id            => l_component_appl_id
28306   , p_amb_context_code             => l_amb_context_code
28307   , p_side                         => 'NA'
28308   );
28309 
28310 
28311    --
28312    --
28313    END IF;
28314    --
28315    -- Bug 4922099
28316    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28317           (NVL(l_enc_upg_option, 'N') = 'O')
28318         ) AND
28319         (l_bflow_method_code = 'PRIOR_ENTRY')
28320       )
28321    THEN
28322       IF
28323       --
28324       1 = 2
28325       --
28326       THEN
28327       xla_accounting_err_pkg.build_message
28328                                     (p_appli_s_name            => 'XLA'
28329                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28330                                     ,p_token_1                 => 'LINE_NUMBER'
28331                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28332                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28333                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28334                                                                              l_component_type
28335                                                                             ,l_component_code
28336                                                                             ,l_component_type_code
28337                                                                             ,l_component_appl_id
28338                                                                             ,l_amb_context_code
28339                                                                             ,l_entity_code
28340                                                                             ,l_event_class_code
28341                                                                            )
28342                                     ,p_token_3                 => 'OWNER'
28343                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28344                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28345                                                                           ,p_lookup_code    => l_component_type_code
28346                                                                          )
28347                                     ,p_token_4                 => 'PRODUCT_NAME'
28348                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28349                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28350                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28351                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28352                                     ,p_ae_header_id            =>  NULL
28353                                        );
28354 
28355         IF (C_LEVEL_ERROR>= g_log_level) THEN
28356                  trace
28357                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28358                       ,p_level    => C_LEVEL_ERROR
28359                       ,p_module   => l_log_module);
28360         END IF;
28361       END IF;
28362    END IF;
28363    --
28364    --
28365    ------------------------------------------------------------------------------------------------
28366    -- 4219869 Business Flow
28367    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28368    -- Prior Entry.  Currently, the following code is always generated.
28369    ------------------------------------------------------------------------------------------------
28370    XLA_AE_LINES_PKG.ValidateCurrentLine;
28371 
28372    ------------------------------------------------------------------------------------
28373    -- 4219869 Business Flow
28374    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28375    ------------------------------------------------------------------------------------
28376    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28377 
28378    ----------------------------------------------------------------------------------
28379    -- 4219869 Business Flow
28380    -- Update journal entry status -- Need to generate this within IF <condition>
28381    ----------------------------------------------------------------------------------
28382    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28386 
28383          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28384          ,p_balance_type_code => l_balance_type_code
28385          );
28387    -------------------------------------------------------------------------------------------
28388    -- 4262811 - Generate the Accrual Reversal lines
28389    -------------------------------------------------------------------------------------------
28390    BEGIN
28391       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28392                               (g_array_event(p_event_id).array_value_num('header_index'));
28393       IF l_acc_rev_flag IS NULL THEN
28394          l_acc_rev_flag := 'N';
28395       END IF;
28396    EXCEPTION
28397       WHEN OTHERS THEN
28398          l_acc_rev_flag := 'N';
28399    END;
28400    --
28401    IF (l_acc_rev_flag = 'Y') THEN
28402 
28403        -- 4645092  ------------------------------------------------------------------------------
28404        -- To allow MPA report to determine if it should generate report process
28405        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28406        ------------------------------------------------------------------------------------------
28407 
28408        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28409        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28410 
28411        --
28412        -- Update the line information that should be overwritten
28413        --
28414        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28415                                          p_header_num   => 1);
28416        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28417 
28418        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28419 
28420        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28421           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28422        END IF;
28423 
28424       --
28425       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28426       --
28427       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28428           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28429       ELSE
28430           ---------------------------------------------------------------------------------------------------
28431           -- 4262811a Switch Sign
28432           ---------------------------------------------------------------------------------------------------
28433           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28434           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28435                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28436           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28437                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28438           -- 5132302
28439           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28440                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28441 
28442       END IF;
28443 
28444       -- 4955764
28445       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28446       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28447 
28448 
28449       XLA_AE_LINES_PKG.ValidateCurrentLine;
28450       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28451 
28452       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28453                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28454                ,p_balance_type_code => l_balance_type_code);
28455 
28456    END IF;
28457 
28458    -----------------------------------------------------------------------------------------
28459    -- 4262811 Multiperiod Accounting
28460    -----------------------------------------------------------------------------------------
28461      -- No MPA option is assigned.
28462 
28463 
28464 END IF;
28465 --
28466 
28467 --
28468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28469    trace
28470       (p_msg      => 'END of AcctLineType_70'
28471       ,p_level    => C_LEVEL_PROCEDURE
28472       ,p_module   => l_log_module);
28473 END IF;
28474 --
28475 EXCEPTION
28476   WHEN xla_exceptions_pkg.application_exception THEN
28477       RAISE;
28478   WHEN OTHERS THEN
28479        xla_exceptions_pkg.raise_message
28480            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_70');
28481 END AcctLineType_70;
28482 --
28483 
28484 ---------------------------------------
28485 --
28486 -- PRIVATE FUNCTION
28487 --         AcctLineType_71
28488 --
28489 ---------------------------------------
28490 PROCEDURE AcctLineType_71 (
28491   p_application_id        IN NUMBER
28492  ,p_event_id              IN NUMBER
28493  ,p_calculate_acctd_flag  IN VARCHAR2
28494  ,p_calculate_g_l_flag    IN VARCHAR2
28495  ,p_actual_flag           IN OUT VARCHAR2
28496  ,p_balance_type_code     OUT VARCHAR2
28497  ,p_gain_or_loss_ref      OUT VARCHAR2
28498  
28499 --Cost CCID
28500  , p_source_4            IN NUMBER
28501 --Allow Account Override Flag
28502  , p_source_5            IN VARCHAR2
28503 --Adjustment Cost CCID
28504  , p_source_6            IN NUMBER
28505 --Cost Clearing CCID
28506  , p_source_7            IN NUMBER
28507 --Reversing Line Flag
28508  , p_source_23            IN VARCHAR2
28509 --Actual Upgrade Credit Accounting Class
28513 --Entered Currency Code
28510  , p_source_24            IN VARCHAR2
28511 --Entered Raw Cost
28512  , p_source_25            IN NUMBER
28514  , p_source_26            IN VARCHAR2
28515 --Accounted Raw Cost
28516  , p_source_27            IN NUMBER
28517 --Exchange Rate Date
28518  , p_source_28            IN DATE
28519 --Exchange Rate
28520  , p_source_29            IN NUMBER
28521 --Exchange Rate Type
28522  , p_source_30            IN VARCHAR2
28523 --Actual Upgrade Debit Accounting Class
28524  , p_source_31            IN VARCHAR2
28525 --Use Actuals Upgrade Attributes Flag
28526  , p_source_32            IN VARCHAR2
28527 --Expenditure Item ID
28528  , p_source_33            IN NUMBER
28529 --Cost Distribution Line Number
28530  , p_source_34            IN NUMBER
28531 --Line Type
28532  , p_source_35            IN VARCHAR2
28533  , p_source_35_meaning    IN VARCHAR2
28534 --Reversed Line Number
28535  , p_source_36            IN NUMBER
28536 )
28537 IS
28538 
28539 l_component_type              VARCHAR2(80);
28540 l_component_code              VARCHAR2(30);
28541 l_component_type_code         VARCHAR2(1);
28542 l_component_appl_id           INTEGER;
28543 l_amb_context_code            VARCHAR2(30);
28544 l_entity_code                 VARCHAR2(30);
28545 l_event_class_code            VARCHAR2(30);
28546 l_ae_header_id                NUMBER;
28547 l_event_type_code             VARCHAR2(30);
28548 l_line_definition_code        VARCHAR2(30);
28549 l_line_definition_owner_code  VARCHAR2(1);
28550 --
28551 -- adr variables
28552 l_segment                     VARCHAR2(30);
28553 l_ccid                        NUMBER;
28554 l_adr_transaction_coa_id      NUMBER;
28555 l_adr_accounting_coa_id       NUMBER;
28556 l_adr_flexfield_segment_code  VARCHAR2(30);
28557 l_adr_flex_value_set_id       NUMBER;
28558 l_adr_value_type_code         VARCHAR2(30);
28559 l_adr_value_combination_id    NUMBER;
28560 l_adr_value_segment_code      VARCHAR2(30);
28561 
28562 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28563 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28564 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28565 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28566 
28567 -- 4262811 Variables ------------------------------------------------------------------------------------------
28568 l_entered_amt_idx             NUMBER;
28569 l_accted_amt_idx              NUMBER;
28570 l_acc_rev_flag                VARCHAR2(1);
28571 l_accrual_line_num            NUMBER;
28572 l_tmp_amt                     NUMBER;
28573 l_acc_rev_natural_side_code   VARCHAR2(1);
28574 
28575 l_num_entries                 NUMBER;
28576 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28577 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28578 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28579 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28580 l_recog_line_1                NUMBER;
28581 l_recog_line_2                NUMBER;
28582 
28583 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28584 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28585 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28586 
28587 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28588 
28589 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28590 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28591 
28592 ---------------------------------------------------------------------------------------------------------------
28593 
28594 
28595 --
28596 -- bulk performance
28597 --
28598 l_balance_type_code           VARCHAR2(1);
28599 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28600 l_log_module                  VARCHAR2(240);
28601 
28602 --
28603 -- Upgrade strategy
28604 --
28605 l_actual_upg_option           VARCHAR2(1);
28606 l_enc_upg_option           VARCHAR2(1);
28607 
28608 --
28609 BEGIN
28610 --
28611 IF g_log_enabled THEN
28612       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
28613 END IF;
28614 --
28615 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28616 
28617       trace
28618          (p_msg      => 'BEGIN of AcctLineType_71'
28619          ,p_level    => C_LEVEL_PROCEDURE
28620          ,p_module   => l_log_module);
28621 
28622 END IF;
28623 --
28624 l_component_type             := 'AMB_JLT';
28625 l_component_code             := 'PA_RAW_COST';
28626 l_component_type_code        := 'S';
28627 l_component_appl_id          :=  275;
28628 l_amb_context_code           := 'DEFAULT';
28629 l_entity_code                := 'EXPENDITURES';
28630 l_event_class_code           := 'MISC_COST';
28631 l_event_type_code            := 'MISC_COST_ALL';
28632 l_line_definition_owner_code := 'S';
28633 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
28634 --
28635 l_balance_type_code          := 'A';
28636 l_segment                     := NULL;
28637 l_ccid                        := NULL;
28638 l_adr_transaction_coa_id      := NULL;
28639 l_adr_accounting_coa_id       := NULL;
28640 l_adr_flexfield_segment_code  := NULL;
28641 l_adr_flex_value_set_id       := NULL;
28642 l_adr_value_type_code         := NULL;
28643 l_adr_value_combination_id    := NULL;
28644 l_adr_value_segment_code      := NULL;
28645 
28646 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28647 l_bflow_class_code           := '';    -- 4219869 Business Flow
28648 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28649 l_budgetary_control_flag     := 'N';
28650 
28654 l_accted_amt_idx             := NULL;          -- 4262811
28651 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28652 l_bflow_applied_to_amt       := NULL; -- 5132302
28653 l_entered_amt_idx            := NULL;          -- 4262811
28655 l_acc_rev_flag               := NULL;          -- 4262811
28656 l_accrual_line_num           := NULL;          -- 4262811
28657 l_tmp_amt                    := NULL;          -- 4262811
28658 --
28659  
28660 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28661     l_balance_type_code <> 'B' THEN
28662 
28663    --
28664    XLA_AE_LINES_PKG.SetNewLine;
28665 
28666    p_balance_type_code          := l_balance_type_code;
28667    -- set the flag so later we will know whether the gain loss line needs to be created
28668    
28669    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28670      p_actual_flag :='A';
28671    END IF;
28672 
28673    --
28674    -- bulk performance
28675    --
28676    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28677                                       p_header_num   => 0); -- 4262811
28678    --
28679    -- set accounting line options
28680    --
28681    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28682            p_natural_side_code          => 'D'
28683          , p_gain_or_loss_flag          => 'N'
28684          , p_gl_transfer_mode_code      => 'S'
28685          , p_acct_entry_type_code       => 'A'
28686          , p_switch_side_flag           => 'Y'
28687          , p_merge_duplicate_code       => 'N'
28688          );
28689    --
28690    l_acc_rev_natural_side_code := 'C';  -- 4262811
28691    -- 
28692    --
28693    -- set accounting line type info
28694    --
28695    xla_ae_lines_pkg.SetAcctLineType
28696       (p_component_type             => l_component_type
28697       ,p_event_type_code            => l_event_type_code
28698       ,p_line_definition_owner_code => l_line_definition_owner_code
28699       ,p_line_definition_code       => l_line_definition_code
28700       ,p_accounting_line_code       => l_component_code
28701       ,p_accounting_line_type_code  => l_component_type_code
28702       ,p_accounting_line_appl_id    => l_component_appl_id
28703       ,p_amb_context_code           => l_amb_context_code
28704       ,p_entity_code                => l_entity_code
28705       ,p_event_class_code           => l_event_class_code);
28706    --
28707    -- set accounting class
28708    --
28709    xla_ae_lines_pkg.SetAcctClass(
28710            p_accounting_class_code  => 'COST'
28711          , p_ae_header_id           => l_ae_header_id
28712          );
28713 
28714    --
28715    -- set rounding class
28716    --
28717    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28718                       'COST';
28719 
28720    --
28721    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28722    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28723    --
28724    -- bulk performance
28725    --
28726    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28727 
28728    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28729       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28730 
28731    -- 4955764
28732    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28733       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28734 
28735    -- 4458381 Public Sector Enh
28736    
28737    --
28738    -- set accounting attributes for the line type
28739    --
28740    l_entered_amt_idx := 22;
28741    l_accted_amt_idx  := 27;
28742    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28743    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
28744    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
28745    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
28746    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
28747    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
28748    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
28749    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
28750    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
28751    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
28752    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
28753    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
28754    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
28755    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
28756    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
28757    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
28758    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
28759    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
28760    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
28761    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
28762    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
28763    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
28764    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
28765    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
28766    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
28767    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
28768    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
28769    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
28770    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
28771    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
28775    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
28772    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
28773    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
28774    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
28776    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
28777    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
28778    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
28779    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
28780    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
28781    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
28782    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
28783    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
28784    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
28785    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
28786    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
28787    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
28788    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
28789    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
28790    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
28791    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
28792    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
28793    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
28794    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
28795    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
28796    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
28797    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
28798    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
28799    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
28800    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
28801    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
28802    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
28803 
28804    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28805    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28806 
28807    ---------------------------------------------------------------------------------------------------------------
28808    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28809    ---------------------------------------------------------------------------------------------------------------
28810    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28811 
28812    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28813    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28814 
28815    IF xla_accounting_cache_pkg.GetValueChar
28816          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28817          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28818    AND l_bflow_method_code = 'PRIOR_ENTRY'
28819 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28820    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28821          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28822        )
28823    THEN
28824          xla_ae_lines_pkg.BflowUpgEntry
28825            (p_business_method_code    => l_bflow_method_code
28826            ,p_business_class_code     => l_bflow_class_code
28827            ,p_balance_type            => l_balance_type_code);
28828    ELSE
28829       NULL;
28830 -- No business flow processing for business flow method of NONE.
28831    END IF;
28832 
28833    --
28834    -- call analytical criteria
28835    --
28836    
28837    --
28838    -- call description
28839    --
28840    -- No description or it is inherited.
28841    --
28842    -- call ADRs
28843    -- Bug 4922099
28844    --
28845    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28846         (NVL(l_actual_upg_option, 'N') = 'O') OR
28847         (NVL(l_enc_upg_option, 'N') = 'O')
28848       )
28849    THEN
28850    NULL;
28851    --
28852    --
28853    
28854   l_ccid := AcctDerRule_12(
28855            p_application_id           => p_application_id
28856          , p_ae_header_id             => l_ae_header_id 
28857 , p_source_4 => p_source_4
28858 , p_source_5 => p_source_5
28859 , p_source_6 => p_source_6
28860          , x_transaction_coa_id       => l_adr_transaction_coa_id
28861          , x_accounting_coa_id        => l_adr_accounting_coa_id
28862          , x_value_type_code          => l_adr_value_type_code
28863          , p_side                     => 'NA'
28864    );
28865 
28866    xla_ae_lines_pkg.set_ccid(
28867     p_code_combination_id          => l_ccid
28868   , p_value_type_code              => l_adr_value_type_code
28869   , p_transaction_coa_id           => l_adr_transaction_coa_id
28870   , p_accounting_coa_id            => l_adr_accounting_coa_id
28871   , p_adr_code                     => 'PA_COST_ACCT_RULE'
28872   , p_adr_type_code                => 'S'
28873   , p_component_type               => l_component_type
28874   , p_component_code               => l_component_code
28875   , p_component_type_code          => l_component_type_code
28876   , p_component_appl_id            => l_component_appl_id
28877   , p_amb_context_code             => l_amb_context_code
28878   , p_side                         => 'NA'
28879   );
28880 
28881 
28882    --
28883    --
28884    END IF;
28885    --
28886    -- Bug 4922099
28887    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28888           (NVL(l_enc_upg_option, 'N') = 'O')
28889         ) AND
28890         (l_bflow_method_code = 'PRIOR_ENTRY')
28894       --
28891       )
28892    THEN
28893       IF
28895       1 = 2
28896       --
28897       THEN
28898       xla_accounting_err_pkg.build_message
28899                                     (p_appli_s_name            => 'XLA'
28900                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28901                                     ,p_token_1                 => 'LINE_NUMBER'
28902                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28903                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28904                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28905                                                                              l_component_type
28906                                                                             ,l_component_code
28907                                                                             ,l_component_type_code
28908                                                                             ,l_component_appl_id
28909                                                                             ,l_amb_context_code
28910                                                                             ,l_entity_code
28911                                                                             ,l_event_class_code
28912                                                                            )
28913                                     ,p_token_3                 => 'OWNER'
28914                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28915                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28916                                                                           ,p_lookup_code    => l_component_type_code
28917                                                                          )
28918                                     ,p_token_4                 => 'PRODUCT_NAME'
28919                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28920                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28921                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28922                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28923                                     ,p_ae_header_id            =>  NULL
28924                                        );
28925 
28926         IF (C_LEVEL_ERROR>= g_log_level) THEN
28927                  trace
28928                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28929                       ,p_level    => C_LEVEL_ERROR
28930                       ,p_module   => l_log_module);
28931         END IF;
28932       END IF;
28933    END IF;
28934    --
28935    --
28936    ------------------------------------------------------------------------------------------------
28937    -- 4219869 Business Flow
28938    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28939    -- Prior Entry.  Currently, the following code is always generated.
28940    ------------------------------------------------------------------------------------------------
28941    XLA_AE_LINES_PKG.ValidateCurrentLine;
28942 
28943    ------------------------------------------------------------------------------------
28944    -- 4219869 Business Flow
28945    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28946    ------------------------------------------------------------------------------------
28947    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28948 
28949    ----------------------------------------------------------------------------------
28950    -- 4219869 Business Flow
28951    -- Update journal entry status -- Need to generate this within IF <condition>
28952    ----------------------------------------------------------------------------------
28953    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28954          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28955          ,p_balance_type_code => l_balance_type_code
28956          );
28957 
28958    -------------------------------------------------------------------------------------------
28959    -- 4262811 - Generate the Accrual Reversal lines
28960    -------------------------------------------------------------------------------------------
28961    BEGIN
28962       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28963                               (g_array_event(p_event_id).array_value_num('header_index'));
28964       IF l_acc_rev_flag IS NULL THEN
28965          l_acc_rev_flag := 'N';
28966       END IF;
28967    EXCEPTION
28968       WHEN OTHERS THEN
28969          l_acc_rev_flag := 'N';
28970    END;
28971    --
28972    IF (l_acc_rev_flag = 'Y') THEN
28973 
28974        -- 4645092  ------------------------------------------------------------------------------
28975        -- To allow MPA report to determine if it should generate report process
28976        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28977        ------------------------------------------------------------------------------------------
28978 
28979        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28980        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28981 
28982        --
28983        -- Update the line information that should be overwritten
28984        --
28985        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28986                                          p_header_num   => 1);
28987        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28988 
28989        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28990 
28991        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28995       --
28992           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28993        END IF;
28994 
28996       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28997       --
28998       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28999           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29000       ELSE
29001           ---------------------------------------------------------------------------------------------------
29002           -- 4262811a Switch Sign
29003           ---------------------------------------------------------------------------------------------------
29004           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29005           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29006                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29007           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29008                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29009           -- 5132302
29010           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29011                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29012 
29013       END IF;
29014 
29015       -- 4955764
29016       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29017       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29018 
29019 
29020       XLA_AE_LINES_PKG.ValidateCurrentLine;
29021       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29022 
29023       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29024                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29025                ,p_balance_type_code => l_balance_type_code);
29026 
29027    END IF;
29028 
29029    -----------------------------------------------------------------------------------------
29030    -- 4262811 Multiperiod Accounting
29031    -----------------------------------------------------------------------------------------
29032      -- No MPA option is assigned.
29033 
29034 
29035 END IF;
29036 --
29037 
29038 --
29039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29040    trace
29041       (p_msg      => 'END of AcctLineType_71'
29042       ,p_level    => C_LEVEL_PROCEDURE
29043       ,p_module   => l_log_module);
29044 END IF;
29045 --
29046 EXCEPTION
29047   WHEN xla_exceptions_pkg.application_exception THEN
29048       RAISE;
29049   WHEN OTHERS THEN
29050        xla_exceptions_pkg.raise_message
29051            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_71');
29052 END AcctLineType_71;
29053 --
29054 
29055 ---------------------------------------
29056 --
29057 -- PRIVATE FUNCTION
29058 --         AcctLineType_72
29059 --
29060 ---------------------------------------
29061 PROCEDURE AcctLineType_72 (
29062   p_application_id        IN NUMBER
29063  ,p_event_id              IN NUMBER
29064  ,p_calculate_acctd_flag  IN VARCHAR2
29065  ,p_calculate_g_l_flag    IN VARCHAR2
29066  ,p_actual_flag           IN OUT VARCHAR2
29067  ,p_balance_type_code     OUT VARCHAR2
29068  ,p_gain_or_loss_ref      OUT VARCHAR2
29069  
29070 --Cost CCID
29071  , p_source_4            IN NUMBER
29072 --Allow Account Override Flag
29073  , p_source_5            IN VARCHAR2
29074 --Adjustment Cost CCID
29075  , p_source_6            IN NUMBER
29076 --Cost Clearing CCID
29077  , p_source_7            IN NUMBER
29078 --Reversing Line Flag
29079  , p_source_23            IN VARCHAR2
29080 --Actual Upgrade Credit Accounting Class
29081  , p_source_24            IN VARCHAR2
29082 --Entered Raw Cost
29083  , p_source_25            IN NUMBER
29084 --Entered Currency Code
29085  , p_source_26            IN VARCHAR2
29086 --Accounted Raw Cost
29087  , p_source_27            IN NUMBER
29088 --Exchange Rate Date
29089  , p_source_28            IN DATE
29090 --Exchange Rate
29091  , p_source_29            IN NUMBER
29092 --Exchange Rate Type
29093  , p_source_30            IN VARCHAR2
29094 --Actual Upgrade Debit Accounting Class
29095  , p_source_31            IN VARCHAR2
29096 --Use Actuals Upgrade Attributes Flag
29097  , p_source_32            IN VARCHAR2
29098 --Expenditure Item ID
29099  , p_source_33            IN NUMBER
29100 --Cost Distribution Line Number
29101  , p_source_34            IN NUMBER
29102 --Line Type
29103  , p_source_35            IN VARCHAR2
29104  , p_source_35_meaning    IN VARCHAR2
29105 --Reversed Line Number
29106  , p_source_36            IN NUMBER
29107 )
29108 IS
29109 
29110 l_component_type              VARCHAR2(80);
29111 l_component_code              VARCHAR2(30);
29112 l_component_type_code         VARCHAR2(1);
29113 l_component_appl_id           INTEGER;
29114 l_amb_context_code            VARCHAR2(30);
29115 l_entity_code                 VARCHAR2(30);
29116 l_event_class_code            VARCHAR2(30);
29117 l_ae_header_id                NUMBER;
29118 l_event_type_code             VARCHAR2(30);
29119 l_line_definition_code        VARCHAR2(30);
29120 l_line_definition_owner_code  VARCHAR2(1);
29121 --
29122 -- adr variables
29123 l_segment                     VARCHAR2(30);
29124 l_ccid                        NUMBER;
29125 l_adr_transaction_coa_id      NUMBER;
29126 l_adr_accounting_coa_id       NUMBER;
29127 l_adr_flexfield_segment_code  VARCHAR2(30);
29128 l_adr_flex_value_set_id       NUMBER;
29132 
29129 l_adr_value_type_code         VARCHAR2(30);
29130 l_adr_value_combination_id    NUMBER;
29131 l_adr_value_segment_code      VARCHAR2(30);
29133 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29134 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29135 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29136 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29137 
29138 -- 4262811 Variables ------------------------------------------------------------------------------------------
29139 l_entered_amt_idx             NUMBER;
29140 l_accted_amt_idx              NUMBER;
29141 l_acc_rev_flag                VARCHAR2(1);
29142 l_accrual_line_num            NUMBER;
29143 l_tmp_amt                     NUMBER;
29144 l_acc_rev_natural_side_code   VARCHAR2(1);
29145 
29146 l_num_entries                 NUMBER;
29147 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29148 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29149 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29150 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29151 l_recog_line_1                NUMBER;
29152 l_recog_line_2                NUMBER;
29153 
29154 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29155 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29156 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29157 
29158 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29159 
29160 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29161 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29162 
29163 ---------------------------------------------------------------------------------------------------------------
29164 
29165 
29166 --
29167 -- bulk performance
29168 --
29169 l_balance_type_code           VARCHAR2(1);
29170 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29171 l_log_module                  VARCHAR2(240);
29172 
29173 --
29174 -- Upgrade strategy
29175 --
29176 l_actual_upg_option           VARCHAR2(1);
29177 l_enc_upg_option           VARCHAR2(1);
29178 
29179 --
29180 BEGIN
29181 --
29182 IF g_log_enabled THEN
29183       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
29184 END IF;
29185 --
29186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29187 
29188       trace
29189          (p_msg      => 'BEGIN of AcctLineType_72'
29190          ,p_level    => C_LEVEL_PROCEDURE
29191          ,p_module   => l_log_module);
29192 
29193 END IF;
29194 --
29195 l_component_type             := 'AMB_JLT';
29196 l_component_code             := 'PA_RAW_COST_ADJ';
29197 l_component_type_code        := 'S';
29198 l_component_appl_id          :=  275;
29199 l_amb_context_code           := 'DEFAULT';
29200 l_entity_code                := 'EXPENDITURES';
29201 l_event_class_code           := 'MISC_COST_ADJ';
29202 l_event_type_code            := 'MISC_COST_ADJ_ALL';
29203 l_line_definition_owner_code := 'S';
29204 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
29205 --
29206 l_balance_type_code          := 'A';
29207 l_segment                     := NULL;
29208 l_ccid                        := NULL;
29209 l_adr_transaction_coa_id      := NULL;
29210 l_adr_accounting_coa_id       := NULL;
29211 l_adr_flexfield_segment_code  := NULL;
29212 l_adr_flex_value_set_id       := NULL;
29213 l_adr_value_type_code         := NULL;
29214 l_adr_value_combination_id    := NULL;
29215 l_adr_value_segment_code      := NULL;
29216 
29217 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29218 l_bflow_class_code           := '';    -- 4219869 Business Flow
29219 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29220 l_budgetary_control_flag     := 'N';
29221 
29222 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29223 l_bflow_applied_to_amt       := NULL; -- 5132302
29224 l_entered_amt_idx            := NULL;          -- 4262811
29225 l_accted_amt_idx             := NULL;          -- 4262811
29226 l_acc_rev_flag               := NULL;          -- 4262811
29227 l_accrual_line_num           := NULL;          -- 4262811
29228 l_tmp_amt                    := NULL;          -- 4262811
29229 --
29230  
29231 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29232     l_balance_type_code <> 'B' THEN
29233 
29234    --
29235    XLA_AE_LINES_PKG.SetNewLine;
29236 
29237    p_balance_type_code          := l_balance_type_code;
29238    -- set the flag so later we will know whether the gain loss line needs to be created
29239    
29240    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29241      p_actual_flag :='A';
29242    END IF;
29243 
29244    --
29245    -- bulk performance
29246    --
29247    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29248                                       p_header_num   => 0); -- 4262811
29249    --
29250    -- set accounting line options
29251    --
29252    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29253            p_natural_side_code          => 'D'
29254          , p_gain_or_loss_flag          => 'N'
29255          , p_gl_transfer_mode_code      => 'S'
29256          , p_acct_entry_type_code       => 'A'
29257          , p_switch_side_flag           => 'Y'
29258          , p_merge_duplicate_code       => 'N'
29259          );
29260    --
29261    l_acc_rev_natural_side_code := 'C';  -- 4262811
29262    -- 
29263    --
29264    -- set accounting line type info
29265    --
29266    xla_ae_lines_pkg.SetAcctLineType
29267       (p_component_type             => l_component_type
29271       ,p_accounting_line_code       => l_component_code
29268       ,p_event_type_code            => l_event_type_code
29269       ,p_line_definition_owner_code => l_line_definition_owner_code
29270       ,p_line_definition_code       => l_line_definition_code
29272       ,p_accounting_line_type_code  => l_component_type_code
29273       ,p_accounting_line_appl_id    => l_component_appl_id
29274       ,p_amb_context_code           => l_amb_context_code
29275       ,p_entity_code                => l_entity_code
29276       ,p_event_class_code           => l_event_class_code);
29277    --
29278    -- set accounting class
29279    --
29280    xla_ae_lines_pkg.SetAcctClass(
29281            p_accounting_class_code  => 'COST'
29282          , p_ae_header_id           => l_ae_header_id
29283          );
29284 
29285    --
29286    -- set rounding class
29287    --
29288    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29289                       'COST';
29290 
29291    --
29292    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29293    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29294    --
29295    -- bulk performance
29296    --
29297    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29298 
29299    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29300       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29301 
29302    -- 4955764
29303    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29304       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29305 
29306    -- 4458381 Public Sector Enh
29307    
29308    --
29309    -- set accounting attributes for the line type
29310    --
29311    l_entered_amt_idx := 22;
29312    l_accted_amt_idx  := 27;
29313    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29314    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
29315    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
29316    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
29317    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
29318    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
29319    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
29320    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
29321    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
29322    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
29323    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
29324    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
29325    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
29326    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
29327    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
29328    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
29329    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
29330    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
29331    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
29332    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
29333    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
29334    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
29335    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
29336    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
29337    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
29338    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
29339    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
29340    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
29341    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
29342    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
29343    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
29344    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
29345    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
29346    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
29347    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
29348    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
29349    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
29350    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
29351    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
29352    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
29353    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
29354    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
29355    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
29356    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
29357    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
29358    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
29359    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
29360    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
29361    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
29362    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
29363    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
29364    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
29365    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
29366    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
29367    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
29368    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
29369    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
29370    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
29374 
29371    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
29372    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
29373    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
29375    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29376    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29377 
29378    ---------------------------------------------------------------------------------------------------------------
29379    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29380    ---------------------------------------------------------------------------------------------------------------
29381    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29382 
29383    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29384    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29385 
29386    IF xla_accounting_cache_pkg.GetValueChar
29387          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29388          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29389    AND l_bflow_method_code = 'PRIOR_ENTRY'
29390 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29391    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29392          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29393        )
29394    THEN
29395          xla_ae_lines_pkg.BflowUpgEntry
29396            (p_business_method_code    => l_bflow_method_code
29397            ,p_business_class_code     => l_bflow_class_code
29398            ,p_balance_type            => l_balance_type_code);
29399    ELSE
29400       NULL;
29401 -- No business flow processing for business flow method of NONE.
29402    END IF;
29403 
29404    --
29405    -- call analytical criteria
29406    --
29407    
29408    --
29409    -- call description
29410    --
29411    -- No description or it is inherited.
29412    --
29413    -- call ADRs
29414    -- Bug 4922099
29415    --
29416    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29417         (NVL(l_actual_upg_option, 'N') = 'O') OR
29418         (NVL(l_enc_upg_option, 'N') = 'O')
29419       )
29420    THEN
29421    NULL;
29422    --
29423    --
29424    
29425   l_ccid := AcctDerRule_13(
29426            p_application_id           => p_application_id
29427          , p_ae_header_id             => l_ae_header_id 
29428 , p_source_5 => p_source_5
29429 , p_source_6 => p_source_6
29430          , x_transaction_coa_id       => l_adr_transaction_coa_id
29431          , x_accounting_coa_id        => l_adr_accounting_coa_id
29432          , x_value_type_code          => l_adr_value_type_code
29433          , p_side                     => 'NA'
29434    );
29435 
29436    xla_ae_lines_pkg.set_ccid(
29437     p_code_combination_id          => l_ccid
29438   , p_value_type_code              => l_adr_value_type_code
29439   , p_transaction_coa_id           => l_adr_transaction_coa_id
29440   , p_accounting_coa_id            => l_adr_accounting_coa_id
29441   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
29442   , p_adr_type_code                => 'S'
29443   , p_component_type               => l_component_type
29444   , p_component_code               => l_component_code
29445   , p_component_type_code          => l_component_type_code
29446   , p_component_appl_id            => l_component_appl_id
29447   , p_amb_context_code             => l_amb_context_code
29448   , p_side                         => 'NA'
29449   );
29450 
29451 
29452    --
29453    --
29454    END IF;
29455    --
29456    -- Bug 4922099
29457    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29458           (NVL(l_enc_upg_option, 'N') = 'O')
29459         ) AND
29460         (l_bflow_method_code = 'PRIOR_ENTRY')
29461       )
29462    THEN
29463       IF
29464       --
29465       1 = 2
29466       --
29467       THEN
29468       xla_accounting_err_pkg.build_message
29469                                     (p_appli_s_name            => 'XLA'
29470                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29471                                     ,p_token_1                 => 'LINE_NUMBER'
29472                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29473                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29474                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29475                                                                              l_component_type
29476                                                                             ,l_component_code
29477                                                                             ,l_component_type_code
29478                                                                             ,l_component_appl_id
29479                                                                             ,l_amb_context_code
29480                                                                             ,l_entity_code
29481                                                                             ,l_event_class_code
29482                                                                            )
29483                                     ,p_token_3                 => 'OWNER'
29484                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29485                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29486                                                                           ,p_lookup_code    => l_component_type_code
29487                                                                          )
29491                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29488                                     ,p_token_4                 => 'PRODUCT_NAME'
29489                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29490                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29492                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29493                                     ,p_ae_header_id            =>  NULL
29494                                        );
29495 
29496         IF (C_LEVEL_ERROR>= g_log_level) THEN
29497                  trace
29498                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29499                       ,p_level    => C_LEVEL_ERROR
29500                       ,p_module   => l_log_module);
29501         END IF;
29502       END IF;
29503    END IF;
29504    --
29505    --
29506    ------------------------------------------------------------------------------------------------
29507    -- 4219869 Business Flow
29508    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29509    -- Prior Entry.  Currently, the following code is always generated.
29510    ------------------------------------------------------------------------------------------------
29511    XLA_AE_LINES_PKG.ValidateCurrentLine;
29512 
29513    ------------------------------------------------------------------------------------
29514    -- 4219869 Business Flow
29515    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29516    ------------------------------------------------------------------------------------
29517    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29518 
29519    ----------------------------------------------------------------------------------
29520    -- 4219869 Business Flow
29521    -- Update journal entry status -- Need to generate this within IF <condition>
29522    ----------------------------------------------------------------------------------
29523    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29524          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29525          ,p_balance_type_code => l_balance_type_code
29526          );
29527 
29528    -------------------------------------------------------------------------------------------
29529    -- 4262811 - Generate the Accrual Reversal lines
29530    -------------------------------------------------------------------------------------------
29531    BEGIN
29532       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29533                               (g_array_event(p_event_id).array_value_num('header_index'));
29534       IF l_acc_rev_flag IS NULL THEN
29535          l_acc_rev_flag := 'N';
29536       END IF;
29537    EXCEPTION
29538       WHEN OTHERS THEN
29539          l_acc_rev_flag := 'N';
29540    END;
29541    --
29542    IF (l_acc_rev_flag = 'Y') THEN
29543 
29544        -- 4645092  ------------------------------------------------------------------------------
29545        -- To allow MPA report to determine if it should generate report process
29546        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29547        ------------------------------------------------------------------------------------------
29548 
29549        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29550        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29551 
29552        --
29553        -- Update the line information that should be overwritten
29554        --
29555        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29556                                          p_header_num   => 1);
29557        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29558 
29559        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29560 
29561        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29562           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29563        END IF;
29564 
29565       --
29566       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29567       --
29568       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29569           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29570       ELSE
29571           ---------------------------------------------------------------------------------------------------
29572           -- 4262811a Switch Sign
29573           ---------------------------------------------------------------------------------------------------
29574           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29575           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29576                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29577           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29578                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29579           -- 5132302
29580           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29581                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29582 
29583       END IF;
29584 
29585       -- 4955764
29586       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29587       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29588 
29589 
29590       XLA_AE_LINES_PKG.ValidateCurrentLine;
29591       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29595                ,p_balance_type_code => l_balance_type_code);
29592 
29593       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29594                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29596 
29597    END IF;
29598 
29599    -----------------------------------------------------------------------------------------
29600    -- 4262811 Multiperiod Accounting
29601    -----------------------------------------------------------------------------------------
29602      -- No MPA option is assigned.
29603 
29604 
29605 END IF;
29606 --
29607 
29608 --
29609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29610    trace
29611       (p_msg      => 'END of AcctLineType_72'
29612       ,p_level    => C_LEVEL_PROCEDURE
29613       ,p_module   => l_log_module);
29614 END IF;
29615 --
29616 EXCEPTION
29617   WHEN xla_exceptions_pkg.application_exception THEN
29618       RAISE;
29619   WHEN OTHERS THEN
29620        xla_exceptions_pkg.raise_message
29621            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_72');
29622 END AcctLineType_72;
29623 --
29624 
29625 ---------------------------------------
29626 --
29627 -- PRIVATE FUNCTION
29628 --         AcctLineType_73
29629 --
29630 ---------------------------------------
29631 PROCEDURE AcctLineType_73 (
29632   p_application_id        IN NUMBER
29633  ,p_event_id              IN NUMBER
29634  ,p_calculate_acctd_flag  IN VARCHAR2
29635  ,p_calculate_g_l_flag    IN VARCHAR2
29636  ,p_actual_flag           IN OUT VARCHAR2
29637  ,p_balance_type_code     OUT VARCHAR2
29638  ,p_gain_or_loss_ref      OUT VARCHAR2
29639  
29640 --Cost CCID
29641  , p_source_4            IN NUMBER
29642 --Allow Account Override Flag
29643  , p_source_5            IN VARCHAR2
29644 --Adjustment Cost CCID
29645  , p_source_6            IN NUMBER
29646 --Cost Clearing CCID
29647  , p_source_7            IN NUMBER
29648 --Reversing Line Flag
29649  , p_source_23            IN VARCHAR2
29650 --Actual Upgrade Credit Accounting Class
29651  , p_source_24            IN VARCHAR2
29652 --Entered Raw Cost
29653  , p_source_25            IN NUMBER
29654 --Entered Currency Code
29655  , p_source_26            IN VARCHAR2
29656 --Accounted Raw Cost
29657  , p_source_27            IN NUMBER
29658 --Exchange Rate Date
29659  , p_source_28            IN DATE
29660 --Exchange Rate
29661  , p_source_29            IN NUMBER
29662 --Exchange Rate Type
29663  , p_source_30            IN VARCHAR2
29664 --Actual Upgrade Debit Accounting Class
29665  , p_source_31            IN VARCHAR2
29666 --Use Actuals Upgrade Attributes Flag
29667  , p_source_32            IN VARCHAR2
29668 --Expenditure Item ID
29669  , p_source_33            IN NUMBER
29670 --Cost Distribution Line Number
29671  , p_source_34            IN NUMBER
29672 --Line Type
29673  , p_source_35            IN VARCHAR2
29674  , p_source_35_meaning    IN VARCHAR2
29675 --Reversed Line Number
29676  , p_source_36            IN NUMBER
29677 )
29678 IS
29679 
29680 l_component_type              VARCHAR2(80);
29681 l_component_code              VARCHAR2(30);
29682 l_component_type_code         VARCHAR2(1);
29683 l_component_appl_id           INTEGER;
29684 l_amb_context_code            VARCHAR2(30);
29685 l_entity_code                 VARCHAR2(30);
29686 l_event_class_code            VARCHAR2(30);
29687 l_ae_header_id                NUMBER;
29688 l_event_type_code             VARCHAR2(30);
29689 l_line_definition_code        VARCHAR2(30);
29690 l_line_definition_owner_code  VARCHAR2(1);
29691 --
29692 -- adr variables
29693 l_segment                     VARCHAR2(30);
29694 l_ccid                        NUMBER;
29695 l_adr_transaction_coa_id      NUMBER;
29696 l_adr_accounting_coa_id       NUMBER;
29697 l_adr_flexfield_segment_code  VARCHAR2(30);
29698 l_adr_flex_value_set_id       NUMBER;
29699 l_adr_value_type_code         VARCHAR2(30);
29700 l_adr_value_combination_id    NUMBER;
29701 l_adr_value_segment_code      VARCHAR2(30);
29702 
29703 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29704 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29705 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29706 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29707 
29708 -- 4262811 Variables ------------------------------------------------------------------------------------------
29709 l_entered_amt_idx             NUMBER;
29710 l_accted_amt_idx              NUMBER;
29711 l_acc_rev_flag                VARCHAR2(1);
29712 l_accrual_line_num            NUMBER;
29713 l_tmp_amt                     NUMBER;
29714 l_acc_rev_natural_side_code   VARCHAR2(1);
29715 
29716 l_num_entries                 NUMBER;
29717 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29718 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29719 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29720 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29721 l_recog_line_1                NUMBER;
29722 l_recog_line_2                NUMBER;
29723 
29724 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29725 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29726 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29727 
29728 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29729 
29730 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29731 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29732 
29733 ---------------------------------------------------------------------------------------------------------------
29737 -- bulk performance
29734 
29735 
29736 --
29738 --
29739 l_balance_type_code           VARCHAR2(1);
29740 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29741 l_log_module                  VARCHAR2(240);
29742 
29743 --
29744 -- Upgrade strategy
29745 --
29746 l_actual_upg_option           VARCHAR2(1);
29747 l_enc_upg_option           VARCHAR2(1);
29748 
29749 --
29750 BEGIN
29751 --
29752 IF g_log_enabled THEN
29753       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
29754 END IF;
29755 --
29756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29757 
29758       trace
29759          (p_msg      => 'BEGIN of AcctLineType_73'
29760          ,p_level    => C_LEVEL_PROCEDURE
29761          ,p_module   => l_log_module);
29762 
29763 END IF;
29764 --
29765 l_component_type             := 'AMB_JLT';
29766 l_component_code             := 'PA_RAW_COST_ADJ';
29767 l_component_type_code        := 'S';
29768 l_component_appl_id          :=  275;
29769 l_amb_context_code           := 'DEFAULT';
29770 l_entity_code                := 'EXPENDITURES';
29771 l_event_class_code           := 'LABOR_COST_ADJ';
29772 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
29773 l_line_definition_owner_code := 'S';
29774 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
29775 --
29776 l_balance_type_code          := 'A';
29777 l_segment                     := NULL;
29778 l_ccid                        := NULL;
29779 l_adr_transaction_coa_id      := NULL;
29780 l_adr_accounting_coa_id       := NULL;
29781 l_adr_flexfield_segment_code  := NULL;
29782 l_adr_flex_value_set_id       := NULL;
29783 l_adr_value_type_code         := NULL;
29784 l_adr_value_combination_id    := NULL;
29785 l_adr_value_segment_code      := NULL;
29786 
29787 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29788 l_bflow_class_code           := '';    -- 4219869 Business Flow
29789 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29790 l_budgetary_control_flag     := 'N';
29791 
29792 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29793 l_bflow_applied_to_amt       := NULL; -- 5132302
29794 l_entered_amt_idx            := NULL;          -- 4262811
29795 l_accted_amt_idx             := NULL;          -- 4262811
29796 l_acc_rev_flag               := NULL;          -- 4262811
29797 l_accrual_line_num           := NULL;          -- 4262811
29798 l_tmp_amt                    := NULL;          -- 4262811
29799 --
29800  
29801 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29802     l_balance_type_code <> 'B' THEN
29803 
29804    --
29805    XLA_AE_LINES_PKG.SetNewLine;
29806 
29807    p_balance_type_code          := l_balance_type_code;
29808    -- set the flag so later we will know whether the gain loss line needs to be created
29809    
29810    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29811      p_actual_flag :='A';
29812    END IF;
29813 
29814    --
29815    -- bulk performance
29816    --
29817    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29818                                       p_header_num   => 0); -- 4262811
29819    --
29820    -- set accounting line options
29821    --
29822    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29823            p_natural_side_code          => 'D'
29824          , p_gain_or_loss_flag          => 'N'
29825          , p_gl_transfer_mode_code      => 'S'
29826          , p_acct_entry_type_code       => 'A'
29827          , p_switch_side_flag           => 'Y'
29828          , p_merge_duplicate_code       => 'N'
29829          );
29830    --
29831    l_acc_rev_natural_side_code := 'C';  -- 4262811
29832    -- 
29833    --
29834    -- set accounting line type info
29835    --
29836    xla_ae_lines_pkg.SetAcctLineType
29837       (p_component_type             => l_component_type
29838       ,p_event_type_code            => l_event_type_code
29839       ,p_line_definition_owner_code => l_line_definition_owner_code
29840       ,p_line_definition_code       => l_line_definition_code
29841       ,p_accounting_line_code       => l_component_code
29842       ,p_accounting_line_type_code  => l_component_type_code
29843       ,p_accounting_line_appl_id    => l_component_appl_id
29844       ,p_amb_context_code           => l_amb_context_code
29845       ,p_entity_code                => l_entity_code
29846       ,p_event_class_code           => l_event_class_code);
29847    --
29848    -- set accounting class
29849    --
29850    xla_ae_lines_pkg.SetAcctClass(
29851            p_accounting_class_code  => 'COST'
29852          , p_ae_header_id           => l_ae_header_id
29853          );
29854 
29855    --
29856    -- set rounding class
29857    --
29858    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29859                       'COST';
29860 
29861    --
29862    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29863    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29864    --
29865    -- bulk performance
29866    --
29867    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29868 
29869    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29870       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29871 
29872    -- 4955764
29873    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29874       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29875 
29876    -- 4458381 Public Sector Enh
29877    
29878    --
29882    l_accted_amt_idx  := 27;
29879    -- set accounting attributes for the line type
29880    --
29881    l_entered_amt_idx := 22;
29883    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29884    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
29885    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
29886    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
29887    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
29888    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
29889    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
29890    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
29891    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
29892    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
29893    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
29894    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
29895    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
29896    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
29897    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
29898    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
29899    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
29900    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
29901    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
29902    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
29903    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
29904    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
29905    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
29906    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
29907    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
29908    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
29909    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
29910    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
29911    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
29912    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
29913    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
29914    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
29915    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
29916    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
29917    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
29918    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
29919    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
29920    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
29921    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
29922    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
29923    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
29924    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
29925    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
29926    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
29927    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
29928    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
29929    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
29930    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
29931    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
29932    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
29933    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
29934    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
29935    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
29936    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
29937    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
29938    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
29939    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
29940    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
29941    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
29942    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
29943    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
29944 
29945    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29946    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29947 
29948    ---------------------------------------------------------------------------------------------------------------
29949    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29950    ---------------------------------------------------------------------------------------------------------------
29951    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29952 
29953    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29954    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29955 
29956    IF xla_accounting_cache_pkg.GetValueChar
29957          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29958          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29959    AND l_bflow_method_code = 'PRIOR_ENTRY'
29960 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29961    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29962          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29963        )
29964    THEN
29965          xla_ae_lines_pkg.BflowUpgEntry
29966            (p_business_method_code    => l_bflow_method_code
29967            ,p_business_class_code     => l_bflow_class_code
29968            ,p_balance_type            => l_balance_type_code);
29969    ELSE
29970       NULL;
29971 -- No business flow processing for business flow method of NONE.
29972    END IF;
29973 
29977    
29974    --
29975    -- call analytical criteria
29976    --
29978    --
29979    -- call description
29980    --
29981    -- No description or it is inherited.
29982    --
29983    -- call ADRs
29984    -- Bug 4922099
29985    --
29986    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29987         (NVL(l_actual_upg_option, 'N') = 'O') OR
29988         (NVL(l_enc_upg_option, 'N') = 'O')
29989       )
29990    THEN
29991    NULL;
29992    --
29993    --
29994    
29995   l_ccid := AcctDerRule_13(
29996            p_application_id           => p_application_id
29997          , p_ae_header_id             => l_ae_header_id 
29998 , p_source_5 => p_source_5
29999 , p_source_6 => p_source_6
30000          , x_transaction_coa_id       => l_adr_transaction_coa_id
30001          , x_accounting_coa_id        => l_adr_accounting_coa_id
30002          , x_value_type_code          => l_adr_value_type_code
30003          , p_side                     => 'NA'
30004    );
30005 
30006    xla_ae_lines_pkg.set_ccid(
30007     p_code_combination_id          => l_ccid
30008   , p_value_type_code              => l_adr_value_type_code
30009   , p_transaction_coa_id           => l_adr_transaction_coa_id
30010   , p_accounting_coa_id            => l_adr_accounting_coa_id
30011   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
30012   , p_adr_type_code                => 'S'
30013   , p_component_type               => l_component_type
30014   , p_component_code               => l_component_code
30015   , p_component_type_code          => l_component_type_code
30016   , p_component_appl_id            => l_component_appl_id
30017   , p_amb_context_code             => l_amb_context_code
30018   , p_side                         => 'NA'
30019   );
30020 
30021 
30022    --
30023    --
30024    END IF;
30025    --
30026    -- Bug 4922099
30027    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30028           (NVL(l_enc_upg_option, 'N') = 'O')
30029         ) AND
30030         (l_bflow_method_code = 'PRIOR_ENTRY')
30031       )
30032    THEN
30033       IF
30034       --
30035       1 = 2
30036       --
30037       THEN
30038       xla_accounting_err_pkg.build_message
30039                                     (p_appli_s_name            => 'XLA'
30040                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30041                                     ,p_token_1                 => 'LINE_NUMBER'
30042                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30043                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30044                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30045                                                                              l_component_type
30046                                                                             ,l_component_code
30047                                                                             ,l_component_type_code
30048                                                                             ,l_component_appl_id
30049                                                                             ,l_amb_context_code
30050                                                                             ,l_entity_code
30051                                                                             ,l_event_class_code
30052                                                                            )
30053                                     ,p_token_3                 => 'OWNER'
30054                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30055                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30056                                                                           ,p_lookup_code    => l_component_type_code
30057                                                                          )
30058                                     ,p_token_4                 => 'PRODUCT_NAME'
30059                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30060                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30061                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30062                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30063                                     ,p_ae_header_id            =>  NULL
30064                                        );
30065 
30066         IF (C_LEVEL_ERROR>= g_log_level) THEN
30067                  trace
30068                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30069                       ,p_level    => C_LEVEL_ERROR
30070                       ,p_module   => l_log_module);
30071         END IF;
30072       END IF;
30073    END IF;
30074    --
30075    --
30076    ------------------------------------------------------------------------------------------------
30077    -- 4219869 Business Flow
30078    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30079    -- Prior Entry.  Currently, the following code is always generated.
30080    ------------------------------------------------------------------------------------------------
30081    XLA_AE_LINES_PKG.ValidateCurrentLine;
30082 
30083    ------------------------------------------------------------------------------------
30084    -- 4219869 Business Flow
30085    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30086    ------------------------------------------------------------------------------------
30087    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30088 
30089    ----------------------------------------------------------------------------------
30090    -- 4219869 Business Flow
30094          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30091    -- Update journal entry status -- Need to generate this within IF <condition>
30092    ----------------------------------------------------------------------------------
30093    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30095          ,p_balance_type_code => l_balance_type_code
30096          );
30097 
30098    -------------------------------------------------------------------------------------------
30099    -- 4262811 - Generate the Accrual Reversal lines
30100    -------------------------------------------------------------------------------------------
30101    BEGIN
30102       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30103                               (g_array_event(p_event_id).array_value_num('header_index'));
30104       IF l_acc_rev_flag IS NULL THEN
30105          l_acc_rev_flag := 'N';
30106       END IF;
30107    EXCEPTION
30108       WHEN OTHERS THEN
30109          l_acc_rev_flag := 'N';
30110    END;
30111    --
30112    IF (l_acc_rev_flag = 'Y') THEN
30113 
30114        -- 4645092  ------------------------------------------------------------------------------
30115        -- To allow MPA report to determine if it should generate report process
30116        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30117        ------------------------------------------------------------------------------------------
30118 
30119        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30120        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30121 
30122        --
30123        -- Update the line information that should be overwritten
30124        --
30125        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30126                                          p_header_num   => 1);
30127        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30128 
30129        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30130 
30131        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30132           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30133        END IF;
30134 
30135       --
30136       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30137       --
30138       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30139           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30140       ELSE
30141           ---------------------------------------------------------------------------------------------------
30142           -- 4262811a Switch Sign
30143           ---------------------------------------------------------------------------------------------------
30144           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30145           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30146                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30147           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30148                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30149           -- 5132302
30150           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30151                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30152 
30153       END IF;
30154 
30155       -- 4955764
30156       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30157       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30158 
30159 
30160       XLA_AE_LINES_PKG.ValidateCurrentLine;
30161       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30162 
30163       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30164                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30165                ,p_balance_type_code => l_balance_type_code);
30166 
30167    END IF;
30168 
30169    -----------------------------------------------------------------------------------------
30170    -- 4262811 Multiperiod Accounting
30171    -----------------------------------------------------------------------------------------
30172      -- No MPA option is assigned.
30173 
30174 
30175 END IF;
30176 --
30177 
30178 --
30179 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30180    trace
30181       (p_msg      => 'END of AcctLineType_73'
30182       ,p_level    => C_LEVEL_PROCEDURE
30183       ,p_module   => l_log_module);
30184 END IF;
30185 --
30186 EXCEPTION
30187   WHEN xla_exceptions_pkg.application_exception THEN
30188       RAISE;
30189   WHEN OTHERS THEN
30190        xla_exceptions_pkg.raise_message
30191            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_73');
30192 END AcctLineType_73;
30193 --
30194 
30195 ---------------------------------------
30196 --
30197 -- PRIVATE FUNCTION
30198 --         AcctLineType_74
30199 --
30200 ---------------------------------------
30201 PROCEDURE AcctLineType_74 (
30202   p_application_id        IN NUMBER
30203  ,p_event_id              IN NUMBER
30204  ,p_calculate_acctd_flag  IN VARCHAR2
30205  ,p_calculate_g_l_flag    IN VARCHAR2
30206  ,p_actual_flag           IN OUT VARCHAR2
30207  ,p_balance_type_code     OUT VARCHAR2
30208  ,p_gain_or_loss_ref      OUT VARCHAR2
30209  
30210 --Cost CCID
30211  , p_source_4            IN NUMBER
30212 --Allow Account Override Flag
30213  , p_source_5            IN VARCHAR2
30214 --Adjustment Cost CCID
30215  , p_source_6            IN NUMBER
30219  , p_source_23            IN VARCHAR2
30216 --Cost Clearing CCID
30217  , p_source_7            IN NUMBER
30218 --Reversing Line Flag
30220 --Actual Upgrade Credit Accounting Class
30221  , p_source_24            IN VARCHAR2
30222 --Entered Raw Cost
30223  , p_source_25            IN NUMBER
30224 --Entered Currency Code
30225  , p_source_26            IN VARCHAR2
30226 --Accounted Raw Cost
30227  , p_source_27            IN NUMBER
30228 --Exchange Rate Date
30229  , p_source_28            IN DATE
30230 --Exchange Rate
30231  , p_source_29            IN NUMBER
30232 --Exchange Rate Type
30233  , p_source_30            IN VARCHAR2
30234 --Actual Upgrade Debit Accounting Class
30235  , p_source_31            IN VARCHAR2
30236 --Use Actuals Upgrade Attributes Flag
30237  , p_source_32            IN VARCHAR2
30238 --Expenditure Item ID
30239  , p_source_33            IN NUMBER
30240 --Cost Distribution Line Number
30241  , p_source_34            IN NUMBER
30242 --Line Type
30243  , p_source_35            IN VARCHAR2
30244  , p_source_35_meaning    IN VARCHAR2
30245 --Reversed Line Number
30246  , p_source_36            IN NUMBER
30247 )
30248 IS
30249 
30250 l_component_type              VARCHAR2(80);
30251 l_component_code              VARCHAR2(30);
30252 l_component_type_code         VARCHAR2(1);
30253 l_component_appl_id           INTEGER;
30254 l_amb_context_code            VARCHAR2(30);
30255 l_entity_code                 VARCHAR2(30);
30256 l_event_class_code            VARCHAR2(30);
30257 l_ae_header_id                NUMBER;
30258 l_event_type_code             VARCHAR2(30);
30259 l_line_definition_code        VARCHAR2(30);
30260 l_line_definition_owner_code  VARCHAR2(1);
30261 --
30262 -- adr variables
30263 l_segment                     VARCHAR2(30);
30264 l_ccid                        NUMBER;
30265 l_adr_transaction_coa_id      NUMBER;
30266 l_adr_accounting_coa_id       NUMBER;
30267 l_adr_flexfield_segment_code  VARCHAR2(30);
30268 l_adr_flex_value_set_id       NUMBER;
30269 l_adr_value_type_code         VARCHAR2(30);
30270 l_adr_value_combination_id    NUMBER;
30271 l_adr_value_segment_code      VARCHAR2(30);
30272 
30273 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30274 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30275 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30276 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30277 
30278 -- 4262811 Variables ------------------------------------------------------------------------------------------
30279 l_entered_amt_idx             NUMBER;
30280 l_accted_amt_idx              NUMBER;
30281 l_acc_rev_flag                VARCHAR2(1);
30282 l_accrual_line_num            NUMBER;
30283 l_tmp_amt                     NUMBER;
30284 l_acc_rev_natural_side_code   VARCHAR2(1);
30285 
30286 l_num_entries                 NUMBER;
30287 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30288 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30289 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30290 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30291 l_recog_line_1                NUMBER;
30292 l_recog_line_2                NUMBER;
30293 
30294 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30295 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30296 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30297 
30298 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30299 
30300 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30301 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30302 
30303 ---------------------------------------------------------------------------------------------------------------
30304 
30305 
30306 --
30307 -- bulk performance
30308 --
30309 l_balance_type_code           VARCHAR2(1);
30310 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30311 l_log_module                  VARCHAR2(240);
30312 
30313 --
30314 -- Upgrade strategy
30315 --
30316 l_actual_upg_option           VARCHAR2(1);
30317 l_enc_upg_option           VARCHAR2(1);
30318 
30319 --
30320 BEGIN
30321 --
30322 IF g_log_enabled THEN
30323       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
30324 END IF;
30325 --
30326 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30327 
30328       trace
30329          (p_msg      => 'BEGIN of AcctLineType_74'
30330          ,p_level    => C_LEVEL_PROCEDURE
30331          ,p_module   => l_log_module);
30332 
30333 END IF;
30334 --
30335 l_component_type             := 'AMB_JLT';
30336 l_component_code             := 'PA_RAW_COST_ADJ';
30337 l_component_type_code        := 'S';
30338 l_component_appl_id          :=  275;
30339 l_amb_context_code           := 'DEFAULT';
30340 l_entity_code                := 'EXPENDITURES';
30341 l_event_class_code           := 'WIP_COST_ADJ';
30342 l_event_type_code            := 'WIP_COST_ADJ_ALL';
30343 l_line_definition_owner_code := 'S';
30344 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
30345 --
30346 l_balance_type_code          := 'A';
30347 l_segment                     := NULL;
30348 l_ccid                        := NULL;
30349 l_adr_transaction_coa_id      := NULL;
30350 l_adr_accounting_coa_id       := NULL;
30351 l_adr_flexfield_segment_code  := NULL;
30352 l_adr_flex_value_set_id       := NULL;
30353 l_adr_value_type_code         := NULL;
30354 l_adr_value_combination_id    := NULL;
30355 l_adr_value_segment_code      := NULL;
30356 
30357 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30361 
30358 l_bflow_class_code           := '';    -- 4219869 Business Flow
30359 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30360 l_budgetary_control_flag     := 'N';
30362 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30363 l_bflow_applied_to_amt       := NULL; -- 5132302
30364 l_entered_amt_idx            := NULL;          -- 4262811
30365 l_accted_amt_idx             := NULL;          -- 4262811
30366 l_acc_rev_flag               := NULL;          -- 4262811
30367 l_accrual_line_num           := NULL;          -- 4262811
30368 l_tmp_amt                    := NULL;          -- 4262811
30369 --
30370  
30371 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30372     l_balance_type_code <> 'B' THEN
30373 
30374    --
30375    XLA_AE_LINES_PKG.SetNewLine;
30376 
30377    p_balance_type_code          := l_balance_type_code;
30378    -- set the flag so later we will know whether the gain loss line needs to be created
30379    
30380    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30381      p_actual_flag :='A';
30382    END IF;
30383 
30384    --
30385    -- bulk performance
30386    --
30387    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30388                                       p_header_num   => 0); -- 4262811
30389    --
30390    -- set accounting line options
30391    --
30392    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30393            p_natural_side_code          => 'D'
30394          , p_gain_or_loss_flag          => 'N'
30395          , p_gl_transfer_mode_code      => 'S'
30396          , p_acct_entry_type_code       => 'A'
30397          , p_switch_side_flag           => 'Y'
30398          , p_merge_duplicate_code       => 'N'
30399          );
30400    --
30401    l_acc_rev_natural_side_code := 'C';  -- 4262811
30402    -- 
30403    --
30404    -- set accounting line type info
30405    --
30406    xla_ae_lines_pkg.SetAcctLineType
30407       (p_component_type             => l_component_type
30408       ,p_event_type_code            => l_event_type_code
30409       ,p_line_definition_owner_code => l_line_definition_owner_code
30410       ,p_line_definition_code       => l_line_definition_code
30411       ,p_accounting_line_code       => l_component_code
30412       ,p_accounting_line_type_code  => l_component_type_code
30413       ,p_accounting_line_appl_id    => l_component_appl_id
30414       ,p_amb_context_code           => l_amb_context_code
30415       ,p_entity_code                => l_entity_code
30416       ,p_event_class_code           => l_event_class_code);
30417    --
30418    -- set accounting class
30419    --
30420    xla_ae_lines_pkg.SetAcctClass(
30421            p_accounting_class_code  => 'COST'
30422          , p_ae_header_id           => l_ae_header_id
30423          );
30424 
30425    --
30426    -- set rounding class
30427    --
30428    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30429                       'COST';
30430 
30431    --
30432    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30433    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30434    --
30435    -- bulk performance
30436    --
30437    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30438 
30439    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30440       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30441 
30442    -- 4955764
30443    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30444       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30445 
30446    -- 4458381 Public Sector Enh
30447    
30448    --
30449    -- set accounting attributes for the line type
30450    --
30451    l_entered_amt_idx := 22;
30452    l_accted_amt_idx  := 27;
30453    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30454    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30455    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
30456    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
30457    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
30458    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
30459    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
30460    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
30461    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
30462    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
30463    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
30464    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
30465    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
30466    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
30467    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
30468    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
30469    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
30470    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
30471    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
30472    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
30473    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
30474    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
30475    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
30476    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
30477    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
30478    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
30479    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
30483    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
30480    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
30481    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
30482    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
30484    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
30485    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
30486    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
30487    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
30488    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
30489    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
30490    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
30491    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
30492    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
30493    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
30494    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
30495    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
30496    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
30497    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
30498    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
30499    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
30500    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
30501    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
30502    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
30503    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
30504    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
30505    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
30506    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
30507    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
30508    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
30509    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
30510    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
30511    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
30512    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
30513    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
30514 
30515    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30516    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30517 
30518    ---------------------------------------------------------------------------------------------------------------
30519    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30520    ---------------------------------------------------------------------------------------------------------------
30521    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30522 
30523    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30524    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30525 
30526    IF xla_accounting_cache_pkg.GetValueChar
30527          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30528          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30529    AND l_bflow_method_code = 'PRIOR_ENTRY'
30530 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30531    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30532          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30533        )
30534    THEN
30535          xla_ae_lines_pkg.BflowUpgEntry
30536            (p_business_method_code    => l_bflow_method_code
30537            ,p_business_class_code     => l_bflow_class_code
30538            ,p_balance_type            => l_balance_type_code);
30539    ELSE
30540       NULL;
30541 -- No business flow processing for business flow method of NONE.
30542    END IF;
30543 
30544    --
30545    -- call analytical criteria
30546    --
30547    
30548    --
30549    -- call description
30550    --
30551    -- No description or it is inherited.
30552    --
30553    -- call ADRs
30554    -- Bug 4922099
30555    --
30556    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30557         (NVL(l_actual_upg_option, 'N') = 'O') OR
30558         (NVL(l_enc_upg_option, 'N') = 'O')
30559       )
30560    THEN
30561    NULL;
30562    --
30563    --
30564    
30565   l_ccid := AcctDerRule_13(
30566            p_application_id           => p_application_id
30567          , p_ae_header_id             => l_ae_header_id 
30568 , p_source_5 => p_source_5
30569 , p_source_6 => p_source_6
30570          , x_transaction_coa_id       => l_adr_transaction_coa_id
30571          , x_accounting_coa_id        => l_adr_accounting_coa_id
30572          , x_value_type_code          => l_adr_value_type_code
30573          , p_side                     => 'NA'
30574    );
30575 
30576    xla_ae_lines_pkg.set_ccid(
30577     p_code_combination_id          => l_ccid
30578   , p_value_type_code              => l_adr_value_type_code
30579   , p_transaction_coa_id           => l_adr_transaction_coa_id
30580   , p_accounting_coa_id            => l_adr_accounting_coa_id
30581   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
30582   , p_adr_type_code                => 'S'
30583   , p_component_type               => l_component_type
30584   , p_component_code               => l_component_code
30585   , p_component_type_code          => l_component_type_code
30586   , p_component_appl_id            => l_component_appl_id
30587   , p_amb_context_code             => l_amb_context_code
30588   , p_side                         => 'NA'
30589   );
30590 
30591 
30592    --
30593    --
30594    END IF;
30595    --
30596    -- Bug 4922099
30600         (l_bflow_method_code = 'PRIOR_ENTRY')
30597    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30598           (NVL(l_enc_upg_option, 'N') = 'O')
30599         ) AND
30601       )
30602    THEN
30603       IF
30604       --
30605       1 = 2
30606       --
30607       THEN
30608       xla_accounting_err_pkg.build_message
30609                                     (p_appli_s_name            => 'XLA'
30610                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30611                                     ,p_token_1                 => 'LINE_NUMBER'
30612                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30613                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30614                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30615                                                                              l_component_type
30616                                                                             ,l_component_code
30617                                                                             ,l_component_type_code
30618                                                                             ,l_component_appl_id
30619                                                                             ,l_amb_context_code
30620                                                                             ,l_entity_code
30621                                                                             ,l_event_class_code
30622                                                                            )
30623                                     ,p_token_3                 => 'OWNER'
30624                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30625                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30626                                                                           ,p_lookup_code    => l_component_type_code
30627                                                                          )
30628                                     ,p_token_4                 => 'PRODUCT_NAME'
30629                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30630                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30631                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30632                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30633                                     ,p_ae_header_id            =>  NULL
30634                                        );
30635 
30636         IF (C_LEVEL_ERROR>= g_log_level) THEN
30637                  trace
30638                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30639                       ,p_level    => C_LEVEL_ERROR
30640                       ,p_module   => l_log_module);
30641         END IF;
30642       END IF;
30643    END IF;
30644    --
30645    --
30646    ------------------------------------------------------------------------------------------------
30647    -- 4219869 Business Flow
30648    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30649    -- Prior Entry.  Currently, the following code is always generated.
30650    ------------------------------------------------------------------------------------------------
30651    XLA_AE_LINES_PKG.ValidateCurrentLine;
30652 
30653    ------------------------------------------------------------------------------------
30654    -- 4219869 Business Flow
30655    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30656    ------------------------------------------------------------------------------------
30657    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30658 
30659    ----------------------------------------------------------------------------------
30660    -- 4219869 Business Flow
30661    -- Update journal entry status -- Need to generate this within IF <condition>
30662    ----------------------------------------------------------------------------------
30663    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30664          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30665          ,p_balance_type_code => l_balance_type_code
30666          );
30667 
30668    -------------------------------------------------------------------------------------------
30669    -- 4262811 - Generate the Accrual Reversal lines
30670    -------------------------------------------------------------------------------------------
30671    BEGIN
30672       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30673                               (g_array_event(p_event_id).array_value_num('header_index'));
30674       IF l_acc_rev_flag IS NULL THEN
30675          l_acc_rev_flag := 'N';
30676       END IF;
30677    EXCEPTION
30678       WHEN OTHERS THEN
30679          l_acc_rev_flag := 'N';
30680    END;
30681    --
30682    IF (l_acc_rev_flag = 'Y') THEN
30683 
30684        -- 4645092  ------------------------------------------------------------------------------
30685        -- To allow MPA report to determine if it should generate report process
30686        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30687        ------------------------------------------------------------------------------------------
30688 
30689        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30690        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30691 
30692        --
30693        -- Update the line information that should be overwritten
30694        --
30695        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30696                                          p_header_num   => 1);
30697        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30698 
30702           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30699        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30700 
30701        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30703        END IF;
30704 
30705       --
30706       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30707       --
30708       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30709           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30710       ELSE
30711           ---------------------------------------------------------------------------------------------------
30712           -- 4262811a Switch Sign
30713           ---------------------------------------------------------------------------------------------------
30714           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30715           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30716                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30717           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30718                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30719           -- 5132302
30720           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30721                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30722 
30723       END IF;
30724 
30725       -- 4955764
30726       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30727       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30728 
30729 
30730       XLA_AE_LINES_PKG.ValidateCurrentLine;
30731       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30732 
30733       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30734                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30735                ,p_balance_type_code => l_balance_type_code);
30736 
30737    END IF;
30738 
30739    -----------------------------------------------------------------------------------------
30740    -- 4262811 Multiperiod Accounting
30741    -----------------------------------------------------------------------------------------
30742      -- No MPA option is assigned.
30743 
30744 
30745 END IF;
30746 --
30747 
30748 --
30749 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30750    trace
30751       (p_msg      => 'END of AcctLineType_74'
30752       ,p_level    => C_LEVEL_PROCEDURE
30753       ,p_module   => l_log_module);
30754 END IF;
30755 --
30756 EXCEPTION
30757   WHEN xla_exceptions_pkg.application_exception THEN
30758       RAISE;
30759   WHEN OTHERS THEN
30760        xla_exceptions_pkg.raise_message
30761            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_74');
30762 END AcctLineType_74;
30763 --
30764 
30765 ---------------------------------------
30766 --
30767 -- PRIVATE FUNCTION
30768 --         AcctLineType_75
30769 --
30770 ---------------------------------------
30771 PROCEDURE AcctLineType_75 (
30772   p_application_id        IN NUMBER
30773  ,p_event_id              IN NUMBER
30774  ,p_calculate_acctd_flag  IN VARCHAR2
30775  ,p_calculate_g_l_flag    IN VARCHAR2
30776  ,p_actual_flag           IN OUT VARCHAR2
30777  ,p_balance_type_code     OUT VARCHAR2
30778  ,p_gain_or_loss_ref      OUT VARCHAR2
30779  
30780 --Cost CCID
30781  , p_source_4            IN NUMBER
30782 --Allow Account Override Flag
30783  , p_source_5            IN VARCHAR2
30784 --Adjustment Cost CCID
30785  , p_source_6            IN NUMBER
30786 --Cost Clearing CCID
30787  , p_source_7            IN NUMBER
30788 --Reversing Line Flag
30789  , p_source_23            IN VARCHAR2
30790 --Actual Upgrade Credit Accounting Class
30791  , p_source_24            IN VARCHAR2
30792 --Entered Raw Cost
30793  , p_source_25            IN NUMBER
30794 --Entered Currency Code
30795  , p_source_26            IN VARCHAR2
30796 --Accounted Raw Cost
30797  , p_source_27            IN NUMBER
30798 --Exchange Rate Date
30799  , p_source_28            IN DATE
30800 --Exchange Rate
30801  , p_source_29            IN NUMBER
30802 --Exchange Rate Type
30803  , p_source_30            IN VARCHAR2
30804 --Actual Upgrade Debit Accounting Class
30805  , p_source_31            IN VARCHAR2
30806 --Use Actuals Upgrade Attributes Flag
30807  , p_source_32            IN VARCHAR2
30808 --Expenditure Item ID
30809  , p_source_33            IN NUMBER
30810 --Cost Distribution Line Number
30811  , p_source_34            IN NUMBER
30812 --Line Type
30813  , p_source_35            IN VARCHAR2
30814  , p_source_35_meaning    IN VARCHAR2
30815 --Reversed Line Number
30816  , p_source_36            IN NUMBER
30817 )
30818 IS
30819 
30820 l_component_type              VARCHAR2(80);
30821 l_component_code              VARCHAR2(30);
30822 l_component_type_code         VARCHAR2(1);
30823 l_component_appl_id           INTEGER;
30824 l_amb_context_code            VARCHAR2(30);
30825 l_entity_code                 VARCHAR2(30);
30826 l_event_class_code            VARCHAR2(30);
30827 l_ae_header_id                NUMBER;
30828 l_event_type_code             VARCHAR2(30);
30829 l_line_definition_code        VARCHAR2(30);
30830 l_line_definition_owner_code  VARCHAR2(1);
30831 --
30832 -- adr variables
30833 l_segment                     VARCHAR2(30);
30834 l_ccid                        NUMBER;
30838 l_adr_flex_value_set_id       NUMBER;
30835 l_adr_transaction_coa_id      NUMBER;
30836 l_adr_accounting_coa_id       NUMBER;
30837 l_adr_flexfield_segment_code  VARCHAR2(30);
30839 l_adr_value_type_code         VARCHAR2(30);
30840 l_adr_value_combination_id    NUMBER;
30841 l_adr_value_segment_code      VARCHAR2(30);
30842 
30843 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30844 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30845 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30846 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30847 
30848 -- 4262811 Variables ------------------------------------------------------------------------------------------
30849 l_entered_amt_idx             NUMBER;
30850 l_accted_amt_idx              NUMBER;
30851 l_acc_rev_flag                VARCHAR2(1);
30852 l_accrual_line_num            NUMBER;
30853 l_tmp_amt                     NUMBER;
30854 l_acc_rev_natural_side_code   VARCHAR2(1);
30855 
30856 l_num_entries                 NUMBER;
30857 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30858 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30859 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30860 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30861 l_recog_line_1                NUMBER;
30862 l_recog_line_2                NUMBER;
30863 
30864 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30865 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30866 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30867 
30868 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30869 
30870 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30871 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30872 
30873 ---------------------------------------------------------------------------------------------------------------
30874 
30875 
30876 --
30877 -- bulk performance
30878 --
30879 l_balance_type_code           VARCHAR2(1);
30880 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30881 l_log_module                  VARCHAR2(240);
30882 
30883 --
30884 -- Upgrade strategy
30885 --
30886 l_actual_upg_option           VARCHAR2(1);
30887 l_enc_upg_option           VARCHAR2(1);
30888 
30889 --
30890 BEGIN
30891 --
30892 IF g_log_enabled THEN
30893       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
30894 END IF;
30895 --
30896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30897 
30898       trace
30899          (p_msg      => 'BEGIN of AcctLineType_75'
30900          ,p_level    => C_LEVEL_PROCEDURE
30901          ,p_module   => l_log_module);
30902 
30903 END IF;
30904 --
30905 l_component_type             := 'AMB_JLT';
30906 l_component_code             := 'PA_RAW_COST_ADJ';
30907 l_component_type_code        := 'S';
30908 l_component_appl_id          :=  275;
30909 l_amb_context_code           := 'DEFAULT';
30910 l_entity_code                := 'EXPENDITURES';
30911 l_event_class_code           := 'INVENTORY_COST_ADJ';
30912 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
30913 l_line_definition_owner_code := 'S';
30914 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
30915 --
30916 l_balance_type_code          := 'A';
30917 l_segment                     := NULL;
30918 l_ccid                        := NULL;
30919 l_adr_transaction_coa_id      := NULL;
30920 l_adr_accounting_coa_id       := NULL;
30921 l_adr_flexfield_segment_code  := NULL;
30922 l_adr_flex_value_set_id       := NULL;
30923 l_adr_value_type_code         := NULL;
30924 l_adr_value_combination_id    := NULL;
30925 l_adr_value_segment_code      := NULL;
30926 
30927 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30928 l_bflow_class_code           := '';    -- 4219869 Business Flow
30929 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30930 l_budgetary_control_flag     := 'N';
30931 
30932 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30933 l_bflow_applied_to_amt       := NULL; -- 5132302
30934 l_entered_amt_idx            := NULL;          -- 4262811
30935 l_accted_amt_idx             := NULL;          -- 4262811
30936 l_acc_rev_flag               := NULL;          -- 4262811
30937 l_accrual_line_num           := NULL;          -- 4262811
30938 l_tmp_amt                    := NULL;          -- 4262811
30939 --
30940  
30941 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30942     l_balance_type_code <> 'B' THEN
30943 
30944    --
30945    XLA_AE_LINES_PKG.SetNewLine;
30946 
30947    p_balance_type_code          := l_balance_type_code;
30948    -- set the flag so later we will know whether the gain loss line needs to be created
30949    
30950    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30951      p_actual_flag :='A';
30952    END IF;
30953 
30954    --
30955    -- bulk performance
30956    --
30957    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30958                                       p_header_num   => 0); -- 4262811
30959    --
30960    -- set accounting line options
30961    --
30962    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30963            p_natural_side_code          => 'D'
30964          , p_gain_or_loss_flag          => 'N'
30965          , p_gl_transfer_mode_code      => 'S'
30966          , p_acct_entry_type_code       => 'A'
30967          , p_switch_side_flag           => 'Y'
30968          , p_merge_duplicate_code       => 'N'
30969          );
30970    --
30971    l_acc_rev_natural_side_code := 'C';  -- 4262811
30975    --
30972    -- 
30973    --
30974    -- set accounting line type info
30976    xla_ae_lines_pkg.SetAcctLineType
30977       (p_component_type             => l_component_type
30978       ,p_event_type_code            => l_event_type_code
30979       ,p_line_definition_owner_code => l_line_definition_owner_code
30980       ,p_line_definition_code       => l_line_definition_code
30981       ,p_accounting_line_code       => l_component_code
30982       ,p_accounting_line_type_code  => l_component_type_code
30983       ,p_accounting_line_appl_id    => l_component_appl_id
30984       ,p_amb_context_code           => l_amb_context_code
30985       ,p_entity_code                => l_entity_code
30986       ,p_event_class_code           => l_event_class_code);
30987    --
30988    -- set accounting class
30989    --
30990    xla_ae_lines_pkg.SetAcctClass(
30991            p_accounting_class_code  => 'COST'
30992          , p_ae_header_id           => l_ae_header_id
30993          );
30994 
30995    --
30996    -- set rounding class
30997    --
30998    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30999                       'COST';
31000 
31001    --
31002    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31003    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31004    --
31005    -- bulk performance
31006    --
31007    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31008 
31009    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31010       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31011 
31012    -- 4955764
31013    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31014       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31015 
31016    -- 4458381 Public Sector Enh
31017    
31018    --
31019    -- set accounting attributes for the line type
31020    --
31021    l_entered_amt_idx := 22;
31022    l_accted_amt_idx  := 27;
31023    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31024    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31025    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
31026    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
31027    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
31028    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
31029    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
31030    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
31031    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
31032    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
31033    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
31034    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
31035    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
31036    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
31037    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
31038    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
31039    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
31040    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
31041    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
31042    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
31043    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
31044    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
31045    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
31046    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
31047    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
31048    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
31049    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
31050    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
31051    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
31052    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
31053    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
31054    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
31055    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
31056    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
31057    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
31058    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
31059    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
31060    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
31061    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
31062    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
31063    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
31064    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
31065    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
31066    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
31067    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
31068    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
31069    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
31070    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
31071    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
31072    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
31073    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
31074    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
31075    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
31076    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
31077    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
31081    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
31078    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
31079    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
31080    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
31082    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
31083    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
31084 
31085    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31086    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31087 
31088    ---------------------------------------------------------------------------------------------------------------
31089    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31090    ---------------------------------------------------------------------------------------------------------------
31091    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31092 
31093    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31094    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31095 
31096    IF xla_accounting_cache_pkg.GetValueChar
31097          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31098          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31099    AND l_bflow_method_code = 'PRIOR_ENTRY'
31100 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31101    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31102          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31103        )
31104    THEN
31105          xla_ae_lines_pkg.BflowUpgEntry
31106            (p_business_method_code    => l_bflow_method_code
31107            ,p_business_class_code     => l_bflow_class_code
31108            ,p_balance_type            => l_balance_type_code);
31109    ELSE
31110       NULL;
31111 -- No business flow processing for business flow method of NONE.
31112    END IF;
31113 
31114    --
31115    -- call analytical criteria
31116    --
31117    
31118    --
31119    -- call description
31120    --
31121    -- No description or it is inherited.
31122    --
31123    -- call ADRs
31124    -- Bug 4922099
31125    --
31126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31127         (NVL(l_actual_upg_option, 'N') = 'O') OR
31128         (NVL(l_enc_upg_option, 'N') = 'O')
31129       )
31130    THEN
31131    NULL;
31132    --
31133    --
31134    
31135   l_ccid := AcctDerRule_13(
31136            p_application_id           => p_application_id
31137          , p_ae_header_id             => l_ae_header_id 
31138 , p_source_5 => p_source_5
31139 , p_source_6 => p_source_6
31140          , x_transaction_coa_id       => l_adr_transaction_coa_id
31141          , x_accounting_coa_id        => l_adr_accounting_coa_id
31142          , x_value_type_code          => l_adr_value_type_code
31143          , p_side                     => 'NA'
31144    );
31145 
31146    xla_ae_lines_pkg.set_ccid(
31147     p_code_combination_id          => l_ccid
31148   , p_value_type_code              => l_adr_value_type_code
31149   , p_transaction_coa_id           => l_adr_transaction_coa_id
31150   , p_accounting_coa_id            => l_adr_accounting_coa_id
31151   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
31152   , p_adr_type_code                => 'S'
31153   , p_component_type               => l_component_type
31154   , p_component_code               => l_component_code
31155   , p_component_type_code          => l_component_type_code
31156   , p_component_appl_id            => l_component_appl_id
31157   , p_amb_context_code             => l_amb_context_code
31158   , p_side                         => 'NA'
31159   );
31160 
31161 
31162    --
31163    --
31164    END IF;
31165    --
31166    -- Bug 4922099
31167    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31168           (NVL(l_enc_upg_option, 'N') = 'O')
31169         ) AND
31170         (l_bflow_method_code = 'PRIOR_ENTRY')
31171       )
31172    THEN
31173       IF
31174       --
31175       1 = 2
31176       --
31177       THEN
31178       xla_accounting_err_pkg.build_message
31179                                     (p_appli_s_name            => 'XLA'
31180                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31181                                     ,p_token_1                 => 'LINE_NUMBER'
31182                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31183                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31184                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31185                                                                              l_component_type
31186                                                                             ,l_component_code
31187                                                                             ,l_component_type_code
31188                                                                             ,l_component_appl_id
31189                                                                             ,l_amb_context_code
31190                                                                             ,l_entity_code
31191                                                                             ,l_event_class_code
31192                                                                            )
31193                                     ,p_token_3                 => 'OWNER'
31194                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31198                                     ,p_token_4                 => 'PRODUCT_NAME'
31195                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31196                                                                           ,p_lookup_code    => l_component_type_code
31197                                                                          )
31199                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31200                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31201                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31202                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31203                                     ,p_ae_header_id            =>  NULL
31204                                        );
31205 
31206         IF (C_LEVEL_ERROR>= g_log_level) THEN
31207                  trace
31208                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31209                       ,p_level    => C_LEVEL_ERROR
31210                       ,p_module   => l_log_module);
31211         END IF;
31212       END IF;
31213    END IF;
31214    --
31215    --
31216    ------------------------------------------------------------------------------------------------
31217    -- 4219869 Business Flow
31218    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31219    -- Prior Entry.  Currently, the following code is always generated.
31220    ------------------------------------------------------------------------------------------------
31221    XLA_AE_LINES_PKG.ValidateCurrentLine;
31222 
31223    ------------------------------------------------------------------------------------
31224    -- 4219869 Business Flow
31225    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31226    ------------------------------------------------------------------------------------
31227    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31228 
31229    ----------------------------------------------------------------------------------
31230    -- 4219869 Business Flow
31231    -- Update journal entry status -- Need to generate this within IF <condition>
31232    ----------------------------------------------------------------------------------
31233    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31234          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31235          ,p_balance_type_code => l_balance_type_code
31236          );
31237 
31238    -------------------------------------------------------------------------------------------
31239    -- 4262811 - Generate the Accrual Reversal lines
31240    -------------------------------------------------------------------------------------------
31241    BEGIN
31242       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31243                               (g_array_event(p_event_id).array_value_num('header_index'));
31244       IF l_acc_rev_flag IS NULL THEN
31245          l_acc_rev_flag := 'N';
31246       END IF;
31247    EXCEPTION
31248       WHEN OTHERS THEN
31249          l_acc_rev_flag := 'N';
31250    END;
31251    --
31252    IF (l_acc_rev_flag = 'Y') THEN
31253 
31254        -- 4645092  ------------------------------------------------------------------------------
31255        -- To allow MPA report to determine if it should generate report process
31256        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31257        ------------------------------------------------------------------------------------------
31258 
31259        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31260        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31261 
31262        --
31263        -- Update the line information that should be overwritten
31264        --
31265        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31266                                          p_header_num   => 1);
31267        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31268 
31269        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31270 
31271        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31272           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31273        END IF;
31274 
31275       --
31276       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31277       --
31278       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31279           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31280       ELSE
31281           ---------------------------------------------------------------------------------------------------
31282           -- 4262811a Switch Sign
31283           ---------------------------------------------------------------------------------------------------
31284           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31285           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31286                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31287           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31288                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31289           -- 5132302
31290           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31291                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31292 
31293       END IF;
31294 
31295       -- 4955764
31299 
31296       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31297       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31298 
31300       XLA_AE_LINES_PKG.ValidateCurrentLine;
31301       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31302 
31303       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31304                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31305                ,p_balance_type_code => l_balance_type_code);
31306 
31307    END IF;
31308 
31309    -----------------------------------------------------------------------------------------
31310    -- 4262811 Multiperiod Accounting
31311    -----------------------------------------------------------------------------------------
31312      -- No MPA option is assigned.
31313 
31314 
31315 END IF;
31316 --
31317 
31318 --
31319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31320    trace
31321       (p_msg      => 'END of AcctLineType_75'
31322       ,p_level    => C_LEVEL_PROCEDURE
31323       ,p_module   => l_log_module);
31324 END IF;
31325 --
31326 EXCEPTION
31327   WHEN xla_exceptions_pkg.application_exception THEN
31328       RAISE;
31329   WHEN OTHERS THEN
31330        xla_exceptions_pkg.raise_message
31331            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_75');
31332 END AcctLineType_75;
31333 --
31334 
31335 ---------------------------------------
31336 --
31337 -- PRIVATE FUNCTION
31338 --         AcctLineType_76
31339 --
31340 ---------------------------------------
31341 PROCEDURE AcctLineType_76 (
31342   p_application_id        IN NUMBER
31343  ,p_event_id              IN NUMBER
31344  ,p_calculate_acctd_flag  IN VARCHAR2
31345  ,p_calculate_g_l_flag    IN VARCHAR2
31346  ,p_actual_flag           IN OUT VARCHAR2
31347  ,p_balance_type_code     OUT VARCHAR2
31348  ,p_gain_or_loss_ref      OUT VARCHAR2
31349  
31350 --Cost CCID
31351  , p_source_4            IN NUMBER
31352 --Allow Account Override Flag
31353  , p_source_5            IN VARCHAR2
31354 --Adjustment Cost CCID
31355  , p_source_6            IN NUMBER
31356 --Cost Clearing CCID
31357  , p_source_7            IN NUMBER
31358 --Reversing Line Flag
31359  , p_source_23            IN VARCHAR2
31360 --Actual Upgrade Credit Accounting Class
31361  , p_source_24            IN VARCHAR2
31362 --Entered Raw Cost
31363  , p_source_25            IN NUMBER
31364 --Entered Currency Code
31365  , p_source_26            IN VARCHAR2
31366 --Accounted Raw Cost
31367  , p_source_27            IN NUMBER
31368 --Exchange Rate Date
31369  , p_source_28            IN DATE
31370 --Exchange Rate
31371  , p_source_29            IN NUMBER
31372 --Exchange Rate Type
31373  , p_source_30            IN VARCHAR2
31374 --Actual Upgrade Debit Accounting Class
31375  , p_source_31            IN VARCHAR2
31376 --Use Actuals Upgrade Attributes Flag
31377  , p_source_32            IN VARCHAR2
31378 --Expenditure Item ID
31379  , p_source_33            IN NUMBER
31380 --Cost Distribution Line Number
31381  , p_source_34            IN NUMBER
31382 --Line Type
31383  , p_source_35            IN VARCHAR2
31384  , p_source_35_meaning    IN VARCHAR2
31385 --Reversed Line Number
31386  , p_source_36            IN NUMBER
31387 )
31388 IS
31389 
31390 l_component_type              VARCHAR2(80);
31391 l_component_code              VARCHAR2(30);
31392 l_component_type_code         VARCHAR2(1);
31393 l_component_appl_id           INTEGER;
31394 l_amb_context_code            VARCHAR2(30);
31395 l_entity_code                 VARCHAR2(30);
31396 l_event_class_code            VARCHAR2(30);
31397 l_ae_header_id                NUMBER;
31398 l_event_type_code             VARCHAR2(30);
31399 l_line_definition_code        VARCHAR2(30);
31400 l_line_definition_owner_code  VARCHAR2(1);
31401 --
31402 -- adr variables
31403 l_segment                     VARCHAR2(30);
31404 l_ccid                        NUMBER;
31405 l_adr_transaction_coa_id      NUMBER;
31406 l_adr_accounting_coa_id       NUMBER;
31407 l_adr_flexfield_segment_code  VARCHAR2(30);
31408 l_adr_flex_value_set_id       NUMBER;
31409 l_adr_value_type_code         VARCHAR2(30);
31410 l_adr_value_combination_id    NUMBER;
31411 l_adr_value_segment_code      VARCHAR2(30);
31412 
31413 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31414 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31415 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31416 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31417 
31418 -- 4262811 Variables ------------------------------------------------------------------------------------------
31419 l_entered_amt_idx             NUMBER;
31420 l_accted_amt_idx              NUMBER;
31421 l_acc_rev_flag                VARCHAR2(1);
31422 l_accrual_line_num            NUMBER;
31423 l_tmp_amt                     NUMBER;
31424 l_acc_rev_natural_side_code   VARCHAR2(1);
31425 
31426 l_num_entries                 NUMBER;
31427 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31428 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31429 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31430 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31431 l_recog_line_1                NUMBER;
31432 l_recog_line_2                NUMBER;
31433 
31434 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31435 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31436 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31437 
31441 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31438 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31439 
31440 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31442 
31443 ---------------------------------------------------------------------------------------------------------------
31444 
31445 
31446 --
31447 -- bulk performance
31448 --
31449 l_balance_type_code           VARCHAR2(1);
31450 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31451 l_log_module                  VARCHAR2(240);
31452 
31453 --
31454 -- Upgrade strategy
31455 --
31456 l_actual_upg_option           VARCHAR2(1);
31457 l_enc_upg_option           VARCHAR2(1);
31458 
31459 --
31460 BEGIN
31461 --
31462 IF g_log_enabled THEN
31463       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
31464 END IF;
31465 --
31466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31467 
31468       trace
31469          (p_msg      => 'BEGIN of AcctLineType_76'
31470          ,p_level    => C_LEVEL_PROCEDURE
31471          ,p_module   => l_log_module);
31472 
31473 END IF;
31474 --
31475 l_component_type             := 'AMB_JLT';
31476 l_component_code             := 'PA_RAW_COST_ADJ';
31477 l_component_type_code        := 'S';
31478 l_component_appl_id          :=  275;
31479 l_amb_context_code           := 'DEFAULT';
31480 l_entity_code                := 'EXPENDITURES';
31481 l_event_class_code           := 'USG_COST_ADJ';
31482 l_event_type_code            := 'USG_COST_ADJ_ALL';
31483 l_line_definition_owner_code := 'S';
31484 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
31485 --
31486 l_balance_type_code          := 'A';
31487 l_segment                     := NULL;
31488 l_ccid                        := NULL;
31489 l_adr_transaction_coa_id      := NULL;
31490 l_adr_accounting_coa_id       := NULL;
31491 l_adr_flexfield_segment_code  := NULL;
31492 l_adr_flex_value_set_id       := NULL;
31493 l_adr_value_type_code         := NULL;
31494 l_adr_value_combination_id    := NULL;
31495 l_adr_value_segment_code      := NULL;
31496 
31497 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31498 l_bflow_class_code           := '';    -- 4219869 Business Flow
31499 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31500 l_budgetary_control_flag     := 'N';
31501 
31502 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31503 l_bflow_applied_to_amt       := NULL; -- 5132302
31504 l_entered_amt_idx            := NULL;          -- 4262811
31505 l_accted_amt_idx             := NULL;          -- 4262811
31506 l_acc_rev_flag               := NULL;          -- 4262811
31507 l_accrual_line_num           := NULL;          -- 4262811
31508 l_tmp_amt                    := NULL;          -- 4262811
31509 --
31510  
31511 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31512     l_balance_type_code <> 'B' THEN
31513 
31514    --
31515    XLA_AE_LINES_PKG.SetNewLine;
31516 
31517    p_balance_type_code          := l_balance_type_code;
31518    -- set the flag so later we will know whether the gain loss line needs to be created
31519    
31520    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31521      p_actual_flag :='A';
31522    END IF;
31523 
31524    --
31525    -- bulk performance
31526    --
31527    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31528                                       p_header_num   => 0); -- 4262811
31529    --
31530    -- set accounting line options
31531    --
31532    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31533            p_natural_side_code          => 'D'
31534          , p_gain_or_loss_flag          => 'N'
31535          , p_gl_transfer_mode_code      => 'S'
31536          , p_acct_entry_type_code       => 'A'
31537          , p_switch_side_flag           => 'Y'
31538          , p_merge_duplicate_code       => 'N'
31539          );
31540    --
31541    l_acc_rev_natural_side_code := 'C';  -- 4262811
31542    -- 
31543    --
31544    -- set accounting line type info
31545    --
31546    xla_ae_lines_pkg.SetAcctLineType
31547       (p_component_type             => l_component_type
31548       ,p_event_type_code            => l_event_type_code
31549       ,p_line_definition_owner_code => l_line_definition_owner_code
31550       ,p_line_definition_code       => l_line_definition_code
31551       ,p_accounting_line_code       => l_component_code
31552       ,p_accounting_line_type_code  => l_component_type_code
31553       ,p_accounting_line_appl_id    => l_component_appl_id
31554       ,p_amb_context_code           => l_amb_context_code
31555       ,p_entity_code                => l_entity_code
31556       ,p_event_class_code           => l_event_class_code);
31557    --
31558    -- set accounting class
31559    --
31560    xla_ae_lines_pkg.SetAcctClass(
31561            p_accounting_class_code  => 'COST'
31562          , p_ae_header_id           => l_ae_header_id
31563          );
31564 
31565    --
31566    -- set rounding class
31567    --
31568    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31569                       'COST';
31570 
31571    --
31572    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31573    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31574    --
31575    -- bulk performance
31576    --
31577    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31578 
31579    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31583    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31580       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31581 
31582    -- 4955764
31584       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31585 
31586    -- 4458381 Public Sector Enh
31587    
31588    --
31589    -- set accounting attributes for the line type
31590    --
31591    l_entered_amt_idx := 22;
31592    l_accted_amt_idx  := 27;
31593    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31594    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31595    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
31596    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
31597    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
31598    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
31599    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
31600    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
31601    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
31602    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
31603    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
31604    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
31605    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
31606    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
31607    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
31608    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
31609    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
31610    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
31611    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
31612    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
31613    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
31614    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
31615    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
31616    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
31617    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
31618    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
31619    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
31620    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
31621    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
31622    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
31623    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
31624    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
31625    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
31626    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
31627    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
31628    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
31629    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
31630    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
31631    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
31632    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
31633    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
31634    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
31635    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
31636    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
31637    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
31638    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
31639    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
31640    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
31641    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
31642    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
31643    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
31644    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
31645    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
31646    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
31647    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
31648    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
31649    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
31650    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
31651    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
31652    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
31653    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
31654 
31655    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31656    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31657 
31658    ---------------------------------------------------------------------------------------------------------------
31659    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31660    ---------------------------------------------------------------------------------------------------------------
31661    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31662 
31663    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31664    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31665 
31666    IF xla_accounting_cache_pkg.GetValueChar
31667          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31668          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31669    AND l_bflow_method_code = 'PRIOR_ENTRY'
31670 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31671    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31672          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31673        )
31674    THEN
31678            ,p_balance_type            => l_balance_type_code);
31675          xla_ae_lines_pkg.BflowUpgEntry
31676            (p_business_method_code    => l_bflow_method_code
31677            ,p_business_class_code     => l_bflow_class_code
31679    ELSE
31680       NULL;
31681 -- No business flow processing for business flow method of NONE.
31682    END IF;
31683 
31684    --
31685    -- call analytical criteria
31686    --
31687    
31688    --
31689    -- call description
31690    --
31691    -- No description or it is inherited.
31692    --
31693    -- call ADRs
31694    -- Bug 4922099
31695    --
31696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31697         (NVL(l_actual_upg_option, 'N') = 'O') OR
31698         (NVL(l_enc_upg_option, 'N') = 'O')
31699       )
31700    THEN
31701    NULL;
31702    --
31703    --
31704    
31705   l_ccid := AcctDerRule_13(
31706            p_application_id           => p_application_id
31707          , p_ae_header_id             => l_ae_header_id 
31708 , p_source_5 => p_source_5
31709 , p_source_6 => p_source_6
31710          , x_transaction_coa_id       => l_adr_transaction_coa_id
31711          , x_accounting_coa_id        => l_adr_accounting_coa_id
31712          , x_value_type_code          => l_adr_value_type_code
31713          , p_side                     => 'NA'
31714    );
31715 
31716    xla_ae_lines_pkg.set_ccid(
31717     p_code_combination_id          => l_ccid
31718   , p_value_type_code              => l_adr_value_type_code
31719   , p_transaction_coa_id           => l_adr_transaction_coa_id
31720   , p_accounting_coa_id            => l_adr_accounting_coa_id
31721   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
31722   , p_adr_type_code                => 'S'
31723   , p_component_type               => l_component_type
31724   , p_component_code               => l_component_code
31725   , p_component_type_code          => l_component_type_code
31726   , p_component_appl_id            => l_component_appl_id
31727   , p_amb_context_code             => l_amb_context_code
31728   , p_side                         => 'NA'
31729   );
31730 
31731 
31732    --
31733    --
31734    END IF;
31735    --
31736    -- Bug 4922099
31737    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31738           (NVL(l_enc_upg_option, 'N') = 'O')
31739         ) AND
31740         (l_bflow_method_code = 'PRIOR_ENTRY')
31741       )
31742    THEN
31743       IF
31744       --
31745       1 = 2
31746       --
31747       THEN
31748       xla_accounting_err_pkg.build_message
31749                                     (p_appli_s_name            => 'XLA'
31750                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31751                                     ,p_token_1                 => 'LINE_NUMBER'
31752                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31753                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31754                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31755                                                                              l_component_type
31756                                                                             ,l_component_code
31757                                                                             ,l_component_type_code
31758                                                                             ,l_component_appl_id
31759                                                                             ,l_amb_context_code
31760                                                                             ,l_entity_code
31761                                                                             ,l_event_class_code
31762                                                                            )
31763                                     ,p_token_3                 => 'OWNER'
31764                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31765                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31766                                                                           ,p_lookup_code    => l_component_type_code
31767                                                                          )
31768                                     ,p_token_4                 => 'PRODUCT_NAME'
31769                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31770                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31771                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31772                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31773                                     ,p_ae_header_id            =>  NULL
31774                                        );
31775 
31776         IF (C_LEVEL_ERROR>= g_log_level) THEN
31777                  trace
31778                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31779                       ,p_level    => C_LEVEL_ERROR
31780                       ,p_module   => l_log_module);
31781         END IF;
31782       END IF;
31783    END IF;
31784    --
31785    --
31786    ------------------------------------------------------------------------------------------------
31787    -- 4219869 Business Flow
31788    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31789    -- Prior Entry.  Currently, the following code is always generated.
31790    ------------------------------------------------------------------------------------------------
31791    XLA_AE_LINES_PKG.ValidateCurrentLine;
31792 
31793    ------------------------------------------------------------------------------------
31797    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31794    -- 4219869 Business Flow
31795    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31796    ------------------------------------------------------------------------------------
31798 
31799    ----------------------------------------------------------------------------------
31800    -- 4219869 Business Flow
31801    -- Update journal entry status -- Need to generate this within IF <condition>
31802    ----------------------------------------------------------------------------------
31803    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31804          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31805          ,p_balance_type_code => l_balance_type_code
31806          );
31807 
31808    -------------------------------------------------------------------------------------------
31809    -- 4262811 - Generate the Accrual Reversal lines
31810    -------------------------------------------------------------------------------------------
31811    BEGIN
31812       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31813                               (g_array_event(p_event_id).array_value_num('header_index'));
31814       IF l_acc_rev_flag IS NULL THEN
31815          l_acc_rev_flag := 'N';
31816       END IF;
31817    EXCEPTION
31818       WHEN OTHERS THEN
31819          l_acc_rev_flag := 'N';
31820    END;
31821    --
31822    IF (l_acc_rev_flag = 'Y') THEN
31823 
31824        -- 4645092  ------------------------------------------------------------------------------
31825        -- To allow MPA report to determine if it should generate report process
31826        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31827        ------------------------------------------------------------------------------------------
31828 
31829        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31830        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31831 
31832        --
31833        -- Update the line information that should be overwritten
31834        --
31835        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31836                                          p_header_num   => 1);
31837        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31838 
31839        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31840 
31841        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31842           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31843        END IF;
31844 
31845       --
31846       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31847       --
31848       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31849           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31850       ELSE
31851           ---------------------------------------------------------------------------------------------------
31852           -- 4262811a Switch Sign
31853           ---------------------------------------------------------------------------------------------------
31854           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31855           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31856                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31857           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31858                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31859           -- 5132302
31860           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31861                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31862 
31863       END IF;
31864 
31865       -- 4955764
31866       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31867       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31868 
31869 
31870       XLA_AE_LINES_PKG.ValidateCurrentLine;
31871       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31872 
31873       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31874                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31875                ,p_balance_type_code => l_balance_type_code);
31876 
31877    END IF;
31878 
31879    -----------------------------------------------------------------------------------------
31880    -- 4262811 Multiperiod Accounting
31881    -----------------------------------------------------------------------------------------
31882      -- No MPA option is assigned.
31883 
31884 
31885 END IF;
31886 --
31887 
31888 --
31889 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31890    trace
31891       (p_msg      => 'END of AcctLineType_76'
31892       ,p_level    => C_LEVEL_PROCEDURE
31893       ,p_module   => l_log_module);
31894 END IF;
31895 --
31896 EXCEPTION
31897   WHEN xla_exceptions_pkg.application_exception THEN
31898       RAISE;
31899   WHEN OTHERS THEN
31900        xla_exceptions_pkg.raise_message
31901            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_76');
31902 END AcctLineType_76;
31903 --
31904 
31905 ---------------------------------------
31906 --
31907 -- PRIVATE FUNCTION
31908 --         AcctLineType_77
31909 --
31910 ---------------------------------------
31911 PROCEDURE AcctLineType_77 (
31912   p_application_id        IN NUMBER
31913  ,p_event_id              IN NUMBER
31914  ,p_calculate_acctd_flag  IN VARCHAR2
31918  ,p_gain_or_loss_ref      OUT VARCHAR2
31915  ,p_calculate_g_l_flag    IN VARCHAR2
31916  ,p_actual_flag           IN OUT VARCHAR2
31917  ,p_balance_type_code     OUT VARCHAR2
31919  
31920 --Cost CCID
31921  , p_source_4            IN NUMBER
31922 --Allow Account Override Flag
31923  , p_source_5            IN VARCHAR2
31924 --Adjustment Cost CCID
31925  , p_source_6            IN NUMBER
31926 --Cost Clearing CCID
31927  , p_source_7            IN NUMBER
31928 --Exchange Rate Variance Flag
31929  , p_source_22            IN VARCHAR2
31930 --Reversing Line Flag
31931  , p_source_23            IN VARCHAR2
31932 --Actual Upgrade Credit Accounting Class
31933  , p_source_24            IN VARCHAR2
31934 --Entered Raw Cost
31935  , p_source_25            IN NUMBER
31936 --Entered Currency Code
31937  , p_source_26            IN VARCHAR2
31938 --Accounted Raw Cost
31939  , p_source_27            IN NUMBER
31940 --Exchange Rate Date
31941  , p_source_28            IN DATE
31942 --Exchange Rate
31943  , p_source_29            IN NUMBER
31944 --Exchange Rate Type
31945  , p_source_30            IN VARCHAR2
31946 --Actual Upgrade Debit Accounting Class
31947  , p_source_31            IN VARCHAR2
31948 --Use Actuals Upgrade Attributes Flag
31949  , p_source_32            IN VARCHAR2
31950 --Expenditure Item ID
31951  , p_source_33            IN NUMBER
31952 --Cost Distribution Line Number
31953  , p_source_34            IN NUMBER
31954 --Line Type
31955  , p_source_35            IN VARCHAR2
31956  , p_source_35_meaning    IN VARCHAR2
31957 --Reversed Line Number
31958  , p_source_36            IN NUMBER
31959 )
31960 IS
31961 
31962 l_component_type              VARCHAR2(80);
31963 l_component_code              VARCHAR2(30);
31964 l_component_type_code         VARCHAR2(1);
31965 l_component_appl_id           INTEGER;
31966 l_amb_context_code            VARCHAR2(30);
31967 l_entity_code                 VARCHAR2(30);
31968 l_event_class_code            VARCHAR2(30);
31969 l_ae_header_id                NUMBER;
31970 l_event_type_code             VARCHAR2(30);
31971 l_line_definition_code        VARCHAR2(30);
31972 l_line_definition_owner_code  VARCHAR2(1);
31973 --
31974 -- adr variables
31975 l_segment                     VARCHAR2(30);
31976 l_ccid                        NUMBER;
31977 l_adr_transaction_coa_id      NUMBER;
31978 l_adr_accounting_coa_id       NUMBER;
31979 l_adr_flexfield_segment_code  VARCHAR2(30);
31980 l_adr_flex_value_set_id       NUMBER;
31981 l_adr_value_type_code         VARCHAR2(30);
31982 l_adr_value_combination_id    NUMBER;
31983 l_adr_value_segment_code      VARCHAR2(30);
31984 
31985 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31986 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31987 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31988 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31989 
31990 -- 4262811 Variables ------------------------------------------------------------------------------------------
31991 l_entered_amt_idx             NUMBER;
31992 l_accted_amt_idx              NUMBER;
31993 l_acc_rev_flag                VARCHAR2(1);
31994 l_accrual_line_num            NUMBER;
31995 l_tmp_amt                     NUMBER;
31996 l_acc_rev_natural_side_code   VARCHAR2(1);
31997 
31998 l_num_entries                 NUMBER;
31999 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32000 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32001 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32002 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32003 l_recog_line_1                NUMBER;
32004 l_recog_line_2                NUMBER;
32005 
32006 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32007 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32008 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32009 
32010 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32011 
32012 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32013 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32014 
32015 ---------------------------------------------------------------------------------------------------------------
32016 
32017 
32018 --
32019 -- bulk performance
32020 --
32021 l_balance_type_code           VARCHAR2(1);
32022 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32023 l_log_module                  VARCHAR2(240);
32024 
32025 --
32026 -- Upgrade strategy
32027 --
32028 l_actual_upg_option           VARCHAR2(1);
32029 l_enc_upg_option           VARCHAR2(1);
32030 
32031 --
32032 BEGIN
32033 --
32034 IF g_log_enabled THEN
32035       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
32036 END IF;
32037 --
32038 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32039 
32040       trace
32041          (p_msg      => 'BEGIN of AcctLineType_77'
32042          ,p_level    => C_LEVEL_PROCEDURE
32043          ,p_module   => l_log_module);
32044 
32045 END IF;
32046 --
32047 l_component_type             := 'AMB_JLT';
32048 l_component_code             := 'PA_RAW_COST_ADJ';
32049 l_component_type_code        := 'S';
32050 l_component_appl_id          :=  275;
32051 l_amb_context_code           := 'DEFAULT';
32052 l_entity_code                := 'EXPENDITURES';
32053 l_event_class_code           := 'SUPPLIER_COST_ADJ';
32054 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
32055 l_line_definition_owner_code := 'S';
32056 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
32057 --
32058 l_balance_type_code          := 'A';
32062 l_adr_accounting_coa_id       := NULL;
32059 l_segment                     := NULL;
32060 l_ccid                        := NULL;
32061 l_adr_transaction_coa_id      := NULL;
32063 l_adr_flexfield_segment_code  := NULL;
32064 l_adr_flex_value_set_id       := NULL;
32065 l_adr_value_type_code         := NULL;
32066 l_adr_value_combination_id    := NULL;
32067 l_adr_value_segment_code      := NULL;
32068 
32069 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32070 l_bflow_class_code           := '';    -- 4219869 Business Flow
32071 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32072 l_budgetary_control_flag     := 'N';
32073 
32074 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32075 l_bflow_applied_to_amt       := NULL; -- 5132302
32076 l_entered_amt_idx            := NULL;          -- 4262811
32077 l_accted_amt_idx             := NULL;          -- 4262811
32078 l_acc_rev_flag               := NULL;          -- 4262811
32079 l_accrual_line_num           := NULL;          -- 4262811
32080 l_tmp_amt                    := NULL;          -- 4262811
32081 --
32082  
32083 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32084     l_balance_type_code <> 'B' THEN
32085 IF NVL(p_source_22,'
32086 ') =  'N'
32087  THEN 
32088 
32089    --
32090    XLA_AE_LINES_PKG.SetNewLine;
32091 
32092    p_balance_type_code          := l_balance_type_code;
32093    -- set the flag so later we will know whether the gain loss line needs to be created
32094    
32095    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32096      p_actual_flag :='A';
32097    END IF;
32098 
32099    --
32100    -- bulk performance
32101    --
32102    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32103                                       p_header_num   => 0); -- 4262811
32104    --
32105    -- set accounting line options
32106    --
32107    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32108            p_natural_side_code          => 'D'
32109          , p_gain_or_loss_flag          => 'N'
32110          , p_gl_transfer_mode_code      => 'S'
32111          , p_acct_entry_type_code       => 'A'
32112          , p_switch_side_flag           => 'Y'
32113          , p_merge_duplicate_code       => 'N'
32114          );
32115    --
32116    l_acc_rev_natural_side_code := 'C';  -- 4262811
32117    -- 
32118    --
32119    -- set accounting line type info
32120    --
32121    xla_ae_lines_pkg.SetAcctLineType
32122       (p_component_type             => l_component_type
32123       ,p_event_type_code            => l_event_type_code
32124       ,p_line_definition_owner_code => l_line_definition_owner_code
32125       ,p_line_definition_code       => l_line_definition_code
32126       ,p_accounting_line_code       => l_component_code
32127       ,p_accounting_line_type_code  => l_component_type_code
32128       ,p_accounting_line_appl_id    => l_component_appl_id
32129       ,p_amb_context_code           => l_amb_context_code
32130       ,p_entity_code                => l_entity_code
32131       ,p_event_class_code           => l_event_class_code);
32132    --
32133    -- set accounting class
32134    --
32135    xla_ae_lines_pkg.SetAcctClass(
32136            p_accounting_class_code  => 'COST'
32137          , p_ae_header_id           => l_ae_header_id
32138          );
32139 
32140    --
32141    -- set rounding class
32142    --
32143    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32144                       'COST';
32145 
32146    --
32147    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32148    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32149    --
32150    -- bulk performance
32151    --
32152    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32153 
32154    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32155       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32156 
32157    -- 4955764
32158    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32159       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32160 
32161    -- 4458381 Public Sector Enh
32162    
32163    --
32164    -- set accounting attributes for the line type
32165    --
32166    l_entered_amt_idx := 22;
32167    l_accted_amt_idx  := 27;
32168    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32169    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32170    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
32171    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
32172    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
32173    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
32174    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
32175    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
32176    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
32177    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
32178    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
32179    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
32180    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
32181    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
32182    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
32183    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
32184    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
32185    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
32186    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
32190    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
32187    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
32188    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
32189    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
32191    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
32192    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
32193    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
32194    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
32195    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
32196    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
32197    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
32198    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
32199    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
32200    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
32201    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
32202    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
32203    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
32204    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
32205    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
32206    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
32207    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
32208    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
32209    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
32210    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
32211    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
32212    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
32213    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
32214    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
32215    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
32216    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
32217    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
32218    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
32219    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
32220    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
32221    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
32222    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
32223    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
32224    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
32225    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
32226    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
32227    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
32228    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
32229 
32230    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32231    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32232 
32233    ---------------------------------------------------------------------------------------------------------------
32234    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32235    ---------------------------------------------------------------------------------------------------------------
32236    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32237 
32238    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32239    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32240 
32241    IF xla_accounting_cache_pkg.GetValueChar
32242          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32243          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32244    AND l_bflow_method_code = 'PRIOR_ENTRY'
32245 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32246    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32247          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32248        )
32249    THEN
32250          xla_ae_lines_pkg.BflowUpgEntry
32251            (p_business_method_code    => l_bflow_method_code
32252            ,p_business_class_code     => l_bflow_class_code
32253            ,p_balance_type            => l_balance_type_code);
32254    ELSE
32255       NULL;
32256 -- No business flow processing for business flow method of NONE.
32257    END IF;
32258 
32259    --
32260    -- call analytical criteria
32261    --
32262    
32263    --
32264    -- call description
32265    --
32266    -- No description or it is inherited.
32267    --
32268    -- call ADRs
32269    -- Bug 4922099
32270    --
32271    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32272         (NVL(l_actual_upg_option, 'N') = 'O') OR
32273         (NVL(l_enc_upg_option, 'N') = 'O')
32274       )
32275    THEN
32276    NULL;
32277    --
32278    --
32279    
32280   l_ccid := AcctDerRule_13(
32281            p_application_id           => p_application_id
32282          , p_ae_header_id             => l_ae_header_id 
32283 , p_source_5 => p_source_5
32284 , p_source_6 => p_source_6
32285          , x_transaction_coa_id       => l_adr_transaction_coa_id
32286          , x_accounting_coa_id        => l_adr_accounting_coa_id
32287          , x_value_type_code          => l_adr_value_type_code
32288          , p_side                     => 'NA'
32289    );
32290 
32291    xla_ae_lines_pkg.set_ccid(
32292     p_code_combination_id          => l_ccid
32293   , p_value_type_code              => l_adr_value_type_code
32294   , p_transaction_coa_id           => l_adr_transaction_coa_id
32295   , p_accounting_coa_id            => l_adr_accounting_coa_id
32296   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
32300   , p_component_type_code          => l_component_type_code
32297   , p_adr_type_code                => 'S'
32298   , p_component_type               => l_component_type
32299   , p_component_code               => l_component_code
32301   , p_component_appl_id            => l_component_appl_id
32302   , p_amb_context_code             => l_amb_context_code
32303   , p_side                         => 'NA'
32304   );
32305 
32306 
32307    --
32308    --
32309    END IF;
32310    --
32311    -- Bug 4922099
32312    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32313           (NVL(l_enc_upg_option, 'N') = 'O')
32314         ) AND
32315         (l_bflow_method_code = 'PRIOR_ENTRY')
32316       )
32317    THEN
32318       IF
32319       --
32320       1 = 2
32321       --
32322       THEN
32323       xla_accounting_err_pkg.build_message
32324                                     (p_appli_s_name            => 'XLA'
32325                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32326                                     ,p_token_1                 => 'LINE_NUMBER'
32327                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32328                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32329                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32330                                                                              l_component_type
32331                                                                             ,l_component_code
32332                                                                             ,l_component_type_code
32333                                                                             ,l_component_appl_id
32334                                                                             ,l_amb_context_code
32335                                                                             ,l_entity_code
32336                                                                             ,l_event_class_code
32337                                                                            )
32338                                     ,p_token_3                 => 'OWNER'
32339                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32340                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32341                                                                           ,p_lookup_code    => l_component_type_code
32342                                                                          )
32343                                     ,p_token_4                 => 'PRODUCT_NAME'
32344                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32345                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32346                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32347                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32348                                     ,p_ae_header_id            =>  NULL
32349                                        );
32350 
32351         IF (C_LEVEL_ERROR>= g_log_level) THEN
32352                  trace
32353                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32354                       ,p_level    => C_LEVEL_ERROR
32355                       ,p_module   => l_log_module);
32356         END IF;
32357       END IF;
32358    END IF;
32359    --
32360    --
32361    ------------------------------------------------------------------------------------------------
32362    -- 4219869 Business Flow
32363    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32364    -- Prior Entry.  Currently, the following code is always generated.
32365    ------------------------------------------------------------------------------------------------
32366    XLA_AE_LINES_PKG.ValidateCurrentLine;
32367 
32368    ------------------------------------------------------------------------------------
32369    -- 4219869 Business Flow
32370    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32371    ------------------------------------------------------------------------------------
32372    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32373 
32374    ----------------------------------------------------------------------------------
32375    -- 4219869 Business Flow
32376    -- Update journal entry status -- Need to generate this within IF <condition>
32377    ----------------------------------------------------------------------------------
32378    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32379          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32380          ,p_balance_type_code => l_balance_type_code
32381          );
32382 
32383    -------------------------------------------------------------------------------------------
32384    -- 4262811 - Generate the Accrual Reversal lines
32385    -------------------------------------------------------------------------------------------
32386    BEGIN
32387       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32388                               (g_array_event(p_event_id).array_value_num('header_index'));
32389       IF l_acc_rev_flag IS NULL THEN
32390          l_acc_rev_flag := 'N';
32391       END IF;
32392    EXCEPTION
32393       WHEN OTHERS THEN
32394          l_acc_rev_flag := 'N';
32395    END;
32396    --
32397    IF (l_acc_rev_flag = 'Y') THEN
32398 
32399        -- 4645092  ------------------------------------------------------------------------------
32400        -- To allow MPA report to determine if it should generate report process
32401        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32405        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32402        ------------------------------------------------------------------------------------------
32403 
32404        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32406 
32407        --
32408        -- Update the line information that should be overwritten
32409        --
32410        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32411                                          p_header_num   => 1);
32412        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32413 
32414        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32415 
32416        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32417           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32418        END IF;
32419 
32420       --
32421       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32422       --
32423       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32424           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32425       ELSE
32426           ---------------------------------------------------------------------------------------------------
32427           -- 4262811a Switch Sign
32428           ---------------------------------------------------------------------------------------------------
32429           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32430           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32431                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32432           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32433                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32434           -- 5132302
32435           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32436                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32437 
32438       END IF;
32439 
32440       -- 4955764
32441       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32442       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32443 
32444 
32445       XLA_AE_LINES_PKG.ValidateCurrentLine;
32446       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32447 
32448       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32449                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32450                ,p_balance_type_code => l_balance_type_code);
32451 
32452    END IF;
32453 
32454    -----------------------------------------------------------------------------------------
32455    -- 4262811 Multiperiod Accounting
32456    -----------------------------------------------------------------------------------------
32457      -- No MPA option is assigned.
32458 
32459 
32460 END IF;
32461 END IF;
32462 --
32463 
32464 --
32465 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32466    trace
32467       (p_msg      => 'END of AcctLineType_77'
32468       ,p_level    => C_LEVEL_PROCEDURE
32469       ,p_module   => l_log_module);
32470 END IF;
32471 --
32472 EXCEPTION
32473   WHEN xla_exceptions_pkg.application_exception THEN
32474       RAISE;
32475   WHEN OTHERS THEN
32476        xla_exceptions_pkg.raise_message
32477            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_77');
32478 END AcctLineType_77;
32479 --
32480 
32481 ---------------------------------------
32482 --
32483 -- PRIVATE FUNCTION
32484 --         AcctLineType_78
32485 --
32486 ---------------------------------------
32487 PROCEDURE AcctLineType_78 (
32488   p_application_id        IN NUMBER
32489  ,p_event_id              IN NUMBER
32490  ,p_calculate_acctd_flag  IN VARCHAR2
32491  ,p_calculate_g_l_flag    IN VARCHAR2
32492  ,p_actual_flag           IN OUT VARCHAR2
32493  ,p_balance_type_code     OUT VARCHAR2
32494  ,p_gain_or_loss_ref      OUT VARCHAR2
32495  
32496 --Cost CCID
32497  , p_source_4            IN NUMBER
32498 --Allow Account Override Flag
32499  , p_source_5            IN VARCHAR2
32500 --Cost Clearing CCID
32501  , p_source_7            IN NUMBER
32502 --Adjustment Cost Clearing CCID
32503  , p_source_8            IN NUMBER
32504 --Exchange Rate Variance Flag
32505  , p_source_22            IN VARCHAR2
32506 --Reversing Line Flag
32507  , p_source_23            IN VARCHAR2
32508 --Actual Upgrade Credit Accounting Class
32509  , p_source_24            IN VARCHAR2
32510 --Entered Raw Cost
32511  , p_source_25            IN NUMBER
32512 --Entered Currency Code
32513  , p_source_26            IN VARCHAR2
32514 --Accounted Raw Cost
32515  , p_source_27            IN NUMBER
32516 --Exchange Rate Date
32517  , p_source_28            IN DATE
32518 --Exchange Rate
32519  , p_source_29            IN NUMBER
32520 --Exchange Rate Type
32521  , p_source_30            IN VARCHAR2
32522 --Actual Upgrade Debit Accounting Class
32523  , p_source_31            IN VARCHAR2
32524 --Use Actuals Upgrade Attributes Flag
32525  , p_source_32            IN VARCHAR2
32526 --Expenditure Item ID
32527  , p_source_33            IN NUMBER
32528 --Cost Distribution Line Number
32529  , p_source_34            IN NUMBER
32530 --Line Type
32531  , p_source_35            IN VARCHAR2
32532  , p_source_35_meaning    IN VARCHAR2
32533 --Reversed Line Number
32534  , p_source_36            IN NUMBER
32535 )
32536 IS
32537 
32541 l_component_appl_id           INTEGER;
32538 l_component_type              VARCHAR2(80);
32539 l_component_code              VARCHAR2(30);
32540 l_component_type_code         VARCHAR2(1);
32542 l_amb_context_code            VARCHAR2(30);
32543 l_entity_code                 VARCHAR2(30);
32544 l_event_class_code            VARCHAR2(30);
32545 l_ae_header_id                NUMBER;
32546 l_event_type_code             VARCHAR2(30);
32547 l_line_definition_code        VARCHAR2(30);
32548 l_line_definition_owner_code  VARCHAR2(1);
32549 --
32550 -- adr variables
32551 l_segment                     VARCHAR2(30);
32552 l_ccid                        NUMBER;
32553 l_adr_transaction_coa_id      NUMBER;
32554 l_adr_accounting_coa_id       NUMBER;
32555 l_adr_flexfield_segment_code  VARCHAR2(30);
32556 l_adr_flex_value_set_id       NUMBER;
32557 l_adr_value_type_code         VARCHAR2(30);
32558 l_adr_value_combination_id    NUMBER;
32559 l_adr_value_segment_code      VARCHAR2(30);
32560 
32561 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32562 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32563 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32564 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32565 
32566 -- 4262811 Variables ------------------------------------------------------------------------------------------
32567 l_entered_amt_idx             NUMBER;
32568 l_accted_amt_idx              NUMBER;
32569 l_acc_rev_flag                VARCHAR2(1);
32570 l_accrual_line_num            NUMBER;
32571 l_tmp_amt                     NUMBER;
32572 l_acc_rev_natural_side_code   VARCHAR2(1);
32573 
32574 l_num_entries                 NUMBER;
32575 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32576 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32577 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32578 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32579 l_recog_line_1                NUMBER;
32580 l_recog_line_2                NUMBER;
32581 
32582 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32583 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32584 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32585 
32586 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32587 
32588 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32589 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32590 
32591 ---------------------------------------------------------------------------------------------------------------
32592 
32593 
32594 --
32595 -- bulk performance
32596 --
32597 l_balance_type_code           VARCHAR2(1);
32598 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32599 l_log_module                  VARCHAR2(240);
32600 
32601 --
32602 -- Upgrade strategy
32603 --
32604 l_actual_upg_option           VARCHAR2(1);
32605 l_enc_upg_option           VARCHAR2(1);
32606 
32607 --
32608 BEGIN
32609 --
32610 IF g_log_enabled THEN
32611       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
32612 END IF;
32613 --
32614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32615 
32616       trace
32617          (p_msg      => 'BEGIN of AcctLineType_78'
32618          ,p_level    => C_LEVEL_PROCEDURE
32619          ,p_module   => l_log_module);
32620 
32621 END IF;
32622 --
32623 l_component_type             := 'AMB_JLT';
32624 l_component_code             := 'PA_RAW_COST_ADJ_CLEAR_FED';
32625 l_component_type_code        := 'S';
32626 l_component_appl_id          :=  275;
32627 l_amb_context_code           := 'DEFAULT';
32628 l_entity_code                := 'EXPENDITURES';
32629 l_event_class_code           := 'SUPPLIER_COST_ADJ';
32630 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
32631 l_line_definition_owner_code := 'S';
32632 l_line_definition_code       := 'FV_PROJECTS_JLD';
32633 --
32634 l_balance_type_code          := 'A';
32635 l_segment                     := NULL;
32636 l_ccid                        := NULL;
32637 l_adr_transaction_coa_id      := NULL;
32638 l_adr_accounting_coa_id       := NULL;
32639 l_adr_flexfield_segment_code  := NULL;
32640 l_adr_flex_value_set_id       := NULL;
32641 l_adr_value_type_code         := NULL;
32642 l_adr_value_combination_id    := NULL;
32643 l_adr_value_segment_code      := NULL;
32644 
32645 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32646 l_bflow_class_code           := '';    -- 4219869 Business Flow
32647 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32648 l_budgetary_control_flag     := 'N';
32649 
32650 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32651 l_bflow_applied_to_amt       := NULL; -- 5132302
32652 l_entered_amt_idx            := NULL;          -- 4262811
32653 l_accted_amt_idx             := NULL;          -- 4262811
32654 l_acc_rev_flag               := NULL;          -- 4262811
32655 l_accrual_line_num           := NULL;          -- 4262811
32656 l_tmp_amt                    := NULL;          -- 4262811
32657 --
32658  
32659 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32660     l_balance_type_code <> 'B' THEN
32661 IF NVL(p_source_22,'
32662 ') =  'N'
32663  THEN 
32664 
32665    --
32666    XLA_AE_LINES_PKG.SetNewLine;
32667 
32668    p_balance_type_code          := l_balance_type_code;
32669    -- set the flag so later we will know whether the gain loss line needs to be created
32670    
32671    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32672      p_actual_flag :='A';
32673    END IF;
32674 
32675    --
32679                                       p_header_num   => 0); -- 4262811
32676    -- bulk performance
32677    --
32678    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32680    --
32681    -- set accounting line options
32682    --
32683    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32684            p_natural_side_code          => 'C'
32685          , p_gain_or_loss_flag          => 'N'
32686          , p_gl_transfer_mode_code      => 'S'
32687          , p_acct_entry_type_code       => 'A'
32688          , p_switch_side_flag           => 'Y'
32689          , p_merge_duplicate_code       => 'N'
32690          );
32691    --
32692    l_acc_rev_natural_side_code := 'D';  -- 4262811
32693    -- 
32694    --
32695    -- set accounting line type info
32696    --
32697    xla_ae_lines_pkg.SetAcctLineType
32698       (p_component_type             => l_component_type
32699       ,p_event_type_code            => l_event_type_code
32700       ,p_line_definition_owner_code => l_line_definition_owner_code
32701       ,p_line_definition_code       => l_line_definition_code
32702       ,p_accounting_line_code       => l_component_code
32703       ,p_accounting_line_type_code  => l_component_type_code
32704       ,p_accounting_line_appl_id    => l_component_appl_id
32705       ,p_amb_context_code           => l_amb_context_code
32706       ,p_entity_code                => l_entity_code
32707       ,p_event_class_code           => l_event_class_code);
32708    --
32709    -- set accounting class
32710    --
32711    xla_ae_lines_pkg.SetAcctClass(
32712            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
32713          , p_ae_header_id           => l_ae_header_id
32714          );
32715 
32716    --
32717    -- set rounding class
32718    --
32719    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32720                       'FEDERAL_PROJECT_COST_CLEARING';
32721 
32722    --
32723    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32724    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32725    --
32726    -- bulk performance
32727    --
32728    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32729 
32730    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32731       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32732 
32733    -- 4955764
32734    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32735       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32736 
32737    -- 4458381 Public Sector Enh
32738    
32739    --
32740    -- set accounting attributes for the line type
32741    --
32742    l_entered_amt_idx := 22;
32743    l_accted_amt_idx  := 27;
32744    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32745    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32746    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
32747    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
32748    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
32749    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
32750    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
32751    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
32752    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
32753    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
32754    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
32755    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
32756    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
32757    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
32758    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
32759    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
32760    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
32761    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
32762    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
32763    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
32764    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
32765    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
32766    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
32767    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
32768    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
32769    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
32770    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
32771    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
32772    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
32773    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
32774    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
32775    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
32776    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
32777    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
32778    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
32779    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
32780    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
32781    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
32782    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
32783    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
32784    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
32785    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
32786    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
32790    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
32787    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
32788    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
32789    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
32791    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
32792    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
32793    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
32794    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
32795    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
32796    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
32797    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
32798    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
32799    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
32800    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
32801    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
32802    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
32803    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
32804    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
32805 
32806    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32807    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32808 
32809    ---------------------------------------------------------------------------------------------------------------
32810    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32811    ---------------------------------------------------------------------------------------------------------------
32812    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32813 
32814    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32815    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32816 
32817    IF xla_accounting_cache_pkg.GetValueChar
32818          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32819          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32820    AND l_bflow_method_code = 'PRIOR_ENTRY'
32821 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32822    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32823          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32824        )
32825    THEN
32826          xla_ae_lines_pkg.BflowUpgEntry
32827            (p_business_method_code    => l_bflow_method_code
32828            ,p_business_class_code     => l_bflow_class_code
32829            ,p_balance_type            => l_balance_type_code);
32830    ELSE
32831       NULL;
32832 -- No business flow processing for business flow method of NONE.
32833    END IF;
32834 
32835    --
32836    -- call analytical criteria
32837    --
32838    
32839    --
32840    -- call description
32841    --
32842    -- No description or it is inherited.
32843    --
32844    -- call ADRs
32845    -- Bug 4922099
32846    --
32847    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32848         (NVL(l_actual_upg_option, 'N') = 'O') OR
32849         (NVL(l_enc_upg_option, 'N') = 'O')
32850       )
32851    THEN
32852    NULL;
32853    --
32854    --
32855    
32856   l_ccid := AcctDerRule_15(
32857            p_application_id           => p_application_id
32858          , p_ae_header_id             => l_ae_header_id 
32859 , p_source_5 => p_source_5
32860 , p_source_8 => p_source_8
32861          , x_transaction_coa_id       => l_adr_transaction_coa_id
32862          , x_accounting_coa_id        => l_adr_accounting_coa_id
32863          , x_value_type_code          => l_adr_value_type_code
32864          , p_side                     => 'NA'
32865    );
32866 
32867    xla_ae_lines_pkg.set_ccid(
32868     p_code_combination_id          => l_ccid
32869   , p_value_type_code              => l_adr_value_type_code
32870   , p_transaction_coa_id           => l_adr_transaction_coa_id
32871   , p_accounting_coa_id            => l_adr_accounting_coa_id
32872   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
32873   , p_adr_type_code                => 'S'
32874   , p_component_type               => l_component_type
32875   , p_component_code               => l_component_code
32876   , p_component_type_code          => l_component_type_code
32877   , p_component_appl_id            => l_component_appl_id
32878   , p_amb_context_code             => l_amb_context_code
32879   , p_side                         => 'NA'
32880   );
32881 
32882 
32883    l_segment := AcctDerRule_5(
32884            p_application_id           => p_application_id
32885          , p_ae_header_id             => l_ae_header_id 
32886          , x_transaction_coa_id       => l_adr_transaction_coa_id
32887          , x_accounting_coa_id        => l_adr_accounting_coa_id
32888          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
32889          , x_flex_value_set_id        => l_adr_flex_value_set_id
32890          , x_value_type_code          => l_adr_value_type_code
32891          , x_value_combination_id     => l_adr_value_combination_id
32892          , x_value_segment_code       => l_adr_value_segment_code
32893          , p_side                     => 'NA'
32894          , p_override_seg_flag        => 'Y'
32895    );
32896 
32897    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
32898 
32899       xla_ae_lines_pkg.set_segment(
32900           p_to_segment_code         => 'GL_ACCOUNT'
32901         , p_segment_value           => l_segment
32902         , p_from_segment_code       => l_adr_value_segment_code
32903         , p_from_combination_id     => l_adr_value_combination_id
32904         , p_value_type_code         => l_adr_value_type_code
32908         , p_flex_value_set_id       => l_adr_flex_value_set_id
32905         , p_transaction_coa_id      => l_adr_transaction_coa_id
32906         , p_accounting_coa_id       => l_adr_accounting_coa_id
32907         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
32909         , p_adr_code                => 'FV_490201_PROJECTS'
32910         , p_adr_type_code           => 'S'
32911         , p_component_type          => l_component_type
32912         , p_component_code          => l_component_code
32913         , p_component_type_code     => l_component_type_code
32914         , p_component_appl_id       => l_component_appl_id
32915         , p_amb_context_code        => l_amb_context_code
32916         , p_entity_code             => 'EXPENDITURES'
32917         , p_event_class_code        => 'SUPPLIER_COST_ADJ'
32918         , p_side                    => 'NA'
32919         );
32920 
32921   END IF;
32922 
32923    --
32924    --
32925    END IF;
32926    --
32927    -- Bug 4922099
32928    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32929           (NVL(l_enc_upg_option, 'N') = 'O')
32930         ) AND
32931         (l_bflow_method_code = 'PRIOR_ENTRY')
32932       )
32933    THEN
32934       IF
32935       --
32936       1 = 2
32937       --
32938       THEN
32939       xla_accounting_err_pkg.build_message
32940                                     (p_appli_s_name            => 'XLA'
32941                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32942                                     ,p_token_1                 => 'LINE_NUMBER'
32943                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32944                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32945                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32946                                                                              l_component_type
32947                                                                             ,l_component_code
32948                                                                             ,l_component_type_code
32949                                                                             ,l_component_appl_id
32950                                                                             ,l_amb_context_code
32951                                                                             ,l_entity_code
32952                                                                             ,l_event_class_code
32953                                                                            )
32954                                     ,p_token_3                 => 'OWNER'
32955                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32956                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32957                                                                           ,p_lookup_code    => l_component_type_code
32958                                                                          )
32959                                     ,p_token_4                 => 'PRODUCT_NAME'
32960                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32961                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32962                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32963                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32964                                     ,p_ae_header_id            =>  NULL
32965                                        );
32966 
32967         IF (C_LEVEL_ERROR>= g_log_level) THEN
32968                  trace
32969                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32970                       ,p_level    => C_LEVEL_ERROR
32971                       ,p_module   => l_log_module);
32972         END IF;
32973       END IF;
32974    END IF;
32975    --
32976    --
32977    ------------------------------------------------------------------------------------------------
32978    -- 4219869 Business Flow
32979    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32980    -- Prior Entry.  Currently, the following code is always generated.
32981    ------------------------------------------------------------------------------------------------
32982    XLA_AE_LINES_PKG.ValidateCurrentLine;
32983 
32984    ------------------------------------------------------------------------------------
32985    -- 4219869 Business Flow
32986    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32987    ------------------------------------------------------------------------------------
32988    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32989 
32990    ----------------------------------------------------------------------------------
32991    -- 4219869 Business Flow
32992    -- Update journal entry status -- Need to generate this within IF <condition>
32993    ----------------------------------------------------------------------------------
32994    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32995          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32996          ,p_balance_type_code => l_balance_type_code
32997          );
32998 
32999    -------------------------------------------------------------------------------------------
33000    -- 4262811 - Generate the Accrual Reversal lines
33001    -------------------------------------------------------------------------------------------
33002    BEGIN
33003       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33004                               (g_array_event(p_event_id).array_value_num('header_index'));
33005       IF l_acc_rev_flag IS NULL THEN
33006          l_acc_rev_flag := 'N';
33007       END IF;
33011    END;
33008    EXCEPTION
33009       WHEN OTHERS THEN
33010          l_acc_rev_flag := 'N';
33012    --
33013    IF (l_acc_rev_flag = 'Y') THEN
33014 
33015        -- 4645092  ------------------------------------------------------------------------------
33016        -- To allow MPA report to determine if it should generate report process
33017        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33018        ------------------------------------------------------------------------------------------
33019 
33020        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33021        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33022 
33023        --
33024        -- Update the line information that should be overwritten
33025        --
33026        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33027                                          p_header_num   => 1);
33028        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33029 
33030        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33031 
33032        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33033           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33034        END IF;
33035 
33036       --
33037       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33038       --
33039       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33040           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33041       ELSE
33042           ---------------------------------------------------------------------------------------------------
33043           -- 4262811a Switch Sign
33044           ---------------------------------------------------------------------------------------------------
33045           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33046           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33047                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33048           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33049                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33050           -- 5132302
33051           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33052                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33053 
33054       END IF;
33055 
33056       -- 4955764
33057       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33058       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33059 
33060 
33061       XLA_AE_LINES_PKG.ValidateCurrentLine;
33062       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33063 
33064       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33065                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33066                ,p_balance_type_code => l_balance_type_code);
33067 
33068    END IF;
33069 
33070    -----------------------------------------------------------------------------------------
33071    -- 4262811 Multiperiod Accounting
33072    -----------------------------------------------------------------------------------------
33073      -- No MPA option is assigned.
33074 
33075 
33076 END IF;
33077 END IF;
33078 --
33079 
33080 --
33081 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33082    trace
33083       (p_msg      => 'END of AcctLineType_78'
33084       ,p_level    => C_LEVEL_PROCEDURE
33085       ,p_module   => l_log_module);
33086 END IF;
33087 --
33088 EXCEPTION
33089   WHEN xla_exceptions_pkg.application_exception THEN
33090       RAISE;
33091   WHEN OTHERS THEN
33092        xla_exceptions_pkg.raise_message
33093            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_78');
33094 END AcctLineType_78;
33095 --
33096 
33097 ---------------------------------------
33098 --
33099 -- PRIVATE FUNCTION
33100 --         AcctLineType_79
33101 --
33102 ---------------------------------------
33103 PROCEDURE AcctLineType_79 (
33104   p_application_id        IN NUMBER
33105  ,p_event_id              IN NUMBER
33106  ,p_calculate_acctd_flag  IN VARCHAR2
33107  ,p_calculate_g_l_flag    IN VARCHAR2
33108  ,p_actual_flag           IN OUT VARCHAR2
33109  ,p_balance_type_code     OUT VARCHAR2
33110  ,p_gain_or_loss_ref      OUT VARCHAR2
33111  
33112 --Cost CCID
33113  , p_source_4            IN NUMBER
33114 --Allow Account Override Flag
33115  , p_source_5            IN VARCHAR2
33116 --Adjustment Cost CCID
33117  , p_source_6            IN NUMBER
33118 --Cost Clearing CCID
33119  , p_source_7            IN NUMBER
33120 --Reversing Line Flag
33121  , p_source_23            IN VARCHAR2
33122 --Actual Upgrade Credit Accounting Class
33123  , p_source_24            IN VARCHAR2
33124 --Entered Raw Cost
33125  , p_source_25            IN NUMBER
33126 --Entered Currency Code
33127  , p_source_26            IN VARCHAR2
33128 --Accounted Raw Cost
33129  , p_source_27            IN NUMBER
33130 --Exchange Rate Date
33131  , p_source_28            IN DATE
33132 --Exchange Rate
33133  , p_source_29            IN NUMBER
33134 --Exchange Rate Type
33135  , p_source_30            IN VARCHAR2
33136 --Actual Upgrade Debit Accounting Class
33137  , p_source_31            IN VARCHAR2
33138 --Use Actuals Upgrade Attributes Flag
33139  , p_source_32            IN VARCHAR2
33140 --Expenditure Item ID
33144 --Line Type
33141  , p_source_33            IN NUMBER
33142 --Cost Distribution Line Number
33143  , p_source_34            IN NUMBER
33145  , p_source_35            IN VARCHAR2
33146  , p_source_35_meaning    IN VARCHAR2
33147 --Reversed Line Number
33148  , p_source_36            IN NUMBER
33149 )
33150 IS
33151 
33152 l_component_type              VARCHAR2(80);
33153 l_component_code              VARCHAR2(30);
33154 l_component_type_code         VARCHAR2(1);
33155 l_component_appl_id           INTEGER;
33156 l_amb_context_code            VARCHAR2(30);
33157 l_entity_code                 VARCHAR2(30);
33158 l_event_class_code            VARCHAR2(30);
33159 l_ae_header_id                NUMBER;
33160 l_event_type_code             VARCHAR2(30);
33161 l_line_definition_code        VARCHAR2(30);
33162 l_line_definition_owner_code  VARCHAR2(1);
33163 --
33164 -- adr variables
33165 l_segment                     VARCHAR2(30);
33166 l_ccid                        NUMBER;
33167 l_adr_transaction_coa_id      NUMBER;
33168 l_adr_accounting_coa_id       NUMBER;
33169 l_adr_flexfield_segment_code  VARCHAR2(30);
33170 l_adr_flex_value_set_id       NUMBER;
33171 l_adr_value_type_code         VARCHAR2(30);
33172 l_adr_value_combination_id    NUMBER;
33173 l_adr_value_segment_code      VARCHAR2(30);
33174 
33175 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33176 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33177 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33178 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33179 
33180 -- 4262811 Variables ------------------------------------------------------------------------------------------
33181 l_entered_amt_idx             NUMBER;
33182 l_accted_amt_idx              NUMBER;
33183 l_acc_rev_flag                VARCHAR2(1);
33184 l_accrual_line_num            NUMBER;
33185 l_tmp_amt                     NUMBER;
33186 l_acc_rev_natural_side_code   VARCHAR2(1);
33187 
33188 l_num_entries                 NUMBER;
33189 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33190 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33191 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33192 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33193 l_recog_line_1                NUMBER;
33194 l_recog_line_2                NUMBER;
33195 
33196 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33197 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33198 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33199 
33200 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33201 
33202 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33203 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33204 
33205 ---------------------------------------------------------------------------------------------------------------
33206 
33207 
33208 --
33209 -- bulk performance
33210 --
33211 l_balance_type_code           VARCHAR2(1);
33212 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33213 l_log_module                  VARCHAR2(240);
33214 
33215 --
33216 -- Upgrade strategy
33217 --
33218 l_actual_upg_option           VARCHAR2(1);
33219 l_enc_upg_option           VARCHAR2(1);
33220 
33221 --
33222 BEGIN
33223 --
33224 IF g_log_enabled THEN
33225       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
33226 END IF;
33227 --
33228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33229 
33230       trace
33231          (p_msg      => 'BEGIN of AcctLineType_79'
33232          ,p_level    => C_LEVEL_PROCEDURE
33233          ,p_module   => l_log_module);
33234 
33235 END IF;
33236 --
33237 l_component_type             := 'AMB_JLT';
33238 l_component_code             := 'PA_RAW_COST_ADJ_FED';
33239 l_component_type_code        := 'S';
33240 l_component_appl_id          :=  275;
33241 l_amb_context_code           := 'DEFAULT';
33242 l_entity_code                := 'EXPENDITURES';
33243 l_event_class_code           := 'INVENTORY_COST_ADJ';
33244 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
33245 l_line_definition_owner_code := 'S';
33246 l_line_definition_code       := 'FV_PROJECTS_JLD';
33247 --
33248 l_balance_type_code          := 'A';
33249 l_segment                     := NULL;
33250 l_ccid                        := NULL;
33251 l_adr_transaction_coa_id      := NULL;
33252 l_adr_accounting_coa_id       := NULL;
33253 l_adr_flexfield_segment_code  := NULL;
33254 l_adr_flex_value_set_id       := NULL;
33255 l_adr_value_type_code         := NULL;
33256 l_adr_value_combination_id    := NULL;
33257 l_adr_value_segment_code      := NULL;
33258 
33259 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33260 l_bflow_class_code           := '';    -- 4219869 Business Flow
33261 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33262 l_budgetary_control_flag     := 'N';
33263 
33264 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33265 l_bflow_applied_to_amt       := NULL; -- 5132302
33266 l_entered_amt_idx            := NULL;          -- 4262811
33267 l_accted_amt_idx             := NULL;          -- 4262811
33268 l_acc_rev_flag               := NULL;          -- 4262811
33269 l_accrual_line_num           := NULL;          -- 4262811
33270 l_tmp_amt                    := NULL;          -- 4262811
33271 --
33272  
33273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33274     l_balance_type_code <> 'B' THEN
33275 
33276    --
33277    XLA_AE_LINES_PKG.SetNewLine;
33278 
33282    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33279    p_balance_type_code          := l_balance_type_code;
33280    -- set the flag so later we will know whether the gain loss line needs to be created
33281    
33283      p_actual_flag :='A';
33284    END IF;
33285 
33286    --
33287    -- bulk performance
33288    --
33289    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33290                                       p_header_num   => 0); -- 4262811
33291    --
33292    -- set accounting line options
33293    --
33294    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33295            p_natural_side_code          => 'D'
33296          , p_gain_or_loss_flag          => 'N'
33297          , p_gl_transfer_mode_code      => 'S'
33298          , p_acct_entry_type_code       => 'A'
33299          , p_switch_side_flag           => 'Y'
33300          , p_merge_duplicate_code       => 'N'
33301          );
33302    --
33303    l_acc_rev_natural_side_code := 'C';  -- 4262811
33304    -- 
33305    --
33306    -- set accounting line type info
33307    --
33308    xla_ae_lines_pkg.SetAcctLineType
33309       (p_component_type             => l_component_type
33310       ,p_event_type_code            => l_event_type_code
33311       ,p_line_definition_owner_code => l_line_definition_owner_code
33312       ,p_line_definition_code       => l_line_definition_code
33313       ,p_accounting_line_code       => l_component_code
33314       ,p_accounting_line_type_code  => l_component_type_code
33315       ,p_accounting_line_appl_id    => l_component_appl_id
33316       ,p_amb_context_code           => l_amb_context_code
33317       ,p_entity_code                => l_entity_code
33318       ,p_event_class_code           => l_event_class_code);
33319    --
33320    -- set accounting class
33321    --
33322    xla_ae_lines_pkg.SetAcctClass(
33323            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
33324          , p_ae_header_id           => l_ae_header_id
33325          );
33326 
33327    --
33328    -- set rounding class
33329    --
33330    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33331                       'FEDERAL_PROJECT_COST';
33332 
33333    --
33334    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33335    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33336    --
33337    -- bulk performance
33338    --
33339    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33340 
33341    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33342       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33343 
33344    -- 4955764
33345    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33346       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33347 
33348    -- 4458381 Public Sector Enh
33349    
33350    --
33351    -- set accounting attributes for the line type
33352    --
33353    l_entered_amt_idx := 22;
33354    l_accted_amt_idx  := 27;
33355    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33356    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33357    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
33358    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
33359    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
33360    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
33361    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
33362    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
33363    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
33364    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
33365    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
33366    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
33367    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
33368    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
33369    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
33370    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
33371    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
33372    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
33373    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
33374    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
33375    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
33376    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
33377    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
33378    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
33379    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
33380    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
33381    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
33382    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
33383    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
33384    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
33385    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
33386    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
33387    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
33388    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
33389    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
33390    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
33391    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
33392    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
33393    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
33397    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
33394    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
33395    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
33396    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
33398    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
33399    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
33400    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
33401    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
33402    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
33403    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
33404    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
33405    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
33406    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
33407    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
33408    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
33409    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
33410    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
33411    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
33412    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
33413    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
33414    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
33415    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
33416 
33417    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33418    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33419 
33420    ---------------------------------------------------------------------------------------------------------------
33421    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33422    ---------------------------------------------------------------------------------------------------------------
33423    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33424 
33425    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33426    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33427 
33428    IF xla_accounting_cache_pkg.GetValueChar
33429          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33430          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33431    AND l_bflow_method_code = 'PRIOR_ENTRY'
33432 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33433    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33434          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33435        )
33436    THEN
33437          xla_ae_lines_pkg.BflowUpgEntry
33438            (p_business_method_code    => l_bflow_method_code
33439            ,p_business_class_code     => l_bflow_class_code
33440            ,p_balance_type            => l_balance_type_code);
33441    ELSE
33442       NULL;
33443 -- No business flow processing for business flow method of NONE.
33444    END IF;
33445 
33446    --
33447    -- call analytical criteria
33448    --
33449    
33450    --
33451    -- call description
33452    --
33453    -- No description or it is inherited.
33454    --
33455    -- call ADRs
33456    -- Bug 4922099
33457    --
33458    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33459         (NVL(l_actual_upg_option, 'N') = 'O') OR
33460         (NVL(l_enc_upg_option, 'N') = 'O')
33461       )
33462    THEN
33463    NULL;
33464    --
33465    --
33466    
33467   l_ccid := AcctDerRule_13(
33468            p_application_id           => p_application_id
33469          , p_ae_header_id             => l_ae_header_id 
33470 , p_source_5 => p_source_5
33471 , p_source_6 => p_source_6
33472          , x_transaction_coa_id       => l_adr_transaction_coa_id
33473          , x_accounting_coa_id        => l_adr_accounting_coa_id
33474          , x_value_type_code          => l_adr_value_type_code
33475          , p_side                     => 'NA'
33476    );
33477 
33478    xla_ae_lines_pkg.set_ccid(
33479     p_code_combination_id          => l_ccid
33480   , p_value_type_code              => l_adr_value_type_code
33481   , p_transaction_coa_id           => l_adr_transaction_coa_id
33482   , p_accounting_coa_id            => l_adr_accounting_coa_id
33483   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
33484   , p_adr_type_code                => 'S'
33485   , p_component_type               => l_component_type
33486   , p_component_code               => l_component_code
33487   , p_component_type_code          => l_component_type_code
33488   , p_component_appl_id            => l_component_appl_id
33489   , p_amb_context_code             => l_amb_context_code
33490   , p_side                         => 'NA'
33491   );
33492 
33493 
33494    l_segment := AcctDerRule_4(
33495            p_application_id           => p_application_id
33496          , p_ae_header_id             => l_ae_header_id 
33497          , x_transaction_coa_id       => l_adr_transaction_coa_id
33498          , x_accounting_coa_id        => l_adr_accounting_coa_id
33499          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
33500          , x_flex_value_set_id        => l_adr_flex_value_set_id
33501          , x_value_type_code          => l_adr_value_type_code
33502          , x_value_combination_id     => l_adr_value_combination_id
33503          , x_value_segment_code       => l_adr_value_segment_code
33504          , p_side                     => 'NA'
33505          , p_override_seg_flag        => 'Y'
33506    );
33507 
33508    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
33509 
33510       xla_ae_lines_pkg.set_segment(
33514         , p_from_combination_id     => l_adr_value_combination_id
33511           p_to_segment_code         => 'GL_ACCOUNT'
33512         , p_segment_value           => l_segment
33513         , p_from_segment_code       => l_adr_value_segment_code
33515         , p_value_type_code         => l_adr_value_type_code
33516         , p_transaction_coa_id      => l_adr_transaction_coa_id
33517         , p_accounting_coa_id       => l_adr_accounting_coa_id
33518         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
33519         , p_flex_value_set_id       => l_adr_flex_value_set_id
33520         , p_adr_code                => 'FV_461001_PROJECTS'
33521         , p_adr_type_code           => 'S'
33522         , p_component_type          => l_component_type
33523         , p_component_code          => l_component_code
33524         , p_component_type_code     => l_component_type_code
33525         , p_component_appl_id       => l_component_appl_id
33526         , p_amb_context_code        => l_amb_context_code
33527         , p_entity_code             => 'EXPENDITURES'
33528         , p_event_class_code        => 'INVENTORY_COST_ADJ'
33529         , p_side                    => 'NA'
33530         );
33531 
33532   END IF;
33533 
33534    --
33535    --
33536    END IF;
33537    --
33538    -- Bug 4922099
33539    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33540           (NVL(l_enc_upg_option, 'N') = 'O')
33541         ) AND
33542         (l_bflow_method_code = 'PRIOR_ENTRY')
33543       )
33544    THEN
33545       IF
33546       --
33547       1 = 2
33548       --
33549       THEN
33550       xla_accounting_err_pkg.build_message
33551                                     (p_appli_s_name            => 'XLA'
33552                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33553                                     ,p_token_1                 => 'LINE_NUMBER'
33554                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33555                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33556                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33557                                                                              l_component_type
33558                                                                             ,l_component_code
33559                                                                             ,l_component_type_code
33560                                                                             ,l_component_appl_id
33561                                                                             ,l_amb_context_code
33562                                                                             ,l_entity_code
33563                                                                             ,l_event_class_code
33564                                                                            )
33565                                     ,p_token_3                 => 'OWNER'
33566                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33567                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33568                                                                           ,p_lookup_code    => l_component_type_code
33569                                                                          )
33570                                     ,p_token_4                 => 'PRODUCT_NAME'
33571                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33572                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33573                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33574                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33575                                     ,p_ae_header_id            =>  NULL
33576                                        );
33577 
33578         IF (C_LEVEL_ERROR>= g_log_level) THEN
33579                  trace
33580                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33581                       ,p_level    => C_LEVEL_ERROR
33582                       ,p_module   => l_log_module);
33583         END IF;
33584       END IF;
33585    END IF;
33586    --
33587    --
33588    ------------------------------------------------------------------------------------------------
33589    -- 4219869 Business Flow
33590    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33591    -- Prior Entry.  Currently, the following code is always generated.
33592    ------------------------------------------------------------------------------------------------
33593    XLA_AE_LINES_PKG.ValidateCurrentLine;
33594 
33595    ------------------------------------------------------------------------------------
33596    -- 4219869 Business Flow
33597    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33598    ------------------------------------------------------------------------------------
33599    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33600 
33601    ----------------------------------------------------------------------------------
33602    -- 4219869 Business Flow
33603    -- Update journal entry status -- Need to generate this within IF <condition>
33604    ----------------------------------------------------------------------------------
33605    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33606          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33607          ,p_balance_type_code => l_balance_type_code
33608          );
33609 
33610    -------------------------------------------------------------------------------------------
33611    -- 4262811 - Generate the Accrual Reversal lines
33612    -------------------------------------------------------------------------------------------
33616       IF l_acc_rev_flag IS NULL THEN
33613    BEGIN
33614       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33615                               (g_array_event(p_event_id).array_value_num('header_index'));
33617          l_acc_rev_flag := 'N';
33618       END IF;
33619    EXCEPTION
33620       WHEN OTHERS THEN
33621          l_acc_rev_flag := 'N';
33622    END;
33623    --
33624    IF (l_acc_rev_flag = 'Y') THEN
33625 
33626        -- 4645092  ------------------------------------------------------------------------------
33627        -- To allow MPA report to determine if it should generate report process
33628        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33629        ------------------------------------------------------------------------------------------
33630 
33631        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33632        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33633 
33634        --
33635        -- Update the line information that should be overwritten
33636        --
33637        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33638                                          p_header_num   => 1);
33639        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33640 
33641        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33642 
33643        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33644           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33645        END IF;
33646 
33647       --
33648       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33649       --
33650       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33651           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33652       ELSE
33653           ---------------------------------------------------------------------------------------------------
33654           -- 4262811a Switch Sign
33655           ---------------------------------------------------------------------------------------------------
33656           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33657           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33658                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33659           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33660                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33661           -- 5132302
33662           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33663                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33664 
33665       END IF;
33666 
33667       -- 4955764
33668       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33669       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33670 
33671 
33672       XLA_AE_LINES_PKG.ValidateCurrentLine;
33673       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33674 
33675       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33676                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33677                ,p_balance_type_code => l_balance_type_code);
33678 
33679    END IF;
33680 
33681    -----------------------------------------------------------------------------------------
33682    -- 4262811 Multiperiod Accounting
33683    -----------------------------------------------------------------------------------------
33684      -- No MPA option is assigned.
33685 
33686 
33687 END IF;
33688 --
33689 
33690 --
33691 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33692    trace
33693       (p_msg      => 'END of AcctLineType_79'
33694       ,p_level    => C_LEVEL_PROCEDURE
33695       ,p_module   => l_log_module);
33696 END IF;
33697 --
33698 EXCEPTION
33699   WHEN xla_exceptions_pkg.application_exception THEN
33700       RAISE;
33701   WHEN OTHERS THEN
33702        xla_exceptions_pkg.raise_message
33703            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_79');
33704 END AcctLineType_79;
33705 --
33706 
33707 ---------------------------------------
33708 --
33709 -- PRIVATE FUNCTION
33710 --         AcctLineType_80
33711 --
33712 ---------------------------------------
33713 PROCEDURE AcctLineType_80 (
33714   p_application_id        IN NUMBER
33715  ,p_event_id              IN NUMBER
33716  ,p_calculate_acctd_flag  IN VARCHAR2
33717  ,p_calculate_g_l_flag    IN VARCHAR2
33718  ,p_actual_flag           IN OUT VARCHAR2
33719  ,p_balance_type_code     OUT VARCHAR2
33720  ,p_gain_or_loss_ref      OUT VARCHAR2
33721  
33722 --Cost CCID
33723  , p_source_4            IN NUMBER
33724 --Allow Account Override Flag
33725  , p_source_5            IN VARCHAR2
33726 --Adjustment Cost CCID
33727  , p_source_6            IN NUMBER
33728 --Cost Clearing CCID
33729  , p_source_7            IN NUMBER
33730 --Reversing Line Flag
33731  , p_source_23            IN VARCHAR2
33732 --Actual Upgrade Credit Accounting Class
33733  , p_source_24            IN VARCHAR2
33734 --Entered Raw Cost
33735  , p_source_25            IN NUMBER
33736 --Entered Currency Code
33737  , p_source_26            IN VARCHAR2
33738 --Accounted Raw Cost
33739  , p_source_27            IN NUMBER
33740 --Exchange Rate Date
33741  , p_source_28            IN DATE
33742 --Exchange Rate
33743  , p_source_29            IN NUMBER
33744 --Exchange Rate Type
33748 --Use Actuals Upgrade Attributes Flag
33745  , p_source_30            IN VARCHAR2
33746 --Actual Upgrade Debit Accounting Class
33747  , p_source_31            IN VARCHAR2
33749  , p_source_32            IN VARCHAR2
33750 --Expenditure Item ID
33751  , p_source_33            IN NUMBER
33752 --Cost Distribution Line Number
33753  , p_source_34            IN NUMBER
33754 --Line Type
33755  , p_source_35            IN VARCHAR2
33756  , p_source_35_meaning    IN VARCHAR2
33757 --Reversed Line Number
33758  , p_source_36            IN NUMBER
33759 )
33760 IS
33761 
33762 l_component_type              VARCHAR2(80);
33763 l_component_code              VARCHAR2(30);
33764 l_component_type_code         VARCHAR2(1);
33765 l_component_appl_id           INTEGER;
33766 l_amb_context_code            VARCHAR2(30);
33767 l_entity_code                 VARCHAR2(30);
33768 l_event_class_code            VARCHAR2(30);
33769 l_ae_header_id                NUMBER;
33770 l_event_type_code             VARCHAR2(30);
33771 l_line_definition_code        VARCHAR2(30);
33772 l_line_definition_owner_code  VARCHAR2(1);
33773 --
33774 -- adr variables
33775 l_segment                     VARCHAR2(30);
33776 l_ccid                        NUMBER;
33777 l_adr_transaction_coa_id      NUMBER;
33778 l_adr_accounting_coa_id       NUMBER;
33779 l_adr_flexfield_segment_code  VARCHAR2(30);
33780 l_adr_flex_value_set_id       NUMBER;
33781 l_adr_value_type_code         VARCHAR2(30);
33782 l_adr_value_combination_id    NUMBER;
33783 l_adr_value_segment_code      VARCHAR2(30);
33784 
33785 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33786 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33787 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33788 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33789 
33790 -- 4262811 Variables ------------------------------------------------------------------------------------------
33791 l_entered_amt_idx             NUMBER;
33792 l_accted_amt_idx              NUMBER;
33793 l_acc_rev_flag                VARCHAR2(1);
33794 l_accrual_line_num            NUMBER;
33795 l_tmp_amt                     NUMBER;
33796 l_acc_rev_natural_side_code   VARCHAR2(1);
33797 
33798 l_num_entries                 NUMBER;
33799 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33800 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33801 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33802 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33803 l_recog_line_1                NUMBER;
33804 l_recog_line_2                NUMBER;
33805 
33806 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33807 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33808 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33809 
33810 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33811 
33812 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33813 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33814 
33815 ---------------------------------------------------------------------------------------------------------------
33816 
33817 
33818 --
33819 -- bulk performance
33820 --
33821 l_balance_type_code           VARCHAR2(1);
33822 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33823 l_log_module                  VARCHAR2(240);
33824 
33825 --
33826 -- Upgrade strategy
33827 --
33828 l_actual_upg_option           VARCHAR2(1);
33829 l_enc_upg_option           VARCHAR2(1);
33830 
33831 --
33832 BEGIN
33833 --
33834 IF g_log_enabled THEN
33835       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
33836 END IF;
33837 --
33838 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33839 
33840       trace
33841          (p_msg      => 'BEGIN of AcctLineType_80'
33842          ,p_level    => C_LEVEL_PROCEDURE
33843          ,p_module   => l_log_module);
33844 
33845 END IF;
33846 --
33847 l_component_type             := 'AMB_JLT';
33848 l_component_code             := 'PA_RAW_COST_ADJ_FED';
33849 l_component_type_code        := 'S';
33850 l_component_appl_id          :=  275;
33851 l_amb_context_code           := 'DEFAULT';
33852 l_entity_code                := 'EXPENDITURES';
33853 l_event_class_code           := 'WIP_COST_ADJ';
33854 l_event_type_code            := 'WIP_COST_ADJ_ALL';
33855 l_line_definition_owner_code := 'S';
33856 l_line_definition_code       := 'FV_PROJECTS_JLD';
33857 --
33858 l_balance_type_code          := 'A';
33859 l_segment                     := NULL;
33860 l_ccid                        := NULL;
33861 l_adr_transaction_coa_id      := NULL;
33862 l_adr_accounting_coa_id       := NULL;
33863 l_adr_flexfield_segment_code  := NULL;
33864 l_adr_flex_value_set_id       := NULL;
33865 l_adr_value_type_code         := NULL;
33866 l_adr_value_combination_id    := NULL;
33867 l_adr_value_segment_code      := NULL;
33868 
33869 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33870 l_bflow_class_code           := '';    -- 4219869 Business Flow
33871 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33872 l_budgetary_control_flag     := 'N';
33873 
33874 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33875 l_bflow_applied_to_amt       := NULL; -- 5132302
33876 l_entered_amt_idx            := NULL;          -- 4262811
33877 l_accted_amt_idx             := NULL;          -- 4262811
33878 l_acc_rev_flag               := NULL;          -- 4262811
33879 l_accrual_line_num           := NULL;          -- 4262811
33880 l_tmp_amt                    := NULL;          -- 4262811
33881 --
33882  
33886    --
33883 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33884     l_balance_type_code <> 'B' THEN
33885 
33887    XLA_AE_LINES_PKG.SetNewLine;
33888 
33889    p_balance_type_code          := l_balance_type_code;
33890    -- set the flag so later we will know whether the gain loss line needs to be created
33891    
33892    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33893      p_actual_flag :='A';
33894    END IF;
33895 
33896    --
33897    -- bulk performance
33898    --
33899    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33900                                       p_header_num   => 0); -- 4262811
33901    --
33902    -- set accounting line options
33903    --
33904    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33905            p_natural_side_code          => 'D'
33906          , p_gain_or_loss_flag          => 'N'
33907          , p_gl_transfer_mode_code      => 'S'
33908          , p_acct_entry_type_code       => 'A'
33909          , p_switch_side_flag           => 'Y'
33910          , p_merge_duplicate_code       => 'N'
33911          );
33912    --
33913    l_acc_rev_natural_side_code := 'C';  -- 4262811
33914    -- 
33915    --
33916    -- set accounting line type info
33917    --
33918    xla_ae_lines_pkg.SetAcctLineType
33919       (p_component_type             => l_component_type
33920       ,p_event_type_code            => l_event_type_code
33921       ,p_line_definition_owner_code => l_line_definition_owner_code
33922       ,p_line_definition_code       => l_line_definition_code
33923       ,p_accounting_line_code       => l_component_code
33924       ,p_accounting_line_type_code  => l_component_type_code
33925       ,p_accounting_line_appl_id    => l_component_appl_id
33926       ,p_amb_context_code           => l_amb_context_code
33927       ,p_entity_code                => l_entity_code
33928       ,p_event_class_code           => l_event_class_code);
33929    --
33930    -- set accounting class
33931    --
33932    xla_ae_lines_pkg.SetAcctClass(
33933            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
33934          , p_ae_header_id           => l_ae_header_id
33935          );
33936 
33937    --
33938    -- set rounding class
33939    --
33940    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33941                       'FEDERAL_PROJECT_COST';
33942 
33943    --
33944    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33945    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33946    --
33947    -- bulk performance
33948    --
33949    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33950 
33951    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33952       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33953 
33954    -- 4955764
33955    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33956       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33957 
33958    -- 4458381 Public Sector Enh
33959    
33960    --
33961    -- set accounting attributes for the line type
33962    --
33963    l_entered_amt_idx := 22;
33964    l_accted_amt_idx  := 27;
33965    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33966    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33967    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
33968    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
33969    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
33970    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
33971    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
33972    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
33973    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
33974    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
33975    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
33976    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
33977    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
33978    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
33979    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
33980    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
33981    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
33982    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
33983    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
33984    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
33985    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
33986    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
33987    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
33988    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
33989    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
33990    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
33991    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
33992    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
33993    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
33994    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
33995    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
33996    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
33997    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
33998    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
33999    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
34000    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
34004    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
34001    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
34002    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
34003    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
34005    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
34006    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
34007    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
34008    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
34009    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
34010    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
34011    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
34012    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
34013    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
34014    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
34015    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
34016    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
34017    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
34018    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
34019    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
34020    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
34021    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
34022    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
34023    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
34024    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
34025    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
34026 
34027    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34028    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34029 
34030    ---------------------------------------------------------------------------------------------------------------
34031    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34032    ---------------------------------------------------------------------------------------------------------------
34033    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34034 
34035    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34036    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34037 
34038    IF xla_accounting_cache_pkg.GetValueChar
34039          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34040          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34041    AND l_bflow_method_code = 'PRIOR_ENTRY'
34042 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34043    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34044          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34045        )
34046    THEN
34047          xla_ae_lines_pkg.BflowUpgEntry
34048            (p_business_method_code    => l_bflow_method_code
34049            ,p_business_class_code     => l_bflow_class_code
34050            ,p_balance_type            => l_balance_type_code);
34051    ELSE
34052       NULL;
34053 -- No business flow processing for business flow method of NONE.
34054    END IF;
34055 
34056    --
34057    -- call analytical criteria
34058    --
34059    
34060    --
34061    -- call description
34062    --
34063    -- No description or it is inherited.
34064    --
34065    -- call ADRs
34066    -- Bug 4922099
34067    --
34068    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34069         (NVL(l_actual_upg_option, 'N') = 'O') OR
34070         (NVL(l_enc_upg_option, 'N') = 'O')
34071       )
34072    THEN
34073    NULL;
34074    --
34075    --
34076    
34077   l_ccid := AcctDerRule_13(
34078            p_application_id           => p_application_id
34079          , p_ae_header_id             => l_ae_header_id 
34080 , p_source_5 => p_source_5
34081 , p_source_6 => p_source_6
34082          , x_transaction_coa_id       => l_adr_transaction_coa_id
34083          , x_accounting_coa_id        => l_adr_accounting_coa_id
34084          , x_value_type_code          => l_adr_value_type_code
34085          , p_side                     => 'NA'
34086    );
34087 
34088    xla_ae_lines_pkg.set_ccid(
34089     p_code_combination_id          => l_ccid
34090   , p_value_type_code              => l_adr_value_type_code
34091   , p_transaction_coa_id           => l_adr_transaction_coa_id
34092   , p_accounting_coa_id            => l_adr_accounting_coa_id
34093   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
34094   , p_adr_type_code                => 'S'
34095   , p_component_type               => l_component_type
34096   , p_component_code               => l_component_code
34097   , p_component_type_code          => l_component_type_code
34098   , p_component_appl_id            => l_component_appl_id
34099   , p_amb_context_code             => l_amb_context_code
34100   , p_side                         => 'NA'
34101   );
34102 
34103 
34104    l_segment := AcctDerRule_4(
34105            p_application_id           => p_application_id
34106          , p_ae_header_id             => l_ae_header_id 
34107          , x_transaction_coa_id       => l_adr_transaction_coa_id
34108          , x_accounting_coa_id        => l_adr_accounting_coa_id
34109          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
34110          , x_flex_value_set_id        => l_adr_flex_value_set_id
34111          , x_value_type_code          => l_adr_value_type_code
34112          , x_value_combination_id     => l_adr_value_combination_id
34113          , x_value_segment_code       => l_adr_value_segment_code
34114          , p_side                     => 'NA'
34118    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
34115          , p_override_seg_flag        => 'Y'
34116    );
34117 
34119 
34120       xla_ae_lines_pkg.set_segment(
34121           p_to_segment_code         => 'GL_ACCOUNT'
34122         , p_segment_value           => l_segment
34123         , p_from_segment_code       => l_adr_value_segment_code
34124         , p_from_combination_id     => l_adr_value_combination_id
34125         , p_value_type_code         => l_adr_value_type_code
34126         , p_transaction_coa_id      => l_adr_transaction_coa_id
34127         , p_accounting_coa_id       => l_adr_accounting_coa_id
34128         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
34129         , p_flex_value_set_id       => l_adr_flex_value_set_id
34130         , p_adr_code                => 'FV_461001_PROJECTS'
34131         , p_adr_type_code           => 'S'
34132         , p_component_type          => l_component_type
34133         , p_component_code          => l_component_code
34134         , p_component_type_code     => l_component_type_code
34135         , p_component_appl_id       => l_component_appl_id
34136         , p_amb_context_code        => l_amb_context_code
34137         , p_entity_code             => 'EXPENDITURES'
34138         , p_event_class_code        => 'WIP_COST_ADJ'
34139         , p_side                    => 'NA'
34140         );
34141 
34142   END IF;
34143 
34144    --
34145    --
34146    END IF;
34147    --
34148    -- Bug 4922099
34149    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34150           (NVL(l_enc_upg_option, 'N') = 'O')
34151         ) AND
34152         (l_bflow_method_code = 'PRIOR_ENTRY')
34153       )
34154    THEN
34155       IF
34156       --
34157       1 = 2
34158       --
34159       THEN
34160       xla_accounting_err_pkg.build_message
34161                                     (p_appli_s_name            => 'XLA'
34162                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34163                                     ,p_token_1                 => 'LINE_NUMBER'
34164                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34165                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34166                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34167                                                                              l_component_type
34168                                                                             ,l_component_code
34169                                                                             ,l_component_type_code
34170                                                                             ,l_component_appl_id
34171                                                                             ,l_amb_context_code
34172                                                                             ,l_entity_code
34173                                                                             ,l_event_class_code
34174                                                                            )
34175                                     ,p_token_3                 => 'OWNER'
34176                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34177                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34178                                                                           ,p_lookup_code    => l_component_type_code
34179                                                                          )
34180                                     ,p_token_4                 => 'PRODUCT_NAME'
34181                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34182                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34183                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34184                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34185                                     ,p_ae_header_id            =>  NULL
34186                                        );
34187 
34188         IF (C_LEVEL_ERROR>= g_log_level) THEN
34189                  trace
34190                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34191                       ,p_level    => C_LEVEL_ERROR
34192                       ,p_module   => l_log_module);
34193         END IF;
34194       END IF;
34195    END IF;
34196    --
34197    --
34198    ------------------------------------------------------------------------------------------------
34199    -- 4219869 Business Flow
34200    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34201    -- Prior Entry.  Currently, the following code is always generated.
34202    ------------------------------------------------------------------------------------------------
34203    XLA_AE_LINES_PKG.ValidateCurrentLine;
34204 
34205    ------------------------------------------------------------------------------------
34206    -- 4219869 Business Flow
34207    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34208    ------------------------------------------------------------------------------------
34209    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34210 
34211    ----------------------------------------------------------------------------------
34212    -- 4219869 Business Flow
34213    -- Update journal entry status -- Need to generate this within IF <condition>
34214    ----------------------------------------------------------------------------------
34215    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34216          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34217          ,p_balance_type_code => l_balance_type_code
34218          );
34219 
34223    BEGIN
34220    -------------------------------------------------------------------------------------------
34221    -- 4262811 - Generate the Accrual Reversal lines
34222    -------------------------------------------------------------------------------------------
34224       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34225                               (g_array_event(p_event_id).array_value_num('header_index'));
34226       IF l_acc_rev_flag IS NULL THEN
34227          l_acc_rev_flag := 'N';
34228       END IF;
34229    EXCEPTION
34230       WHEN OTHERS THEN
34231          l_acc_rev_flag := 'N';
34232    END;
34233    --
34234    IF (l_acc_rev_flag = 'Y') THEN
34235 
34236        -- 4645092  ------------------------------------------------------------------------------
34237        -- To allow MPA report to determine if it should generate report process
34238        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34239        ------------------------------------------------------------------------------------------
34240 
34241        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34242        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34243 
34244        --
34245        -- Update the line information that should be overwritten
34246        --
34247        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34248                                          p_header_num   => 1);
34249        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34250 
34251        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34252 
34253        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34254           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34255        END IF;
34256 
34257       --
34258       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34259       --
34260       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34261           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34262       ELSE
34263           ---------------------------------------------------------------------------------------------------
34264           -- 4262811a Switch Sign
34265           ---------------------------------------------------------------------------------------------------
34266           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34267           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34268                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34269           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34270                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34271           -- 5132302
34272           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34273                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34274 
34275       END IF;
34276 
34277       -- 4955764
34278       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34279       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34280 
34281 
34282       XLA_AE_LINES_PKG.ValidateCurrentLine;
34283       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34284 
34285       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34286                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34287                ,p_balance_type_code => l_balance_type_code);
34288 
34289    END IF;
34290 
34291    -----------------------------------------------------------------------------------------
34292    -- 4262811 Multiperiod Accounting
34293    -----------------------------------------------------------------------------------------
34294      -- No MPA option is assigned.
34295 
34296 
34297 END IF;
34298 --
34299 
34300 --
34301 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34302    trace
34303       (p_msg      => 'END of AcctLineType_80'
34304       ,p_level    => C_LEVEL_PROCEDURE
34305       ,p_module   => l_log_module);
34306 END IF;
34307 --
34308 EXCEPTION
34309   WHEN xla_exceptions_pkg.application_exception THEN
34310       RAISE;
34311   WHEN OTHERS THEN
34312        xla_exceptions_pkg.raise_message
34313            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_80');
34314 END AcctLineType_80;
34315 --
34316 
34317 ---------------------------------------
34318 --
34319 -- PRIVATE FUNCTION
34320 --         AcctLineType_81
34321 --
34322 ---------------------------------------
34323 PROCEDURE AcctLineType_81 (
34324   p_application_id        IN NUMBER
34325  ,p_event_id              IN NUMBER
34326  ,p_calculate_acctd_flag  IN VARCHAR2
34327  ,p_calculate_g_l_flag    IN VARCHAR2
34328  ,p_actual_flag           IN OUT VARCHAR2
34329  ,p_balance_type_code     OUT VARCHAR2
34330  ,p_gain_or_loss_ref      OUT VARCHAR2
34331  
34332 --Cost CCID
34333  , p_source_4            IN NUMBER
34334 --Allow Account Override Flag
34335  , p_source_5            IN VARCHAR2
34336 --Adjustment Cost CCID
34337  , p_source_6            IN NUMBER
34338 --Cost Clearing CCID
34339  , p_source_7            IN NUMBER
34340 --Reversing Line Flag
34341  , p_source_23            IN VARCHAR2
34342 --Actual Upgrade Credit Accounting Class
34343  , p_source_24            IN VARCHAR2
34344 --Entered Raw Cost
34345  , p_source_25            IN NUMBER
34346 --Entered Currency Code
34347  , p_source_26            IN VARCHAR2
34351  , p_source_28            IN DATE
34348 --Accounted Raw Cost
34349  , p_source_27            IN NUMBER
34350 --Exchange Rate Date
34352 --Exchange Rate
34353  , p_source_29            IN NUMBER
34354 --Exchange Rate Type
34355  , p_source_30            IN VARCHAR2
34356 --Actual Upgrade Debit Accounting Class
34357  , p_source_31            IN VARCHAR2
34358 --Use Actuals Upgrade Attributes Flag
34359  , p_source_32            IN VARCHAR2
34360 --Expenditure Item ID
34361  , p_source_33            IN NUMBER
34362 --Cost Distribution Line Number
34363  , p_source_34            IN NUMBER
34364 --Line Type
34365  , p_source_35            IN VARCHAR2
34366  , p_source_35_meaning    IN VARCHAR2
34367 --Reversed Line Number
34368  , p_source_36            IN NUMBER
34369 )
34370 IS
34371 
34372 l_component_type              VARCHAR2(80);
34373 l_component_code              VARCHAR2(30);
34374 l_component_type_code         VARCHAR2(1);
34375 l_component_appl_id           INTEGER;
34376 l_amb_context_code            VARCHAR2(30);
34377 l_entity_code                 VARCHAR2(30);
34378 l_event_class_code            VARCHAR2(30);
34379 l_ae_header_id                NUMBER;
34380 l_event_type_code             VARCHAR2(30);
34381 l_line_definition_code        VARCHAR2(30);
34382 l_line_definition_owner_code  VARCHAR2(1);
34383 --
34384 -- adr variables
34385 l_segment                     VARCHAR2(30);
34386 l_ccid                        NUMBER;
34387 l_adr_transaction_coa_id      NUMBER;
34388 l_adr_accounting_coa_id       NUMBER;
34389 l_adr_flexfield_segment_code  VARCHAR2(30);
34390 l_adr_flex_value_set_id       NUMBER;
34391 l_adr_value_type_code         VARCHAR2(30);
34392 l_adr_value_combination_id    NUMBER;
34393 l_adr_value_segment_code      VARCHAR2(30);
34394 
34395 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34396 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34397 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34398 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34399 
34400 -- 4262811 Variables ------------------------------------------------------------------------------------------
34401 l_entered_amt_idx             NUMBER;
34402 l_accted_amt_idx              NUMBER;
34403 l_acc_rev_flag                VARCHAR2(1);
34404 l_accrual_line_num            NUMBER;
34405 l_tmp_amt                     NUMBER;
34406 l_acc_rev_natural_side_code   VARCHAR2(1);
34407 
34408 l_num_entries                 NUMBER;
34409 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34410 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34411 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34412 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34413 l_recog_line_1                NUMBER;
34414 l_recog_line_2                NUMBER;
34415 
34416 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34417 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34418 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34419 
34420 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34421 
34422 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34423 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34424 
34425 ---------------------------------------------------------------------------------------------------------------
34426 
34427 
34428 --
34429 -- bulk performance
34430 --
34431 l_balance_type_code           VARCHAR2(1);
34432 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34433 l_log_module                  VARCHAR2(240);
34434 
34435 --
34436 -- Upgrade strategy
34437 --
34438 l_actual_upg_option           VARCHAR2(1);
34439 l_enc_upg_option           VARCHAR2(1);
34440 
34441 --
34442 BEGIN
34443 --
34444 IF g_log_enabled THEN
34445       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
34446 END IF;
34447 --
34448 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34449 
34450       trace
34451          (p_msg      => 'BEGIN of AcctLineType_81'
34452          ,p_level    => C_LEVEL_PROCEDURE
34453          ,p_module   => l_log_module);
34454 
34455 END IF;
34456 --
34457 l_component_type             := 'AMB_JLT';
34458 l_component_code             := 'PA_RAW_COST_ADJ_FED';
34459 l_component_type_code        := 'S';
34460 l_component_appl_id          :=  275;
34461 l_amb_context_code           := 'DEFAULT';
34462 l_entity_code                := 'EXPENDITURES';
34463 l_event_class_code           := 'USG_COST_ADJ';
34464 l_event_type_code            := 'USG_COST_ADJ_ALL';
34465 l_line_definition_owner_code := 'S';
34466 l_line_definition_code       := 'FV_PROJECTS_JLD';
34467 --
34468 l_balance_type_code          := 'A';
34469 l_segment                     := NULL;
34470 l_ccid                        := NULL;
34471 l_adr_transaction_coa_id      := NULL;
34472 l_adr_accounting_coa_id       := NULL;
34473 l_adr_flexfield_segment_code  := NULL;
34474 l_adr_flex_value_set_id       := NULL;
34475 l_adr_value_type_code         := NULL;
34476 l_adr_value_combination_id    := NULL;
34477 l_adr_value_segment_code      := NULL;
34478 
34479 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34480 l_bflow_class_code           := '';    -- 4219869 Business Flow
34481 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34482 l_budgetary_control_flag     := 'N';
34483 
34484 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34485 l_bflow_applied_to_amt       := NULL; -- 5132302
34486 l_entered_amt_idx            := NULL;          -- 4262811
34490 l_tmp_amt                    := NULL;          -- 4262811
34487 l_accted_amt_idx             := NULL;          -- 4262811
34488 l_acc_rev_flag               := NULL;          -- 4262811
34489 l_accrual_line_num           := NULL;          -- 4262811
34491 --
34492  
34493 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34494     l_balance_type_code <> 'B' THEN
34495 
34496    --
34497    XLA_AE_LINES_PKG.SetNewLine;
34498 
34499    p_balance_type_code          := l_balance_type_code;
34500    -- set the flag so later we will know whether the gain loss line needs to be created
34501    
34502    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34503      p_actual_flag :='A';
34504    END IF;
34505 
34506    --
34507    -- bulk performance
34508    --
34509    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34510                                       p_header_num   => 0); -- 4262811
34511    --
34512    -- set accounting line options
34513    --
34514    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34515            p_natural_side_code          => 'D'
34516          , p_gain_or_loss_flag          => 'N'
34517          , p_gl_transfer_mode_code      => 'S'
34518          , p_acct_entry_type_code       => 'A'
34519          , p_switch_side_flag           => 'Y'
34520          , p_merge_duplicate_code       => 'N'
34521          );
34522    --
34523    l_acc_rev_natural_side_code := 'C';  -- 4262811
34524    -- 
34525    --
34526    -- set accounting line type info
34527    --
34528    xla_ae_lines_pkg.SetAcctLineType
34529       (p_component_type             => l_component_type
34530       ,p_event_type_code            => l_event_type_code
34531       ,p_line_definition_owner_code => l_line_definition_owner_code
34532       ,p_line_definition_code       => l_line_definition_code
34533       ,p_accounting_line_code       => l_component_code
34534       ,p_accounting_line_type_code  => l_component_type_code
34535       ,p_accounting_line_appl_id    => l_component_appl_id
34536       ,p_amb_context_code           => l_amb_context_code
34537       ,p_entity_code                => l_entity_code
34538       ,p_event_class_code           => l_event_class_code);
34539    --
34540    -- set accounting class
34541    --
34542    xla_ae_lines_pkg.SetAcctClass(
34543            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
34544          , p_ae_header_id           => l_ae_header_id
34545          );
34546 
34547    --
34548    -- set rounding class
34549    --
34550    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34551                       'FEDERAL_PROJECT_COST';
34552 
34553    --
34554    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34555    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34556    --
34557    -- bulk performance
34558    --
34559    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34560 
34561    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34562       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34563 
34564    -- 4955764
34565    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34566       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34567 
34568    -- 4458381 Public Sector Enh
34569    
34570    --
34571    -- set accounting attributes for the line type
34572    --
34573    l_entered_amt_idx := 22;
34574    l_accted_amt_idx  := 27;
34575    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34576    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34577    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
34578    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
34579    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
34580    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
34581    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
34582    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
34583    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
34584    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
34585    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
34586    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
34587    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
34588    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
34589    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
34590    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
34591    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
34592    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
34593    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
34594    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
34595    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
34596    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
34597    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
34598    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
34599    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
34600    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
34601    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
34602    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
34603    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
34604    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
34605    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
34606    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
34610    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
34607    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
34608    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
34609    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
34611    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
34612    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
34613    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
34614    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
34615    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
34616    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
34617    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
34618    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
34619    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
34620    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
34621    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
34622    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
34623    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
34624    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
34625    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
34626    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
34627    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
34628    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
34629    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
34630    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
34631    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
34632    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
34633    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
34634    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
34635    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
34636 
34637    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34638    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34639 
34640    ---------------------------------------------------------------------------------------------------------------
34641    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34642    ---------------------------------------------------------------------------------------------------------------
34643    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34644 
34645    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34646    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34647 
34648    IF xla_accounting_cache_pkg.GetValueChar
34649          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34650          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34651    AND l_bflow_method_code = 'PRIOR_ENTRY'
34652 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34653    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34654          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34655        )
34656    THEN
34657          xla_ae_lines_pkg.BflowUpgEntry
34658            (p_business_method_code    => l_bflow_method_code
34659            ,p_business_class_code     => l_bflow_class_code
34660            ,p_balance_type            => l_balance_type_code);
34661    ELSE
34662       NULL;
34663 -- No business flow processing for business flow method of NONE.
34664    END IF;
34665 
34666    --
34667    -- call analytical criteria
34668    --
34669    
34670    --
34671    -- call description
34672    --
34673    -- No description or it is inherited.
34674    --
34675    -- call ADRs
34676    -- Bug 4922099
34677    --
34678    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34679         (NVL(l_actual_upg_option, 'N') = 'O') OR
34680         (NVL(l_enc_upg_option, 'N') = 'O')
34681       )
34682    THEN
34683    NULL;
34684    --
34685    --
34686    
34687   l_ccid := AcctDerRule_13(
34688            p_application_id           => p_application_id
34689          , p_ae_header_id             => l_ae_header_id 
34690 , p_source_5 => p_source_5
34691 , p_source_6 => p_source_6
34692          , x_transaction_coa_id       => l_adr_transaction_coa_id
34693          , x_accounting_coa_id        => l_adr_accounting_coa_id
34694          , x_value_type_code          => l_adr_value_type_code
34695          , p_side                     => 'NA'
34696    );
34697 
34698    xla_ae_lines_pkg.set_ccid(
34699     p_code_combination_id          => l_ccid
34700   , p_value_type_code              => l_adr_value_type_code
34701   , p_transaction_coa_id           => l_adr_transaction_coa_id
34702   , p_accounting_coa_id            => l_adr_accounting_coa_id
34703   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
34704   , p_adr_type_code                => 'S'
34705   , p_component_type               => l_component_type
34706   , p_component_code               => l_component_code
34707   , p_component_type_code          => l_component_type_code
34708   , p_component_appl_id            => l_component_appl_id
34709   , p_amb_context_code             => l_amb_context_code
34710   , p_side                         => 'NA'
34711   );
34712 
34713 
34714    l_segment := AcctDerRule_4(
34715            p_application_id           => p_application_id
34716          , p_ae_header_id             => l_ae_header_id 
34717          , x_transaction_coa_id       => l_adr_transaction_coa_id
34718          , x_accounting_coa_id        => l_adr_accounting_coa_id
34719          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
34720          , x_flex_value_set_id        => l_adr_flex_value_set_id
34724          , p_side                     => 'NA'
34721          , x_value_type_code          => l_adr_value_type_code
34722          , x_value_combination_id     => l_adr_value_combination_id
34723          , x_value_segment_code       => l_adr_value_segment_code
34725          , p_override_seg_flag        => 'Y'
34726    );
34727 
34728    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
34729 
34730       xla_ae_lines_pkg.set_segment(
34731           p_to_segment_code         => 'GL_ACCOUNT'
34732         , p_segment_value           => l_segment
34733         , p_from_segment_code       => l_adr_value_segment_code
34734         , p_from_combination_id     => l_adr_value_combination_id
34735         , p_value_type_code         => l_adr_value_type_code
34736         , p_transaction_coa_id      => l_adr_transaction_coa_id
34737         , p_accounting_coa_id       => l_adr_accounting_coa_id
34738         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
34739         , p_flex_value_set_id       => l_adr_flex_value_set_id
34740         , p_adr_code                => 'FV_461001_PROJECTS'
34741         , p_adr_type_code           => 'S'
34742         , p_component_type          => l_component_type
34743         , p_component_code          => l_component_code
34744         , p_component_type_code     => l_component_type_code
34745         , p_component_appl_id       => l_component_appl_id
34746         , p_amb_context_code        => l_amb_context_code
34747         , p_entity_code             => 'EXPENDITURES'
34748         , p_event_class_code        => 'USG_COST_ADJ'
34749         , p_side                    => 'NA'
34750         );
34751 
34752   END IF;
34753 
34754    --
34755    --
34756    END IF;
34757    --
34758    -- Bug 4922099
34759    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34760           (NVL(l_enc_upg_option, 'N') = 'O')
34761         ) AND
34762         (l_bflow_method_code = 'PRIOR_ENTRY')
34763       )
34764    THEN
34765       IF
34766       --
34767       1 = 2
34768       --
34769       THEN
34770       xla_accounting_err_pkg.build_message
34771                                     (p_appli_s_name            => 'XLA'
34772                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34773                                     ,p_token_1                 => 'LINE_NUMBER'
34774                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34775                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34776                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34777                                                                              l_component_type
34778                                                                             ,l_component_code
34779                                                                             ,l_component_type_code
34780                                                                             ,l_component_appl_id
34781                                                                             ,l_amb_context_code
34782                                                                             ,l_entity_code
34783                                                                             ,l_event_class_code
34784                                                                            )
34785                                     ,p_token_3                 => 'OWNER'
34786                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34787                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34788                                                                           ,p_lookup_code    => l_component_type_code
34789                                                                          )
34790                                     ,p_token_4                 => 'PRODUCT_NAME'
34791                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34792                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34793                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34794                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34795                                     ,p_ae_header_id            =>  NULL
34796                                        );
34797 
34798         IF (C_LEVEL_ERROR>= g_log_level) THEN
34799                  trace
34800                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34801                       ,p_level    => C_LEVEL_ERROR
34802                       ,p_module   => l_log_module);
34803         END IF;
34804       END IF;
34805    END IF;
34806    --
34807    --
34808    ------------------------------------------------------------------------------------------------
34809    -- 4219869 Business Flow
34810    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34811    -- Prior Entry.  Currently, the following code is always generated.
34812    ------------------------------------------------------------------------------------------------
34813    XLA_AE_LINES_PKG.ValidateCurrentLine;
34814 
34815    ------------------------------------------------------------------------------------
34816    -- 4219869 Business Flow
34817    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34818    ------------------------------------------------------------------------------------
34819    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34820 
34821    ----------------------------------------------------------------------------------
34822    -- 4219869 Business Flow
34823    -- Update journal entry status -- Need to generate this within IF <condition>
34824    ----------------------------------------------------------------------------------
34828          );
34825    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34826          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34827          ,p_balance_type_code => l_balance_type_code
34829 
34830    -------------------------------------------------------------------------------------------
34831    -- 4262811 - Generate the Accrual Reversal lines
34832    -------------------------------------------------------------------------------------------
34833    BEGIN
34834       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34835                               (g_array_event(p_event_id).array_value_num('header_index'));
34836       IF l_acc_rev_flag IS NULL THEN
34837          l_acc_rev_flag := 'N';
34838       END IF;
34839    EXCEPTION
34840       WHEN OTHERS THEN
34841          l_acc_rev_flag := 'N';
34842    END;
34843    --
34844    IF (l_acc_rev_flag = 'Y') THEN
34845 
34846        -- 4645092  ------------------------------------------------------------------------------
34847        -- To allow MPA report to determine if it should generate report process
34848        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34849        ------------------------------------------------------------------------------------------
34850 
34851        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34852        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34853 
34854        --
34855        -- Update the line information that should be overwritten
34856        --
34857        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34858                                          p_header_num   => 1);
34859        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34860 
34861        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34862 
34863        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34864           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34865        END IF;
34866 
34867       --
34868       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34869       --
34870       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34871           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34872       ELSE
34873           ---------------------------------------------------------------------------------------------------
34874           -- 4262811a Switch Sign
34875           ---------------------------------------------------------------------------------------------------
34876           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34877           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34878                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34879           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34880                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34881           -- 5132302
34882           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34883                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34884 
34885       END IF;
34886 
34887       -- 4955764
34888       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34889       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34890 
34891 
34892       XLA_AE_LINES_PKG.ValidateCurrentLine;
34893       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34894 
34895       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34896                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34897                ,p_balance_type_code => l_balance_type_code);
34898 
34899    END IF;
34900 
34901    -----------------------------------------------------------------------------------------
34902    -- 4262811 Multiperiod Accounting
34903    -----------------------------------------------------------------------------------------
34904      -- No MPA option is assigned.
34905 
34906 
34907 END IF;
34908 --
34909 
34910 --
34911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34912    trace
34913       (p_msg      => 'END of AcctLineType_81'
34914       ,p_level    => C_LEVEL_PROCEDURE
34915       ,p_module   => l_log_module);
34916 END IF;
34917 --
34918 EXCEPTION
34919   WHEN xla_exceptions_pkg.application_exception THEN
34920       RAISE;
34921   WHEN OTHERS THEN
34922        xla_exceptions_pkg.raise_message
34923            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_81');
34924 END AcctLineType_81;
34925 --
34926 
34927 ---------------------------------------
34928 --
34929 -- PRIVATE FUNCTION
34930 --         AcctLineType_82
34931 --
34932 ---------------------------------------
34933 PROCEDURE AcctLineType_82 (
34934   p_application_id        IN NUMBER
34935  ,p_event_id              IN NUMBER
34936  ,p_calculate_acctd_flag  IN VARCHAR2
34937  ,p_calculate_g_l_flag    IN VARCHAR2
34938  ,p_actual_flag           IN OUT VARCHAR2
34939  ,p_balance_type_code     OUT VARCHAR2
34940  ,p_gain_or_loss_ref      OUT VARCHAR2
34941  
34942 --Cost CCID
34943  , p_source_4            IN NUMBER
34944 --Allow Account Override Flag
34945  , p_source_5            IN VARCHAR2
34946 --Adjustment Cost CCID
34947  , p_source_6            IN NUMBER
34948 --Cost Clearing CCID
34949  , p_source_7            IN NUMBER
34950 --Reversing Line Flag
34951  , p_source_23            IN VARCHAR2
34955  , p_source_25            IN NUMBER
34952 --Actual Upgrade Credit Accounting Class
34953  , p_source_24            IN VARCHAR2
34954 --Entered Raw Cost
34956 --Entered Currency Code
34957  , p_source_26            IN VARCHAR2
34958 --Accounted Raw Cost
34959  , p_source_27            IN NUMBER
34960 --Exchange Rate Date
34961  , p_source_28            IN DATE
34962 --Exchange Rate
34963  , p_source_29            IN NUMBER
34964 --Exchange Rate Type
34965  , p_source_30            IN VARCHAR2
34966 --Actual Upgrade Debit Accounting Class
34967  , p_source_31            IN VARCHAR2
34968 --Use Actuals Upgrade Attributes Flag
34969  , p_source_32            IN VARCHAR2
34970 --Expenditure Item ID
34971  , p_source_33            IN NUMBER
34972 --Cost Distribution Line Number
34973  , p_source_34            IN NUMBER
34974 --Line Type
34975  , p_source_35            IN VARCHAR2
34976  , p_source_35_meaning    IN VARCHAR2
34977 --Reversed Line Number
34978  , p_source_36            IN NUMBER
34979 )
34980 IS
34981 
34982 l_component_type              VARCHAR2(80);
34983 l_component_code              VARCHAR2(30);
34984 l_component_type_code         VARCHAR2(1);
34985 l_component_appl_id           INTEGER;
34986 l_amb_context_code            VARCHAR2(30);
34987 l_entity_code                 VARCHAR2(30);
34988 l_event_class_code            VARCHAR2(30);
34989 l_ae_header_id                NUMBER;
34990 l_event_type_code             VARCHAR2(30);
34991 l_line_definition_code        VARCHAR2(30);
34992 l_line_definition_owner_code  VARCHAR2(1);
34993 --
34994 -- adr variables
34995 l_segment                     VARCHAR2(30);
34996 l_ccid                        NUMBER;
34997 l_adr_transaction_coa_id      NUMBER;
34998 l_adr_accounting_coa_id       NUMBER;
34999 l_adr_flexfield_segment_code  VARCHAR2(30);
35000 l_adr_flex_value_set_id       NUMBER;
35001 l_adr_value_type_code         VARCHAR2(30);
35002 l_adr_value_combination_id    NUMBER;
35003 l_adr_value_segment_code      VARCHAR2(30);
35004 
35005 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35006 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35007 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35008 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35009 
35010 -- 4262811 Variables ------------------------------------------------------------------------------------------
35011 l_entered_amt_idx             NUMBER;
35012 l_accted_amt_idx              NUMBER;
35013 l_acc_rev_flag                VARCHAR2(1);
35014 l_accrual_line_num            NUMBER;
35015 l_tmp_amt                     NUMBER;
35016 l_acc_rev_natural_side_code   VARCHAR2(1);
35017 
35018 l_num_entries                 NUMBER;
35019 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35020 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35021 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35022 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35023 l_recog_line_1                NUMBER;
35024 l_recog_line_2                NUMBER;
35025 
35026 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35027 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35028 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35029 
35030 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35031 
35032 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35033 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35034 
35035 ---------------------------------------------------------------------------------------------------------------
35036 
35037 
35038 --
35039 -- bulk performance
35040 --
35041 l_balance_type_code           VARCHAR2(1);
35042 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35043 l_log_module                  VARCHAR2(240);
35044 
35045 --
35046 -- Upgrade strategy
35047 --
35048 l_actual_upg_option           VARCHAR2(1);
35049 l_enc_upg_option           VARCHAR2(1);
35050 
35051 --
35052 BEGIN
35053 --
35054 IF g_log_enabled THEN
35055       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
35056 END IF;
35057 --
35058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35059 
35060       trace
35061          (p_msg      => 'BEGIN of AcctLineType_82'
35062          ,p_level    => C_LEVEL_PROCEDURE
35063          ,p_module   => l_log_module);
35064 
35065 END IF;
35066 --
35067 l_component_type             := 'AMB_JLT';
35068 l_component_code             := 'PA_RAW_COST_ADJ_FED';
35069 l_component_type_code        := 'S';
35070 l_component_appl_id          :=  275;
35071 l_amb_context_code           := 'DEFAULT';
35072 l_entity_code                := 'EXPENDITURES';
35073 l_event_class_code           := 'MISC_COST_ADJ';
35074 l_event_type_code            := 'MISC_COST_ADJ_ALL';
35075 l_line_definition_owner_code := 'S';
35076 l_line_definition_code       := 'FV_PROJECTS_JLD';
35077 --
35078 l_balance_type_code          := 'A';
35079 l_segment                     := NULL;
35080 l_ccid                        := NULL;
35081 l_adr_transaction_coa_id      := NULL;
35082 l_adr_accounting_coa_id       := NULL;
35083 l_adr_flexfield_segment_code  := NULL;
35084 l_adr_flex_value_set_id       := NULL;
35085 l_adr_value_type_code         := NULL;
35086 l_adr_value_combination_id    := NULL;
35087 l_adr_value_segment_code      := NULL;
35088 
35089 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35090 l_bflow_class_code           := '';    -- 4219869 Business Flow
35091 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35095 l_bflow_applied_to_amt       := NULL; -- 5132302
35092 l_budgetary_control_flag     := 'N';
35093 
35094 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35096 l_entered_amt_idx            := NULL;          -- 4262811
35097 l_accted_amt_idx             := NULL;          -- 4262811
35098 l_acc_rev_flag               := NULL;          -- 4262811
35099 l_accrual_line_num           := NULL;          -- 4262811
35100 l_tmp_amt                    := NULL;          -- 4262811
35101 --
35102  
35103 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35104     l_balance_type_code <> 'B' THEN
35105 
35106    --
35107    XLA_AE_LINES_PKG.SetNewLine;
35108 
35109    p_balance_type_code          := l_balance_type_code;
35110    -- set the flag so later we will know whether the gain loss line needs to be created
35111    
35112    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35113      p_actual_flag :='A';
35114    END IF;
35115 
35116    --
35117    -- bulk performance
35118    --
35119    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35120                                       p_header_num   => 0); -- 4262811
35121    --
35122    -- set accounting line options
35123    --
35124    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35125            p_natural_side_code          => 'D'
35126          , p_gain_or_loss_flag          => 'N'
35127          , p_gl_transfer_mode_code      => 'S'
35128          , p_acct_entry_type_code       => 'A'
35129          , p_switch_side_flag           => 'Y'
35130          , p_merge_duplicate_code       => 'N'
35131          );
35132    --
35133    l_acc_rev_natural_side_code := 'C';  -- 4262811
35134    -- 
35135    --
35136    -- set accounting line type info
35137    --
35138    xla_ae_lines_pkg.SetAcctLineType
35139       (p_component_type             => l_component_type
35140       ,p_event_type_code            => l_event_type_code
35141       ,p_line_definition_owner_code => l_line_definition_owner_code
35142       ,p_line_definition_code       => l_line_definition_code
35143       ,p_accounting_line_code       => l_component_code
35144       ,p_accounting_line_type_code  => l_component_type_code
35145       ,p_accounting_line_appl_id    => l_component_appl_id
35146       ,p_amb_context_code           => l_amb_context_code
35147       ,p_entity_code                => l_entity_code
35148       ,p_event_class_code           => l_event_class_code);
35149    --
35150    -- set accounting class
35151    --
35152    xla_ae_lines_pkg.SetAcctClass(
35153            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
35154          , p_ae_header_id           => l_ae_header_id
35155          );
35156 
35157    --
35158    -- set rounding class
35159    --
35160    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35161                       'FEDERAL_PROJECT_COST';
35162 
35163    --
35164    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35165    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35166    --
35167    -- bulk performance
35168    --
35169    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35170 
35171    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35172       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35173 
35174    -- 4955764
35175    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35176       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35177 
35178    -- 4458381 Public Sector Enh
35179    
35180    --
35181    -- set accounting attributes for the line type
35182    --
35183    l_entered_amt_idx := 22;
35184    l_accted_amt_idx  := 27;
35185    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35186    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35187    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
35188    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
35189    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
35190    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
35191    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
35192    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
35193    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
35194    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
35195    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
35196    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
35197    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
35198    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
35199    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
35200    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
35201    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
35202    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
35203    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
35204    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
35205    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
35206    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
35207    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
35208    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
35209    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
35210    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
35211    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
35212    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
35216    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
35213    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
35214    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
35215    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
35217    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
35218    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
35219    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
35220    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
35221    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
35222    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
35223    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
35224    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
35225    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
35226    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
35227    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
35228    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
35229    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
35230    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
35231    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
35232    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
35233    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
35234    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
35235    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
35236    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
35237    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
35238    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
35239    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
35240    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
35241    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
35242    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
35243    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
35244    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
35245    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
35246 
35247    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35248    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35249 
35250    ---------------------------------------------------------------------------------------------------------------
35251    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35252    ---------------------------------------------------------------------------------------------------------------
35253    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35254 
35255    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35256    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35257 
35258    IF xla_accounting_cache_pkg.GetValueChar
35259          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35260          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35261    AND l_bflow_method_code = 'PRIOR_ENTRY'
35262 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35263    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35264          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35265        )
35266    THEN
35267          xla_ae_lines_pkg.BflowUpgEntry
35268            (p_business_method_code    => l_bflow_method_code
35269            ,p_business_class_code     => l_bflow_class_code
35270            ,p_balance_type            => l_balance_type_code);
35271    ELSE
35272       NULL;
35273 -- No business flow processing for business flow method of NONE.
35274    END IF;
35275 
35276    --
35277    -- call analytical criteria
35278    --
35279    
35280    --
35281    -- call description
35282    --
35283    -- No description or it is inherited.
35284    --
35285    -- call ADRs
35286    -- Bug 4922099
35287    --
35288    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35289         (NVL(l_actual_upg_option, 'N') = 'O') OR
35290         (NVL(l_enc_upg_option, 'N') = 'O')
35291       )
35292    THEN
35293    NULL;
35294    --
35295    --
35296    
35297   l_ccid := AcctDerRule_13(
35298            p_application_id           => p_application_id
35299          , p_ae_header_id             => l_ae_header_id 
35300 , p_source_5 => p_source_5
35301 , p_source_6 => p_source_6
35302          , x_transaction_coa_id       => l_adr_transaction_coa_id
35303          , x_accounting_coa_id        => l_adr_accounting_coa_id
35304          , x_value_type_code          => l_adr_value_type_code
35305          , p_side                     => 'NA'
35306    );
35307 
35308    xla_ae_lines_pkg.set_ccid(
35309     p_code_combination_id          => l_ccid
35310   , p_value_type_code              => l_adr_value_type_code
35311   , p_transaction_coa_id           => l_adr_transaction_coa_id
35312   , p_accounting_coa_id            => l_adr_accounting_coa_id
35313   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
35314   , p_adr_type_code                => 'S'
35315   , p_component_type               => l_component_type
35316   , p_component_code               => l_component_code
35317   , p_component_type_code          => l_component_type_code
35318   , p_component_appl_id            => l_component_appl_id
35319   , p_amb_context_code             => l_amb_context_code
35320   , p_side                         => 'NA'
35321   );
35322 
35323 
35324    l_segment := AcctDerRule_4(
35325            p_application_id           => p_application_id
35326          , p_ae_header_id             => l_ae_header_id 
35330          , x_flex_value_set_id        => l_adr_flex_value_set_id
35327          , x_transaction_coa_id       => l_adr_transaction_coa_id
35328          , x_accounting_coa_id        => l_adr_accounting_coa_id
35329          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
35331          , x_value_type_code          => l_adr_value_type_code
35332          , x_value_combination_id     => l_adr_value_combination_id
35333          , x_value_segment_code       => l_adr_value_segment_code
35334          , p_side                     => 'NA'
35335          , p_override_seg_flag        => 'Y'
35336    );
35337 
35338    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
35339 
35340       xla_ae_lines_pkg.set_segment(
35341           p_to_segment_code         => 'GL_ACCOUNT'
35342         , p_segment_value           => l_segment
35343         , p_from_segment_code       => l_adr_value_segment_code
35344         , p_from_combination_id     => l_adr_value_combination_id
35345         , p_value_type_code         => l_adr_value_type_code
35346         , p_transaction_coa_id      => l_adr_transaction_coa_id
35347         , p_accounting_coa_id       => l_adr_accounting_coa_id
35348         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
35349         , p_flex_value_set_id       => l_adr_flex_value_set_id
35350         , p_adr_code                => 'FV_461001_PROJECTS'
35351         , p_adr_type_code           => 'S'
35352         , p_component_type          => l_component_type
35353         , p_component_code          => l_component_code
35354         , p_component_type_code     => l_component_type_code
35355         , p_component_appl_id       => l_component_appl_id
35356         , p_amb_context_code        => l_amb_context_code
35357         , p_entity_code             => 'EXPENDITURES'
35358         , p_event_class_code        => 'MISC_COST_ADJ'
35359         , p_side                    => 'NA'
35360         );
35361 
35362   END IF;
35363 
35364    --
35365    --
35366    END IF;
35367    --
35368    -- Bug 4922099
35369    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35370           (NVL(l_enc_upg_option, 'N') = 'O')
35371         ) AND
35372         (l_bflow_method_code = 'PRIOR_ENTRY')
35373       )
35374    THEN
35375       IF
35376       --
35377       1 = 2
35378       --
35379       THEN
35380       xla_accounting_err_pkg.build_message
35381                                     (p_appli_s_name            => 'XLA'
35382                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35383                                     ,p_token_1                 => 'LINE_NUMBER'
35384                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35385                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35386                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35387                                                                              l_component_type
35388                                                                             ,l_component_code
35389                                                                             ,l_component_type_code
35390                                                                             ,l_component_appl_id
35391                                                                             ,l_amb_context_code
35392                                                                             ,l_entity_code
35393                                                                             ,l_event_class_code
35394                                                                            )
35395                                     ,p_token_3                 => 'OWNER'
35396                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35397                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35398                                                                           ,p_lookup_code    => l_component_type_code
35399                                                                          )
35400                                     ,p_token_4                 => 'PRODUCT_NAME'
35401                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35402                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35403                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35404                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35405                                     ,p_ae_header_id            =>  NULL
35406                                        );
35407 
35408         IF (C_LEVEL_ERROR>= g_log_level) THEN
35409                  trace
35410                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35411                       ,p_level    => C_LEVEL_ERROR
35412                       ,p_module   => l_log_module);
35413         END IF;
35414       END IF;
35415    END IF;
35416    --
35417    --
35418    ------------------------------------------------------------------------------------------------
35419    -- 4219869 Business Flow
35420    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35421    -- Prior Entry.  Currently, the following code is always generated.
35422    ------------------------------------------------------------------------------------------------
35423    XLA_AE_LINES_PKG.ValidateCurrentLine;
35424 
35425    ------------------------------------------------------------------------------------
35426    -- 4219869 Business Flow
35427    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35428    ------------------------------------------------------------------------------------
35429    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35430 
35434    ----------------------------------------------------------------------------------
35431    ----------------------------------------------------------------------------------
35432    -- 4219869 Business Flow
35433    -- Update journal entry status -- Need to generate this within IF <condition>
35435    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35436          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35437          ,p_balance_type_code => l_balance_type_code
35438          );
35439 
35440    -------------------------------------------------------------------------------------------
35441    -- 4262811 - Generate the Accrual Reversal lines
35442    -------------------------------------------------------------------------------------------
35443    BEGIN
35444       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35445                               (g_array_event(p_event_id).array_value_num('header_index'));
35446       IF l_acc_rev_flag IS NULL THEN
35447          l_acc_rev_flag := 'N';
35448       END IF;
35449    EXCEPTION
35450       WHEN OTHERS THEN
35451          l_acc_rev_flag := 'N';
35452    END;
35453    --
35454    IF (l_acc_rev_flag = 'Y') THEN
35455 
35456        -- 4645092  ------------------------------------------------------------------------------
35457        -- To allow MPA report to determine if it should generate report process
35458        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35459        ------------------------------------------------------------------------------------------
35460 
35461        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35462        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35463 
35464        --
35465        -- Update the line information that should be overwritten
35466        --
35467        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35468                                          p_header_num   => 1);
35469        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35470 
35471        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35472 
35473        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35474           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35475        END IF;
35476 
35477       --
35478       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35479       --
35480       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35481           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35482       ELSE
35483           ---------------------------------------------------------------------------------------------------
35484           -- 4262811a Switch Sign
35485           ---------------------------------------------------------------------------------------------------
35486           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35487           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35488                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35489           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35490                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35491           -- 5132302
35492           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35493                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35494 
35495       END IF;
35496 
35497       -- 4955764
35498       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35499       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35500 
35501 
35502       XLA_AE_LINES_PKG.ValidateCurrentLine;
35503       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35504 
35505       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35506                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35507                ,p_balance_type_code => l_balance_type_code);
35508 
35509    END IF;
35510 
35511    -----------------------------------------------------------------------------------------
35512    -- 4262811 Multiperiod Accounting
35513    -----------------------------------------------------------------------------------------
35514      -- No MPA option is assigned.
35515 
35516 
35517 END IF;
35518 --
35519 
35520 --
35521 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35522    trace
35523       (p_msg      => 'END of AcctLineType_82'
35524       ,p_level    => C_LEVEL_PROCEDURE
35525       ,p_module   => l_log_module);
35526 END IF;
35527 --
35528 EXCEPTION
35529   WHEN xla_exceptions_pkg.application_exception THEN
35530       RAISE;
35531   WHEN OTHERS THEN
35532        xla_exceptions_pkg.raise_message
35533            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_82');
35534 END AcctLineType_82;
35535 --
35536 
35537 ---------------------------------------
35538 --
35539 -- PRIVATE FUNCTION
35540 --         AcctLineType_83
35541 --
35542 ---------------------------------------
35543 PROCEDURE AcctLineType_83 (
35544   p_application_id        IN NUMBER
35545  ,p_event_id              IN NUMBER
35546  ,p_calculate_acctd_flag  IN VARCHAR2
35547  ,p_calculate_g_l_flag    IN VARCHAR2
35548  ,p_actual_flag           IN OUT VARCHAR2
35549  ,p_balance_type_code     OUT VARCHAR2
35550  ,p_gain_or_loss_ref      OUT VARCHAR2
35551  
35552 --PO Distribution ID
35553  , p_source_2            IN NUMBER
35554 --Cost CCID
35558 --Adjustment Cost CCID
35555  , p_source_4            IN NUMBER
35556 --Allow Account Override Flag
35557  , p_source_5            IN VARCHAR2
35559  , p_source_6            IN NUMBER
35560 --Cost Clearing CCID
35561  , p_source_7            IN NUMBER
35562 --Exchange Rate Variance Flag
35563  , p_source_22            IN VARCHAR2
35564 --Reversing Line Flag
35565  , p_source_23            IN VARCHAR2
35566 --Actual Upgrade Credit Accounting Class
35567  , p_source_24            IN VARCHAR2
35568 --Entered Raw Cost
35569  , p_source_25            IN NUMBER
35570 --Entered Currency Code
35571  , p_source_26            IN VARCHAR2
35572 --Accounted Raw Cost
35573  , p_source_27            IN NUMBER
35574 --Exchange Rate Date
35575  , p_source_28            IN DATE
35576 --Exchange Rate
35577  , p_source_29            IN NUMBER
35578 --Exchange Rate Type
35579  , p_source_30            IN VARCHAR2
35580 --Actual Upgrade Debit Accounting Class
35581  , p_source_31            IN VARCHAR2
35582 --Use Actuals Upgrade Attributes Flag
35583  , p_source_32            IN VARCHAR2
35584 --Expenditure Item ID
35585  , p_source_33            IN NUMBER
35586 --Cost Distribution Line Number
35587  , p_source_34            IN NUMBER
35588 --Line Type
35589  , p_source_35            IN VARCHAR2
35590  , p_source_35_meaning    IN VARCHAR2
35591 --Reversed Line Number
35592  , p_source_36            IN NUMBER
35593 )
35594 IS
35595 
35596 l_component_type              VARCHAR2(80);
35597 l_component_code              VARCHAR2(30);
35598 l_component_type_code         VARCHAR2(1);
35599 l_component_appl_id           INTEGER;
35600 l_amb_context_code            VARCHAR2(30);
35601 l_entity_code                 VARCHAR2(30);
35602 l_event_class_code            VARCHAR2(30);
35603 l_ae_header_id                NUMBER;
35604 l_event_type_code             VARCHAR2(30);
35605 l_line_definition_code        VARCHAR2(30);
35606 l_line_definition_owner_code  VARCHAR2(1);
35607 --
35608 -- adr variables
35609 l_segment                     VARCHAR2(30);
35610 l_ccid                        NUMBER;
35611 l_adr_transaction_coa_id      NUMBER;
35612 l_adr_accounting_coa_id       NUMBER;
35613 l_adr_flexfield_segment_code  VARCHAR2(30);
35614 l_adr_flex_value_set_id       NUMBER;
35615 l_adr_value_type_code         VARCHAR2(30);
35616 l_adr_value_combination_id    NUMBER;
35617 l_adr_value_segment_code      VARCHAR2(30);
35618 
35619 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35620 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35621 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35622 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35623 
35624 -- 4262811 Variables ------------------------------------------------------------------------------------------
35625 l_entered_amt_idx             NUMBER;
35626 l_accted_amt_idx              NUMBER;
35627 l_acc_rev_flag                VARCHAR2(1);
35628 l_accrual_line_num            NUMBER;
35629 l_tmp_amt                     NUMBER;
35630 l_acc_rev_natural_side_code   VARCHAR2(1);
35631 
35632 l_num_entries                 NUMBER;
35633 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35634 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35635 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35636 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35637 l_recog_line_1                NUMBER;
35638 l_recog_line_2                NUMBER;
35639 
35640 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35641 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35642 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35643 
35644 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35645 
35646 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35647 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35648 
35649 ---------------------------------------------------------------------------------------------------------------
35650 
35651 
35652 --
35653 -- bulk performance
35654 --
35655 l_balance_type_code           VARCHAR2(1);
35656 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35657 l_log_module                  VARCHAR2(240);
35658 
35659 --
35660 -- Upgrade strategy
35661 --
35662 l_actual_upg_option           VARCHAR2(1);
35663 l_enc_upg_option           VARCHAR2(1);
35664 
35665 --
35666 BEGIN
35667 --
35668 IF g_log_enabled THEN
35669       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
35670 END IF;
35671 --
35672 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35673 
35674       trace
35675          (p_msg      => 'BEGIN of AcctLineType_83'
35676          ,p_level    => C_LEVEL_PROCEDURE
35677          ,p_module   => l_log_module);
35678 
35679 END IF;
35680 --
35681 l_component_type             := 'AMB_JLT';
35682 l_component_code             := 'PA_RAW_COST_ADJ_FED';
35683 l_component_type_code        := 'S';
35684 l_component_appl_id          :=  275;
35685 l_amb_context_code           := 'DEFAULT';
35686 l_entity_code                := 'EXPENDITURES';
35687 l_event_class_code           := 'SUPPLIER_COST_ADJ';
35688 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
35689 l_line_definition_owner_code := 'S';
35690 l_line_definition_code       := 'FV_PROJECTS_JLD';
35691 --
35692 l_balance_type_code          := 'A';
35693 l_segment                     := NULL;
35694 l_ccid                        := NULL;
35695 l_adr_transaction_coa_id      := NULL;
35696 l_adr_accounting_coa_id       := NULL;
35697 l_adr_flexfield_segment_code  := NULL;
35701 l_adr_value_segment_code      := NULL;
35698 l_adr_flex_value_set_id       := NULL;
35699 l_adr_value_type_code         := NULL;
35700 l_adr_value_combination_id    := NULL;
35702 
35703 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35704 l_bflow_class_code           := '';    -- 4219869 Business Flow
35705 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35706 l_budgetary_control_flag     := 'N';
35707 
35708 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35709 l_bflow_applied_to_amt       := NULL; -- 5132302
35710 l_entered_amt_idx            := NULL;          -- 4262811
35711 l_accted_amt_idx             := NULL;          -- 4262811
35712 l_acc_rev_flag               := NULL;          -- 4262811
35713 l_accrual_line_num           := NULL;          -- 4262811
35714 l_tmp_amt                    := NULL;          -- 4262811
35715 --
35716  
35717 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35718     l_balance_type_code <> 'B' THEN
35719 IF NVL(p_source_22,'
35720 ') =  'N'
35721  THEN 
35722 
35723    --
35724    XLA_AE_LINES_PKG.SetNewLine;
35725 
35726    p_balance_type_code          := l_balance_type_code;
35727    -- set the flag so later we will know whether the gain loss line needs to be created
35728    
35729    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35730      p_actual_flag :='A';
35731    END IF;
35732 
35733    --
35734    -- bulk performance
35735    --
35736    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35737                                       p_header_num   => 0); -- 4262811
35738    --
35739    -- set accounting line options
35740    --
35741    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35742            p_natural_side_code          => 'D'
35743          , p_gain_or_loss_flag          => 'N'
35744          , p_gl_transfer_mode_code      => 'S'
35745          , p_acct_entry_type_code       => 'A'
35746          , p_switch_side_flag           => 'Y'
35747          , p_merge_duplicate_code       => 'N'
35748          );
35749    --
35750    l_acc_rev_natural_side_code := 'C';  -- 4262811
35751    -- 
35752    --
35753    -- set accounting line type info
35754    --
35755    xla_ae_lines_pkg.SetAcctLineType
35756       (p_component_type             => l_component_type
35757       ,p_event_type_code            => l_event_type_code
35758       ,p_line_definition_owner_code => l_line_definition_owner_code
35759       ,p_line_definition_code       => l_line_definition_code
35760       ,p_accounting_line_code       => l_component_code
35761       ,p_accounting_line_type_code  => l_component_type_code
35762       ,p_accounting_line_appl_id    => l_component_appl_id
35763       ,p_amb_context_code           => l_amb_context_code
35764       ,p_entity_code                => l_entity_code
35765       ,p_event_class_code           => l_event_class_code);
35766    --
35767    -- set accounting class
35768    --
35769    xla_ae_lines_pkg.SetAcctClass(
35770            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
35771          , p_ae_header_id           => l_ae_header_id
35772          );
35773 
35774    --
35775    -- set rounding class
35776    --
35777    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35778                       'FEDERAL_PROJECT_COST';
35779 
35780    --
35781    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35782    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35783    --
35784    -- bulk performance
35785    --
35786    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35787 
35788    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35789       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35790 
35791    -- 4955764
35792    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35793       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35794 
35795    -- 4458381 Public Sector Enh
35796    
35797    --
35798    -- set accounting attributes for the line type
35799    --
35800    l_entered_amt_idx := 22;
35801    l_accted_amt_idx  := 27;
35802    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35803    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35804    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
35805    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
35806    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
35807    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
35808    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
35809    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
35810    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
35811    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
35812    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
35813    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
35814    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
35815    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
35816    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
35817    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
35818    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
35819    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
35820    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
35821    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
35822    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
35823    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
35827    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
35824    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
35825    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
35826    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
35828    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
35829    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
35830    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
35831    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
35832    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
35833    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
35834    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
35835    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
35836    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
35837    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
35838    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
35839    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
35840    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
35841    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
35842    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
35843    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
35844    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
35845    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
35846    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
35847    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
35848    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
35849    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
35850    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
35851    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
35852    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
35853    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
35854    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
35855    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
35856    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
35857    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
35858    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
35859    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
35860    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
35861    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
35862    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
35863 
35864    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35865    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35866 
35867    ---------------------------------------------------------------------------------------------------------------
35868    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35869    ---------------------------------------------------------------------------------------------------------------
35870    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35871 
35872    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35873    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35874 
35875    IF xla_accounting_cache_pkg.GetValueChar
35876          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35877          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35878    AND l_bflow_method_code = 'PRIOR_ENTRY'
35879 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35880    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35881          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35882        )
35883    THEN
35884          xla_ae_lines_pkg.BflowUpgEntry
35885            (p_business_method_code    => l_bflow_method_code
35886            ,p_business_class_code     => l_bflow_class_code
35887            ,p_balance_type            => l_balance_type_code);
35888    ELSE
35889       NULL;
35890 -- No business flow processing for business flow method of NONE.
35891    END IF;
35892 
35893    --
35894    -- call analytical criteria
35895    --
35896    
35897    --
35898    -- call description
35899    --
35900    -- No description or it is inherited.
35901    --
35902    -- call ADRs
35903    -- Bug 4922099
35904    --
35905    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35906         (NVL(l_actual_upg_option, 'N') = 'O') OR
35907         (NVL(l_enc_upg_option, 'N') = 'O')
35908       )
35909    THEN
35910    NULL;
35911    --
35912    --
35913    
35914   l_ccid := AcctDerRule_13(
35915            p_application_id           => p_application_id
35916          , p_ae_header_id             => l_ae_header_id 
35917 , p_source_5 => p_source_5
35918 , p_source_6 => p_source_6
35919          , x_transaction_coa_id       => l_adr_transaction_coa_id
35920          , x_accounting_coa_id        => l_adr_accounting_coa_id
35921          , x_value_type_code          => l_adr_value_type_code
35922          , p_side                     => 'NA'
35923    );
35924 
35925    xla_ae_lines_pkg.set_ccid(
35926     p_code_combination_id          => l_ccid
35927   , p_value_type_code              => l_adr_value_type_code
35928   , p_transaction_coa_id           => l_adr_transaction_coa_id
35929   , p_accounting_coa_id            => l_adr_accounting_coa_id
35930   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
35931   , p_adr_type_code                => 'S'
35932   , p_component_type               => l_component_type
35933   , p_component_code               => l_component_code
35937   , p_side                         => 'NA'
35934   , p_component_type_code          => l_component_type_code
35935   , p_component_appl_id            => l_component_appl_id
35936   , p_amb_context_code             => l_amb_context_code
35938   );
35939 
35940 
35941    l_segment := AcctDerRule_6(
35942            p_application_id           => p_application_id
35943          , p_ae_header_id             => l_ae_header_id 
35944 , p_source_2 => p_source_2
35945          , x_transaction_coa_id       => l_adr_transaction_coa_id
35946          , x_accounting_coa_id        => l_adr_accounting_coa_id
35947          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
35948          , x_flex_value_set_id        => l_adr_flex_value_set_id
35949          , x_value_type_code          => l_adr_value_type_code
35950          , x_value_combination_id     => l_adr_value_combination_id
35951          , x_value_segment_code       => l_adr_value_segment_code
35952          , p_side                     => 'NA'
35953          , p_override_seg_flag        => 'Y'
35954    );
35955 
35956    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
35957 
35958       xla_ae_lines_pkg.set_segment(
35959           p_to_segment_code         => 'GL_ACCOUNT'
35960         , p_segment_value           => l_segment
35961         , p_from_segment_code       => l_adr_value_segment_code
35962         , p_from_combination_id     => l_adr_value_combination_id
35963         , p_value_type_code         => l_adr_value_type_code
35964         , p_transaction_coa_id      => l_adr_transaction_coa_id
35965         , p_accounting_coa_id       => l_adr_accounting_coa_id
35966         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
35967         , p_flex_value_set_id       => l_adr_flex_value_set_id
35968         , p_adr_code                => 'FV_4XXX_PROJECTS'
35969         , p_adr_type_code           => 'S'
35970         , p_component_type          => l_component_type
35971         , p_component_code          => l_component_code
35972         , p_component_type_code     => l_component_type_code
35973         , p_component_appl_id       => l_component_appl_id
35974         , p_amb_context_code        => l_amb_context_code
35975         , p_entity_code             => 'EXPENDITURES'
35976         , p_event_class_code        => 'SUPPLIER_COST_ADJ'
35977         , p_side                    => 'NA'
35978         );
35979 
35980   END IF;
35981 
35982    --
35983    --
35984    END IF;
35985    --
35986    -- Bug 4922099
35987    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35988           (NVL(l_enc_upg_option, 'N') = 'O')
35989         ) AND
35990         (l_bflow_method_code = 'PRIOR_ENTRY')
35991       )
35992    THEN
35993       IF
35994       --
35995       1 = 2
35996       --
35997       THEN
35998       xla_accounting_err_pkg.build_message
35999                                     (p_appli_s_name            => 'XLA'
36000                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36001                                     ,p_token_1                 => 'LINE_NUMBER'
36002                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36003                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36004                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36005                                                                              l_component_type
36006                                                                             ,l_component_code
36007                                                                             ,l_component_type_code
36008                                                                             ,l_component_appl_id
36009                                                                             ,l_amb_context_code
36010                                                                             ,l_entity_code
36011                                                                             ,l_event_class_code
36012                                                                            )
36013                                     ,p_token_3                 => 'OWNER'
36014                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36015                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36016                                                                           ,p_lookup_code    => l_component_type_code
36017                                                                          )
36018                                     ,p_token_4                 => 'PRODUCT_NAME'
36019                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36020                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36021                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36022                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36023                                     ,p_ae_header_id            =>  NULL
36024                                        );
36025 
36026         IF (C_LEVEL_ERROR>= g_log_level) THEN
36027                  trace
36028                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36029                       ,p_level    => C_LEVEL_ERROR
36030                       ,p_module   => l_log_module);
36031         END IF;
36032       END IF;
36033    END IF;
36034    --
36035    --
36036    ------------------------------------------------------------------------------------------------
36037    -- 4219869 Business Flow
36038    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36039    -- Prior Entry.  Currently, the following code is always generated.
36043    ------------------------------------------------------------------------------------
36040    ------------------------------------------------------------------------------------------------
36041    XLA_AE_LINES_PKG.ValidateCurrentLine;
36042 
36044    -- 4219869 Business Flow
36045    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36046    ------------------------------------------------------------------------------------
36047    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36048 
36049    ----------------------------------------------------------------------------------
36050    -- 4219869 Business Flow
36051    -- Update journal entry status -- Need to generate this within IF <condition>
36052    ----------------------------------------------------------------------------------
36053    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36054          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36055          ,p_balance_type_code => l_balance_type_code
36056          );
36057 
36058    -------------------------------------------------------------------------------------------
36059    -- 4262811 - Generate the Accrual Reversal lines
36060    -------------------------------------------------------------------------------------------
36061    BEGIN
36062       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36063                               (g_array_event(p_event_id).array_value_num('header_index'));
36064       IF l_acc_rev_flag IS NULL THEN
36065          l_acc_rev_flag := 'N';
36066       END IF;
36067    EXCEPTION
36068       WHEN OTHERS THEN
36069          l_acc_rev_flag := 'N';
36070    END;
36071    --
36072    IF (l_acc_rev_flag = 'Y') THEN
36073 
36074        -- 4645092  ------------------------------------------------------------------------------
36075        -- To allow MPA report to determine if it should generate report process
36076        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36077        ------------------------------------------------------------------------------------------
36078 
36079        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36080        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36081 
36082        --
36083        -- Update the line information that should be overwritten
36084        --
36085        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36086                                          p_header_num   => 1);
36087        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36088 
36089        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36090 
36091        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36092           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36093        END IF;
36094 
36095       --
36096       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36097       --
36098       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36099           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36100       ELSE
36101           ---------------------------------------------------------------------------------------------------
36102           -- 4262811a Switch Sign
36103           ---------------------------------------------------------------------------------------------------
36104           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36105           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36106                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36107           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36108                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36109           -- 5132302
36110           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36111                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36112 
36113       END IF;
36114 
36115       -- 4955764
36116       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36117       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36118 
36119 
36120       XLA_AE_LINES_PKG.ValidateCurrentLine;
36121       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36122 
36123       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36124                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36125                ,p_balance_type_code => l_balance_type_code);
36126 
36127    END IF;
36128 
36129    -----------------------------------------------------------------------------------------
36130    -- 4262811 Multiperiod Accounting
36131    -----------------------------------------------------------------------------------------
36132      -- No MPA option is assigned.
36133 
36134 
36135 END IF;
36136 END IF;
36137 --
36138 
36139 --
36140 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36141    trace
36142       (p_msg      => 'END of AcctLineType_83'
36143       ,p_level    => C_LEVEL_PROCEDURE
36144       ,p_module   => l_log_module);
36145 END IF;
36146 --
36147 EXCEPTION
36148   WHEN xla_exceptions_pkg.application_exception THEN
36149       RAISE;
36150   WHEN OTHERS THEN
36151        xla_exceptions_pkg.raise_message
36152            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_83');
36153 END AcctLineType_83;
36154 --
36155 
36156 ---------------------------------------
36157 --
36158 -- PRIVATE FUNCTION
36162 PROCEDURE AcctLineType_84 (
36159 --         AcctLineType_84
36160 --
36161 ---------------------------------------
36163   p_application_id        IN NUMBER
36164  ,p_event_id              IN NUMBER
36165  ,p_calculate_acctd_flag  IN VARCHAR2
36166  ,p_calculate_g_l_flag    IN VARCHAR2
36167  ,p_actual_flag           IN OUT VARCHAR2
36168  ,p_balance_type_code     OUT VARCHAR2
36169  ,p_gain_or_loss_ref      OUT VARCHAR2
36170  
36171 --Cost CCID
36172  , p_source_4            IN NUMBER
36173 --Allow Account Override Flag
36174  , p_source_5            IN VARCHAR2
36175 --Adjustment Cost CCID
36176  , p_source_6            IN NUMBER
36177 --Cost Clearing CCID
36178  , p_source_7            IN NUMBER
36179 --Reversing Line Flag
36180  , p_source_23            IN VARCHAR2
36181 --Actual Upgrade Credit Accounting Class
36182  , p_source_24            IN VARCHAR2
36183 --Entered Raw Cost
36184  , p_source_25            IN NUMBER
36185 --Entered Currency Code
36186  , p_source_26            IN VARCHAR2
36187 --Accounted Raw Cost
36188  , p_source_27            IN NUMBER
36189 --Exchange Rate Date
36190  , p_source_28            IN DATE
36191 --Exchange Rate
36192  , p_source_29            IN NUMBER
36193 --Exchange Rate Type
36194  , p_source_30            IN VARCHAR2
36195 --Actual Upgrade Debit Accounting Class
36196  , p_source_31            IN VARCHAR2
36197 --Use Actuals Upgrade Attributes Flag
36198  , p_source_32            IN VARCHAR2
36199 --Expenditure Item ID
36200  , p_source_33            IN NUMBER
36201 --Cost Distribution Line Number
36202  , p_source_34            IN NUMBER
36203 --Line Type
36204  , p_source_35            IN VARCHAR2
36205  , p_source_35_meaning    IN VARCHAR2
36206 --Reversed Line Number
36207  , p_source_36            IN NUMBER
36208 )
36209 IS
36210 
36211 l_component_type              VARCHAR2(80);
36212 l_component_code              VARCHAR2(30);
36213 l_component_type_code         VARCHAR2(1);
36214 l_component_appl_id           INTEGER;
36215 l_amb_context_code            VARCHAR2(30);
36216 l_entity_code                 VARCHAR2(30);
36217 l_event_class_code            VARCHAR2(30);
36218 l_ae_header_id                NUMBER;
36219 l_event_type_code             VARCHAR2(30);
36220 l_line_definition_code        VARCHAR2(30);
36221 l_line_definition_owner_code  VARCHAR2(1);
36222 --
36223 -- adr variables
36224 l_segment                     VARCHAR2(30);
36225 l_ccid                        NUMBER;
36226 l_adr_transaction_coa_id      NUMBER;
36227 l_adr_accounting_coa_id       NUMBER;
36228 l_adr_flexfield_segment_code  VARCHAR2(30);
36229 l_adr_flex_value_set_id       NUMBER;
36230 l_adr_value_type_code         VARCHAR2(30);
36231 l_adr_value_combination_id    NUMBER;
36232 l_adr_value_segment_code      VARCHAR2(30);
36233 
36234 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36235 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36236 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36237 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36238 
36239 -- 4262811 Variables ------------------------------------------------------------------------------------------
36240 l_entered_amt_idx             NUMBER;
36241 l_accted_amt_idx              NUMBER;
36242 l_acc_rev_flag                VARCHAR2(1);
36243 l_accrual_line_num            NUMBER;
36244 l_tmp_amt                     NUMBER;
36245 l_acc_rev_natural_side_code   VARCHAR2(1);
36246 
36247 l_num_entries                 NUMBER;
36248 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36249 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36250 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36251 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36252 l_recog_line_1                NUMBER;
36253 l_recog_line_2                NUMBER;
36254 
36255 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36256 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36257 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36258 
36259 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36260 
36261 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36262 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36263 
36264 ---------------------------------------------------------------------------------------------------------------
36265 
36266 
36267 --
36268 -- bulk performance
36269 --
36270 l_balance_type_code           VARCHAR2(1);
36271 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36272 l_log_module                  VARCHAR2(240);
36273 
36274 --
36275 -- Upgrade strategy
36276 --
36277 l_actual_upg_option           VARCHAR2(1);
36278 l_enc_upg_option           VARCHAR2(1);
36279 
36280 --
36281 BEGIN
36282 --
36283 IF g_log_enabled THEN
36284       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
36285 END IF;
36286 --
36287 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36288 
36289       trace
36290          (p_msg      => 'BEGIN of AcctLineType_84'
36291          ,p_level    => C_LEVEL_PROCEDURE
36292          ,p_module   => l_log_module);
36293 
36294 END IF;
36295 --
36296 l_component_type             := 'AMB_JLT';
36297 l_component_code             := 'PA_RAW_COST_ADJ_FED';
36298 l_component_type_code        := 'S';
36299 l_component_appl_id          :=  275;
36300 l_amb_context_code           := 'DEFAULT';
36301 l_entity_code                := 'EXPENDITURES';
36302 l_event_class_code           := 'LABOR_COST_ADJ';
36306 --
36303 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
36304 l_line_definition_owner_code := 'S';
36305 l_line_definition_code       := 'FV_PROJECTS_JLD';
36307 l_balance_type_code          := 'A';
36308 l_segment                     := NULL;
36309 l_ccid                        := NULL;
36310 l_adr_transaction_coa_id      := NULL;
36311 l_adr_accounting_coa_id       := NULL;
36312 l_adr_flexfield_segment_code  := NULL;
36313 l_adr_flex_value_set_id       := NULL;
36314 l_adr_value_type_code         := NULL;
36315 l_adr_value_combination_id    := NULL;
36316 l_adr_value_segment_code      := NULL;
36317 
36318 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36319 l_bflow_class_code           := '';    -- 4219869 Business Flow
36320 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36321 l_budgetary_control_flag     := 'N';
36322 
36323 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36324 l_bflow_applied_to_amt       := NULL; -- 5132302
36325 l_entered_amt_idx            := NULL;          -- 4262811
36326 l_accted_amt_idx             := NULL;          -- 4262811
36327 l_acc_rev_flag               := NULL;          -- 4262811
36328 l_accrual_line_num           := NULL;          -- 4262811
36329 l_tmp_amt                    := NULL;          -- 4262811
36330 --
36331  
36332 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36333     l_balance_type_code <> 'B' THEN
36334 
36335    --
36336    XLA_AE_LINES_PKG.SetNewLine;
36337 
36338    p_balance_type_code          := l_balance_type_code;
36339    -- set the flag so later we will know whether the gain loss line needs to be created
36340    
36341    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36342      p_actual_flag :='A';
36343    END IF;
36344 
36345    --
36346    -- bulk performance
36347    --
36348    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36349                                       p_header_num   => 0); -- 4262811
36350    --
36351    -- set accounting line options
36352    --
36353    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36354            p_natural_side_code          => 'D'
36355          , p_gain_or_loss_flag          => 'N'
36356          , p_gl_transfer_mode_code      => 'S'
36357          , p_acct_entry_type_code       => 'A'
36358          , p_switch_side_flag           => 'Y'
36359          , p_merge_duplicate_code       => 'N'
36360          );
36361    --
36362    l_acc_rev_natural_side_code := 'C';  -- 4262811
36363    -- 
36364    --
36365    -- set accounting line type info
36366    --
36367    xla_ae_lines_pkg.SetAcctLineType
36368       (p_component_type             => l_component_type
36369       ,p_event_type_code            => l_event_type_code
36370       ,p_line_definition_owner_code => l_line_definition_owner_code
36371       ,p_line_definition_code       => l_line_definition_code
36372       ,p_accounting_line_code       => l_component_code
36373       ,p_accounting_line_type_code  => l_component_type_code
36374       ,p_accounting_line_appl_id    => l_component_appl_id
36375       ,p_amb_context_code           => l_amb_context_code
36376       ,p_entity_code                => l_entity_code
36377       ,p_event_class_code           => l_event_class_code);
36378    --
36379    -- set accounting class
36380    --
36381    xla_ae_lines_pkg.SetAcctClass(
36382            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
36383          , p_ae_header_id           => l_ae_header_id
36384          );
36385 
36386    --
36387    -- set rounding class
36388    --
36389    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36390                       'FEDERAL_PROJECT_COST';
36391 
36392    --
36393    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36394    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36395    --
36396    -- bulk performance
36397    --
36398    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36399 
36400    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36401       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36402 
36403    -- 4955764
36404    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36405       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36406 
36407    -- 4458381 Public Sector Enh
36408    
36409    --
36410    -- set accounting attributes for the line type
36411    --
36412    l_entered_amt_idx := 22;
36413    l_accted_amt_idx  := 27;
36414    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36415    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
36416    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
36417    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
36418    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
36419    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
36420    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
36421    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
36422    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
36423    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
36424    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
36425    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
36426    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
36427    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
36428    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
36429    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
36433    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
36430    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
36431    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
36432    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
36434    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
36435    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
36436    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
36437    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
36438    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
36439    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
36440    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
36441    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
36442    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
36443    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
36444    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
36445    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
36446    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
36447    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
36448    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
36449    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
36450    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
36451    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
36452    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
36453    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
36454    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
36455    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
36456    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
36457    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
36458    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
36459    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
36460    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
36461    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
36462    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
36463    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
36464    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
36465    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
36466    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
36467    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
36468    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
36469    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
36470    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
36471    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
36472    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
36473    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
36474    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
36475 
36476    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36477    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36478 
36479    ---------------------------------------------------------------------------------------------------------------
36480    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36481    ---------------------------------------------------------------------------------------------------------------
36482    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36483 
36484    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36485    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36486 
36487    IF xla_accounting_cache_pkg.GetValueChar
36488          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36489          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36490    AND l_bflow_method_code = 'PRIOR_ENTRY'
36491 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36492    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36493          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36494        )
36495    THEN
36496          xla_ae_lines_pkg.BflowUpgEntry
36497            (p_business_method_code    => l_bflow_method_code
36498            ,p_business_class_code     => l_bflow_class_code
36499            ,p_balance_type            => l_balance_type_code);
36500    ELSE
36501       NULL;
36502 -- No business flow processing for business flow method of NONE.
36503    END IF;
36504 
36505    --
36506    -- call analytical criteria
36507    --
36508    
36509    --
36510    -- call description
36511    --
36512    -- No description or it is inherited.
36513    --
36514    -- call ADRs
36515    -- Bug 4922099
36516    --
36517    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36518         (NVL(l_actual_upg_option, 'N') = 'O') OR
36519         (NVL(l_enc_upg_option, 'N') = 'O')
36520       )
36521    THEN
36522    NULL;
36523    --
36524    --
36525    
36526   l_ccid := AcctDerRule_13(
36527            p_application_id           => p_application_id
36528          , p_ae_header_id             => l_ae_header_id 
36529 , p_source_5 => p_source_5
36530 , p_source_6 => p_source_6
36531          , x_transaction_coa_id       => l_adr_transaction_coa_id
36532          , x_accounting_coa_id        => l_adr_accounting_coa_id
36533          , x_value_type_code          => l_adr_value_type_code
36534          , p_side                     => 'NA'
36535    );
36536 
36537    xla_ae_lines_pkg.set_ccid(
36538     p_code_combination_id          => l_ccid
36539   , p_value_type_code              => l_adr_value_type_code
36543   , p_adr_type_code                => 'S'
36540   , p_transaction_coa_id           => l_adr_transaction_coa_id
36541   , p_accounting_coa_id            => l_adr_accounting_coa_id
36542   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
36544   , p_component_type               => l_component_type
36545   , p_component_code               => l_component_code
36546   , p_component_type_code          => l_component_type_code
36547   , p_component_appl_id            => l_component_appl_id
36548   , p_amb_context_code             => l_amb_context_code
36549   , p_side                         => 'NA'
36550   );
36551 
36552 
36553    l_segment := AcctDerRule_4(
36554            p_application_id           => p_application_id
36555          , p_ae_header_id             => l_ae_header_id 
36556          , x_transaction_coa_id       => l_adr_transaction_coa_id
36557          , x_accounting_coa_id        => l_adr_accounting_coa_id
36558          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
36559          , x_flex_value_set_id        => l_adr_flex_value_set_id
36560          , x_value_type_code          => l_adr_value_type_code
36561          , x_value_combination_id     => l_adr_value_combination_id
36562          , x_value_segment_code       => l_adr_value_segment_code
36563          , p_side                     => 'NA'
36564          , p_override_seg_flag        => 'Y'
36565    );
36566 
36567    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
36568 
36569       xla_ae_lines_pkg.set_segment(
36570           p_to_segment_code         => 'GL_ACCOUNT'
36571         , p_segment_value           => l_segment
36572         , p_from_segment_code       => l_adr_value_segment_code
36573         , p_from_combination_id     => l_adr_value_combination_id
36574         , p_value_type_code         => l_adr_value_type_code
36575         , p_transaction_coa_id      => l_adr_transaction_coa_id
36576         , p_accounting_coa_id       => l_adr_accounting_coa_id
36577         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
36578         , p_flex_value_set_id       => l_adr_flex_value_set_id
36579         , p_adr_code                => 'FV_461001_PROJECTS'
36580         , p_adr_type_code           => 'S'
36581         , p_component_type          => l_component_type
36582         , p_component_code          => l_component_code
36583         , p_component_type_code     => l_component_type_code
36584         , p_component_appl_id       => l_component_appl_id
36585         , p_amb_context_code        => l_amb_context_code
36586         , p_entity_code             => 'EXPENDITURES'
36587         , p_event_class_code        => 'LABOR_COST_ADJ'
36588         , p_side                    => 'NA'
36589         );
36590 
36591   END IF;
36592 
36593    --
36594    --
36595    END IF;
36596    --
36597    -- Bug 4922099
36598    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36599           (NVL(l_enc_upg_option, 'N') = 'O')
36600         ) AND
36601         (l_bflow_method_code = 'PRIOR_ENTRY')
36602       )
36603    THEN
36604       IF
36605       --
36606       1 = 2
36607       --
36608       THEN
36609       xla_accounting_err_pkg.build_message
36610                                     (p_appli_s_name            => 'XLA'
36611                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36612                                     ,p_token_1                 => 'LINE_NUMBER'
36613                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36614                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36615                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36616                                                                              l_component_type
36617                                                                             ,l_component_code
36618                                                                             ,l_component_type_code
36619                                                                             ,l_component_appl_id
36620                                                                             ,l_amb_context_code
36621                                                                             ,l_entity_code
36622                                                                             ,l_event_class_code
36623                                                                            )
36624                                     ,p_token_3                 => 'OWNER'
36625                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36626                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36627                                                                           ,p_lookup_code    => l_component_type_code
36628                                                                          )
36629                                     ,p_token_4                 => 'PRODUCT_NAME'
36630                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36631                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36632                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36633                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36634                                     ,p_ae_header_id            =>  NULL
36635                                        );
36636 
36637         IF (C_LEVEL_ERROR>= g_log_level) THEN
36638                  trace
36639                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36640                       ,p_level    => C_LEVEL_ERROR
36641                       ,p_module   => l_log_module);
36642         END IF;
36643       END IF;
36644    END IF;
36645    --
36646    --
36650    -- Prior Entry.  Currently, the following code is always generated.
36647    ------------------------------------------------------------------------------------------------
36648    -- 4219869 Business Flow
36649    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36651    ------------------------------------------------------------------------------------------------
36652    XLA_AE_LINES_PKG.ValidateCurrentLine;
36653 
36654    ------------------------------------------------------------------------------------
36655    -- 4219869 Business Flow
36656    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36657    ------------------------------------------------------------------------------------
36658    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36659 
36660    ----------------------------------------------------------------------------------
36661    -- 4219869 Business Flow
36662    -- Update journal entry status -- Need to generate this within IF <condition>
36663    ----------------------------------------------------------------------------------
36664    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36665          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36666          ,p_balance_type_code => l_balance_type_code
36667          );
36668 
36669    -------------------------------------------------------------------------------------------
36670    -- 4262811 - Generate the Accrual Reversal lines
36671    -------------------------------------------------------------------------------------------
36672    BEGIN
36673       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36674                               (g_array_event(p_event_id).array_value_num('header_index'));
36675       IF l_acc_rev_flag IS NULL THEN
36676          l_acc_rev_flag := 'N';
36677       END IF;
36678    EXCEPTION
36679       WHEN OTHERS THEN
36680          l_acc_rev_flag := 'N';
36681    END;
36682    --
36683    IF (l_acc_rev_flag = 'Y') THEN
36684 
36685        -- 4645092  ------------------------------------------------------------------------------
36686        -- To allow MPA report to determine if it should generate report process
36687        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36688        ------------------------------------------------------------------------------------------
36689 
36690        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36691        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36692 
36693        --
36694        -- Update the line information that should be overwritten
36695        --
36696        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36697                                          p_header_num   => 1);
36698        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36699 
36700        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36701 
36702        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36703           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36704        END IF;
36705 
36706       --
36707       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36708       --
36709       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36710           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36711       ELSE
36712           ---------------------------------------------------------------------------------------------------
36713           -- 4262811a Switch Sign
36714           ---------------------------------------------------------------------------------------------------
36715           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36716           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36717                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36718           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36719                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36720           -- 5132302
36721           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36722                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36723 
36724       END IF;
36725 
36726       -- 4955764
36727       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36728       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36729 
36730 
36731       XLA_AE_LINES_PKG.ValidateCurrentLine;
36732       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36733 
36734       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36735                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36736                ,p_balance_type_code => l_balance_type_code);
36737 
36738    END IF;
36739 
36740    -----------------------------------------------------------------------------------------
36741    -- 4262811 Multiperiod Accounting
36742    -----------------------------------------------------------------------------------------
36743      -- No MPA option is assigned.
36744 
36745 
36746 END IF;
36747 --
36748 
36749 --
36750 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36751    trace
36752       (p_msg      => 'END of AcctLineType_84'
36753       ,p_level    => C_LEVEL_PROCEDURE
36754       ,p_module   => l_log_module);
36755 END IF;
36756 --
36757 EXCEPTION
36758   WHEN xla_exceptions_pkg.application_exception THEN
36759       RAISE;
36760   WHEN OTHERS THEN
36764 --
36761        xla_exceptions_pkg.raise_message
36762            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_84');
36763 END AcctLineType_84;
36765 
36766 ---------------------------------------
36767 --
36768 -- PRIVATE FUNCTION
36769 --         AcctLineType_85
36770 --
36771 ---------------------------------------
36772 PROCEDURE AcctLineType_85 (
36773   p_application_id        IN NUMBER
36774  ,p_event_id              IN NUMBER
36775  ,p_calculate_acctd_flag  IN VARCHAR2
36776  ,p_calculate_g_l_flag    IN VARCHAR2
36777  ,p_actual_flag           IN OUT VARCHAR2
36778  ,p_balance_type_code     OUT VARCHAR2
36779  ,p_gain_or_loss_ref      OUT VARCHAR2
36780  
36781 --Cost CCID
36782  , p_source_4            IN NUMBER
36783 --Allow Account Override Flag
36784  , p_source_5            IN VARCHAR2
36785 --Cost Clearing CCID
36786  , p_source_7            IN NUMBER
36787 --Adjustment Cost Clearing CCID
36788  , p_source_8            IN NUMBER
36789 --Reversing Line Flag
36790  , p_source_23            IN VARCHAR2
36791 --Actual Upgrade Credit Accounting Class
36792  , p_source_24            IN VARCHAR2
36793 --Entered Raw Cost
36794  , p_source_25            IN NUMBER
36795 --Entered Currency Code
36796  , p_source_26            IN VARCHAR2
36797 --Accounted Raw Cost
36798  , p_source_27            IN NUMBER
36799 --Exchange Rate Date
36800  , p_source_28            IN DATE
36801 --Exchange Rate
36802  , p_source_29            IN NUMBER
36803 --Exchange Rate Type
36804  , p_source_30            IN VARCHAR2
36805 --Actual Upgrade Debit Accounting Class
36806  , p_source_31            IN VARCHAR2
36807 --Use Actuals Upgrade Attributes Flag
36808  , p_source_32            IN VARCHAR2
36809 --Expenditure Item ID
36810  , p_source_33            IN NUMBER
36811 --Cost Distribution Line Number
36812  , p_source_34            IN NUMBER
36813 --Line Type
36814  , p_source_35            IN VARCHAR2
36815  , p_source_35_meaning    IN VARCHAR2
36816 --Reversed Line Number
36817  , p_source_36            IN NUMBER
36818 )
36819 IS
36820 
36821 l_component_type              VARCHAR2(80);
36822 l_component_code              VARCHAR2(30);
36823 l_component_type_code         VARCHAR2(1);
36824 l_component_appl_id           INTEGER;
36825 l_amb_context_code            VARCHAR2(30);
36826 l_entity_code                 VARCHAR2(30);
36827 l_event_class_code            VARCHAR2(30);
36828 l_ae_header_id                NUMBER;
36829 l_event_type_code             VARCHAR2(30);
36830 l_line_definition_code        VARCHAR2(30);
36831 l_line_definition_owner_code  VARCHAR2(1);
36832 --
36833 -- adr variables
36834 l_segment                     VARCHAR2(30);
36835 l_ccid                        NUMBER;
36836 l_adr_transaction_coa_id      NUMBER;
36837 l_adr_accounting_coa_id       NUMBER;
36838 l_adr_flexfield_segment_code  VARCHAR2(30);
36839 l_adr_flex_value_set_id       NUMBER;
36840 l_adr_value_type_code         VARCHAR2(30);
36841 l_adr_value_combination_id    NUMBER;
36842 l_adr_value_segment_code      VARCHAR2(30);
36843 
36844 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36845 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36846 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36847 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36848 
36849 -- 4262811 Variables ------------------------------------------------------------------------------------------
36850 l_entered_amt_idx             NUMBER;
36851 l_accted_amt_idx              NUMBER;
36852 l_acc_rev_flag                VARCHAR2(1);
36853 l_accrual_line_num            NUMBER;
36854 l_tmp_amt                     NUMBER;
36855 l_acc_rev_natural_side_code   VARCHAR2(1);
36856 
36857 l_num_entries                 NUMBER;
36858 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36859 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36860 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36861 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36862 l_recog_line_1                NUMBER;
36863 l_recog_line_2                NUMBER;
36864 
36865 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36866 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36867 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36868 
36869 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36870 
36871 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36872 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36873 
36874 ---------------------------------------------------------------------------------------------------------------
36875 
36876 
36877 --
36878 -- bulk performance
36879 --
36880 l_balance_type_code           VARCHAR2(1);
36881 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36882 l_log_module                  VARCHAR2(240);
36883 
36884 --
36885 -- Upgrade strategy
36886 --
36887 l_actual_upg_option           VARCHAR2(1);
36888 l_enc_upg_option           VARCHAR2(1);
36889 
36890 --
36891 BEGIN
36892 --
36893 IF g_log_enabled THEN
36894       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
36895 END IF;
36896 --
36897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36898 
36899       trace
36900          (p_msg      => 'BEGIN of AcctLineType_85'
36901          ,p_level    => C_LEVEL_PROCEDURE
36902          ,p_module   => l_log_module);
36903 
36904 END IF;
36905 --
36906 l_component_type             := 'AMB_JLT';
36907 l_component_code             := 'PA_RAW_COST_CLEARING';
36911 l_entity_code                := 'EXPENDITURES';
36908 l_component_type_code        := 'S';
36909 l_component_appl_id          :=  275;
36910 l_amb_context_code           := 'DEFAULT';
36912 l_event_class_code           := 'WIP_COST';
36913 l_event_type_code            := 'WIP_COST_ALL';
36914 l_line_definition_owner_code := 'S';
36915 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
36916 --
36917 l_balance_type_code          := 'A';
36918 l_segment                     := NULL;
36919 l_ccid                        := NULL;
36920 l_adr_transaction_coa_id      := NULL;
36921 l_adr_accounting_coa_id       := NULL;
36922 l_adr_flexfield_segment_code  := NULL;
36923 l_adr_flex_value_set_id       := NULL;
36924 l_adr_value_type_code         := NULL;
36925 l_adr_value_combination_id    := NULL;
36926 l_adr_value_segment_code      := NULL;
36927 
36928 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36929 l_bflow_class_code           := '';    -- 4219869 Business Flow
36930 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36931 l_budgetary_control_flag     := 'N';
36932 
36933 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36934 l_bflow_applied_to_amt       := NULL; -- 5132302
36935 l_entered_amt_idx            := NULL;          -- 4262811
36936 l_accted_amt_idx             := NULL;          -- 4262811
36937 l_acc_rev_flag               := NULL;          -- 4262811
36938 l_accrual_line_num           := NULL;          -- 4262811
36939 l_tmp_amt                    := NULL;          -- 4262811
36940 --
36941  
36942 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36943     l_balance_type_code <> 'B' THEN
36944 
36945    --
36946    XLA_AE_LINES_PKG.SetNewLine;
36947 
36948    p_balance_type_code          := l_balance_type_code;
36949    -- set the flag so later we will know whether the gain loss line needs to be created
36950    
36951    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36952      p_actual_flag :='A';
36953    END IF;
36954 
36955    --
36956    -- bulk performance
36957    --
36958    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36959                                       p_header_num   => 0); -- 4262811
36960    --
36961    -- set accounting line options
36962    --
36963    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36964            p_natural_side_code          => 'C'
36965          , p_gain_or_loss_flag          => 'N'
36966          , p_gl_transfer_mode_code      => 'S'
36967          , p_acct_entry_type_code       => 'A'
36968          , p_switch_side_flag           => 'Y'
36969          , p_merge_duplicate_code       => 'N'
36970          );
36971    --
36972    l_acc_rev_natural_side_code := 'D';  -- 4262811
36973    -- 
36974    --
36975    -- set accounting line type info
36976    --
36977    xla_ae_lines_pkg.SetAcctLineType
36978       (p_component_type             => l_component_type
36979       ,p_event_type_code            => l_event_type_code
36980       ,p_line_definition_owner_code => l_line_definition_owner_code
36981       ,p_line_definition_code       => l_line_definition_code
36982       ,p_accounting_line_code       => l_component_code
36983       ,p_accounting_line_type_code  => l_component_type_code
36984       ,p_accounting_line_appl_id    => l_component_appl_id
36985       ,p_amb_context_code           => l_amb_context_code
36986       ,p_entity_code                => l_entity_code
36987       ,p_event_class_code           => l_event_class_code);
36988    --
36989    -- set accounting class
36990    --
36991    xla_ae_lines_pkg.SetAcctClass(
36992            p_accounting_class_code  => 'COST_CLEARING'
36993          , p_ae_header_id           => l_ae_header_id
36994          );
36995 
36996    --
36997    -- set rounding class
36998    --
36999    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37000                       'COST_CLEARING';
37001 
37002    --
37003    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37004    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37005    --
37006    -- bulk performance
37007    --
37008    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37009 
37010    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37011       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37012 
37013    -- 4955764
37014    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37015       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37016 
37017    -- 4458381 Public Sector Enh
37018    
37019    --
37020    -- set accounting attributes for the line type
37021    --
37022    l_entered_amt_idx := 22;
37023    l_accted_amt_idx  := 27;
37024    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37025    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37026    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
37027    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
37028    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
37029    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
37030    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
37031    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
37032    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
37033    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
37034    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
37035    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
37036    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
37040    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
37037    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
37038    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
37039    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
37041    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
37042    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
37043    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
37044    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
37045    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
37046    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
37047    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
37048    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
37049    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
37050    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
37051    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
37052    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
37053    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
37054    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
37055    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
37056    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
37057    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
37058    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
37059    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
37060    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
37061    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
37062    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
37063    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
37064    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
37065    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
37066    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
37067    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
37068    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
37069    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
37070    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
37071    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
37072    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
37073    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
37074    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
37075    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
37076    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
37077    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
37078    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
37079    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
37080    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
37081    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
37082    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
37083    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
37084    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
37085 
37086    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37087    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37088 
37089    ---------------------------------------------------------------------------------------------------------------
37090    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37091    ---------------------------------------------------------------------------------------------------------------
37092    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37093 
37094    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37095    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37096 
37097    IF xla_accounting_cache_pkg.GetValueChar
37098          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37099          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37100    AND l_bflow_method_code = 'PRIOR_ENTRY'
37101 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37102    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37103          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37104        )
37105    THEN
37106          xla_ae_lines_pkg.BflowUpgEntry
37107            (p_business_method_code    => l_bflow_method_code
37108            ,p_business_class_code     => l_bflow_class_code
37109            ,p_balance_type            => l_balance_type_code);
37110    ELSE
37111       NULL;
37112 -- No business flow processing for business flow method of NONE.
37113    END IF;
37114 
37115    --
37116    -- call analytical criteria
37117    --
37118    
37119    --
37120    -- call description
37121    --
37122    -- No description or it is inherited.
37123    --
37124    -- call ADRs
37125    -- Bug 4922099
37126    --
37127    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37128         (NVL(l_actual_upg_option, 'N') = 'O') OR
37129         (NVL(l_enc_upg_option, 'N') = 'O')
37130       )
37131    THEN
37132    NULL;
37133    --
37134    --
37135    
37136   l_ccid := AcctDerRule_14(
37137            p_application_id           => p_application_id
37138          , p_ae_header_id             => l_ae_header_id 
37139 , p_source_5 => p_source_5
37140 , p_source_7 => p_source_7
37141 , p_source_8 => p_source_8
37142          , x_transaction_coa_id       => l_adr_transaction_coa_id
37143          , x_accounting_coa_id        => l_adr_accounting_coa_id
37144          , x_value_type_code          => l_adr_value_type_code
37148    xla_ae_lines_pkg.set_ccid(
37145          , p_side                     => 'NA'
37146    );
37147 
37149     p_code_combination_id          => l_ccid
37150   , p_value_type_code              => l_adr_value_type_code
37151   , p_transaction_coa_id           => l_adr_transaction_coa_id
37152   , p_accounting_coa_id            => l_adr_accounting_coa_id
37153   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
37154   , p_adr_type_code                => 'S'
37155   , p_component_type               => l_component_type
37156   , p_component_code               => l_component_code
37157   , p_component_type_code          => l_component_type_code
37158   , p_component_appl_id            => l_component_appl_id
37159   , p_amb_context_code             => l_amb_context_code
37160   , p_side                         => 'NA'
37161   );
37162 
37163 
37164    --
37165    --
37166    END IF;
37167    --
37168    -- Bug 4922099
37169    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37170           (NVL(l_enc_upg_option, 'N') = 'O')
37171         ) AND
37172         (l_bflow_method_code = 'PRIOR_ENTRY')
37173       )
37174    THEN
37175       IF
37176       --
37177       1 = 2
37178       --
37179       THEN
37180       xla_accounting_err_pkg.build_message
37181                                     (p_appli_s_name            => 'XLA'
37182                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37183                                     ,p_token_1                 => 'LINE_NUMBER'
37184                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37185                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37186                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37187                                                                              l_component_type
37188                                                                             ,l_component_code
37189                                                                             ,l_component_type_code
37190                                                                             ,l_component_appl_id
37191                                                                             ,l_amb_context_code
37192                                                                             ,l_entity_code
37193                                                                             ,l_event_class_code
37194                                                                            )
37195                                     ,p_token_3                 => 'OWNER'
37196                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37197                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37198                                                                           ,p_lookup_code    => l_component_type_code
37199                                                                          )
37200                                     ,p_token_4                 => 'PRODUCT_NAME'
37201                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37202                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37203                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37204                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37205                                     ,p_ae_header_id            =>  NULL
37206                                        );
37207 
37208         IF (C_LEVEL_ERROR>= g_log_level) THEN
37209                  trace
37210                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37211                       ,p_level    => C_LEVEL_ERROR
37212                       ,p_module   => l_log_module);
37213         END IF;
37214       END IF;
37215    END IF;
37216    --
37217    --
37218    ------------------------------------------------------------------------------------------------
37219    -- 4219869 Business Flow
37220    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37221    -- Prior Entry.  Currently, the following code is always generated.
37222    ------------------------------------------------------------------------------------------------
37223    XLA_AE_LINES_PKG.ValidateCurrentLine;
37224 
37225    ------------------------------------------------------------------------------------
37226    -- 4219869 Business Flow
37227    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37228    ------------------------------------------------------------------------------------
37229    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37230 
37231    ----------------------------------------------------------------------------------
37232    -- 4219869 Business Flow
37233    -- Update journal entry status -- Need to generate this within IF <condition>
37234    ----------------------------------------------------------------------------------
37235    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37236          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37237          ,p_balance_type_code => l_balance_type_code
37238          );
37239 
37240    -------------------------------------------------------------------------------------------
37241    -- 4262811 - Generate the Accrual Reversal lines
37242    -------------------------------------------------------------------------------------------
37243    BEGIN
37244       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37245                               (g_array_event(p_event_id).array_value_num('header_index'));
37246       IF l_acc_rev_flag IS NULL THEN
37247          l_acc_rev_flag := 'N';
37248       END IF;
37249    EXCEPTION
37250       WHEN OTHERS THEN
37254    IF (l_acc_rev_flag = 'Y') THEN
37251          l_acc_rev_flag := 'N';
37252    END;
37253    --
37255 
37256        -- 4645092  ------------------------------------------------------------------------------
37257        -- To allow MPA report to determine if it should generate report process
37258        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37259        ------------------------------------------------------------------------------------------
37260 
37261        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37262        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37263 
37264        --
37265        -- Update the line information that should be overwritten
37266        --
37267        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37268                                          p_header_num   => 1);
37269        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37270 
37271        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37272 
37273        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37274           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37275        END IF;
37276 
37277       --
37278       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37279       --
37280       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37281           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37282       ELSE
37283           ---------------------------------------------------------------------------------------------------
37284           -- 4262811a Switch Sign
37285           ---------------------------------------------------------------------------------------------------
37286           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37287           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37288                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37289           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37290                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37291           -- 5132302
37292           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37293                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37294 
37295       END IF;
37296 
37297       -- 4955764
37298       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37299       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37300 
37301 
37302       XLA_AE_LINES_PKG.ValidateCurrentLine;
37303       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37304 
37305       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37306                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37307                ,p_balance_type_code => l_balance_type_code);
37308 
37309    END IF;
37310 
37311    -----------------------------------------------------------------------------------------
37312    -- 4262811 Multiperiod Accounting
37313    -----------------------------------------------------------------------------------------
37314      -- No MPA option is assigned.
37315 
37316 
37317 END IF;
37318 --
37319 
37320 --
37321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37322    trace
37323       (p_msg      => 'END of AcctLineType_85'
37324       ,p_level    => C_LEVEL_PROCEDURE
37325       ,p_module   => l_log_module);
37326 END IF;
37327 --
37328 EXCEPTION
37329   WHEN xla_exceptions_pkg.application_exception THEN
37330       RAISE;
37331   WHEN OTHERS THEN
37332        xla_exceptions_pkg.raise_message
37333            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_85');
37334 END AcctLineType_85;
37335 --
37336 
37337 ---------------------------------------
37338 --
37339 -- PRIVATE FUNCTION
37340 --         AcctLineType_86
37341 --
37342 ---------------------------------------
37343 PROCEDURE AcctLineType_86 (
37344   p_application_id        IN NUMBER
37345  ,p_event_id              IN NUMBER
37346  ,p_calculate_acctd_flag  IN VARCHAR2
37347  ,p_calculate_g_l_flag    IN VARCHAR2
37348  ,p_actual_flag           IN OUT VARCHAR2
37349  ,p_balance_type_code     OUT VARCHAR2
37350  ,p_gain_or_loss_ref      OUT VARCHAR2
37351  
37352 --Cost CCID
37353  , p_source_4            IN NUMBER
37354 --Allow Account Override Flag
37355  , p_source_5            IN VARCHAR2
37356 --Cost Clearing CCID
37357  , p_source_7            IN NUMBER
37358 --Adjustment Cost Clearing CCID
37359  , p_source_8            IN NUMBER
37360 --Reversing Line Flag
37361  , p_source_23            IN VARCHAR2
37362 --Actual Upgrade Credit Accounting Class
37363  , p_source_24            IN VARCHAR2
37364 --Entered Raw Cost
37365  , p_source_25            IN NUMBER
37366 --Entered Currency Code
37367  , p_source_26            IN VARCHAR2
37368 --Accounted Raw Cost
37369  , p_source_27            IN NUMBER
37370 --Exchange Rate Date
37371  , p_source_28            IN DATE
37372 --Exchange Rate
37373  , p_source_29            IN NUMBER
37374 --Exchange Rate Type
37375  , p_source_30            IN VARCHAR2
37376 --Actual Upgrade Debit Accounting Class
37377  , p_source_31            IN VARCHAR2
37378 --Use Actuals Upgrade Attributes Flag
37379  , p_source_32            IN VARCHAR2
37380 --Expenditure Item ID
37381  , p_source_33            IN NUMBER
37382 --Cost Distribution Line Number
37386  , p_source_35_meaning    IN VARCHAR2
37383  , p_source_34            IN NUMBER
37384 --Line Type
37385  , p_source_35            IN VARCHAR2
37387 --Reversed Line Number
37388  , p_source_36            IN NUMBER
37389 )
37390 IS
37391 
37392 l_component_type              VARCHAR2(80);
37393 l_component_code              VARCHAR2(30);
37394 l_component_type_code         VARCHAR2(1);
37395 l_component_appl_id           INTEGER;
37396 l_amb_context_code            VARCHAR2(30);
37397 l_entity_code                 VARCHAR2(30);
37398 l_event_class_code            VARCHAR2(30);
37399 l_ae_header_id                NUMBER;
37400 l_event_type_code             VARCHAR2(30);
37401 l_line_definition_code        VARCHAR2(30);
37402 l_line_definition_owner_code  VARCHAR2(1);
37403 --
37404 -- adr variables
37405 l_segment                     VARCHAR2(30);
37406 l_ccid                        NUMBER;
37407 l_adr_transaction_coa_id      NUMBER;
37408 l_adr_accounting_coa_id       NUMBER;
37409 l_adr_flexfield_segment_code  VARCHAR2(30);
37410 l_adr_flex_value_set_id       NUMBER;
37411 l_adr_value_type_code         VARCHAR2(30);
37412 l_adr_value_combination_id    NUMBER;
37413 l_adr_value_segment_code      VARCHAR2(30);
37414 
37415 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37416 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37417 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37418 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37419 
37420 -- 4262811 Variables ------------------------------------------------------------------------------------------
37421 l_entered_amt_idx             NUMBER;
37422 l_accted_amt_idx              NUMBER;
37423 l_acc_rev_flag                VARCHAR2(1);
37424 l_accrual_line_num            NUMBER;
37425 l_tmp_amt                     NUMBER;
37426 l_acc_rev_natural_side_code   VARCHAR2(1);
37427 
37428 l_num_entries                 NUMBER;
37429 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37430 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37431 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37432 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37433 l_recog_line_1                NUMBER;
37434 l_recog_line_2                NUMBER;
37435 
37436 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37437 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37438 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37439 
37440 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37441 
37442 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37443 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37444 
37445 ---------------------------------------------------------------------------------------------------------------
37446 
37447 
37448 --
37449 -- bulk performance
37450 --
37451 l_balance_type_code           VARCHAR2(1);
37452 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37453 l_log_module                  VARCHAR2(240);
37454 
37455 --
37456 -- Upgrade strategy
37457 --
37458 l_actual_upg_option           VARCHAR2(1);
37459 l_enc_upg_option           VARCHAR2(1);
37460 
37461 --
37462 BEGIN
37463 --
37464 IF g_log_enabled THEN
37465       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
37466 END IF;
37467 --
37468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37469 
37470       trace
37471          (p_msg      => 'BEGIN of AcctLineType_86'
37472          ,p_level    => C_LEVEL_PROCEDURE
37473          ,p_module   => l_log_module);
37474 
37475 END IF;
37476 --
37477 l_component_type             := 'AMB_JLT';
37478 l_component_code             := 'PA_RAW_COST_CLEARING';
37479 l_component_type_code        := 'S';
37480 l_component_appl_id          :=  275;
37481 l_amb_context_code           := 'DEFAULT';
37482 l_entity_code                := 'EXPENDITURES';
37483 l_event_class_code           := 'LABOR_COST';
37484 l_event_type_code            := 'LABOR_COST_ALL';
37485 l_line_definition_owner_code := 'S';
37486 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
37487 --
37488 l_balance_type_code          := 'A';
37489 l_segment                     := NULL;
37490 l_ccid                        := NULL;
37491 l_adr_transaction_coa_id      := NULL;
37492 l_adr_accounting_coa_id       := NULL;
37493 l_adr_flexfield_segment_code  := NULL;
37494 l_adr_flex_value_set_id       := NULL;
37495 l_adr_value_type_code         := NULL;
37496 l_adr_value_combination_id    := NULL;
37497 l_adr_value_segment_code      := NULL;
37498 
37499 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37500 l_bflow_class_code           := '';    -- 4219869 Business Flow
37501 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37502 l_budgetary_control_flag     := 'N';
37503 
37504 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37505 l_bflow_applied_to_amt       := NULL; -- 5132302
37506 l_entered_amt_idx            := NULL;          -- 4262811
37507 l_accted_amt_idx             := NULL;          -- 4262811
37508 l_acc_rev_flag               := NULL;          -- 4262811
37509 l_accrual_line_num           := NULL;          -- 4262811
37510 l_tmp_amt                    := NULL;          -- 4262811
37511 --
37512  
37513 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37514     l_balance_type_code <> 'B' THEN
37515 
37516    --
37517    XLA_AE_LINES_PKG.SetNewLine;
37518 
37519    p_balance_type_code          := l_balance_type_code;
37523      p_actual_flag :='A';
37520    -- set the flag so later we will know whether the gain loss line needs to be created
37521    
37522    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37524    END IF;
37525 
37526    --
37527    -- bulk performance
37528    --
37529    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37530                                       p_header_num   => 0); -- 4262811
37531    --
37532    -- set accounting line options
37533    --
37534    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37535            p_natural_side_code          => 'C'
37536          , p_gain_or_loss_flag          => 'N'
37537          , p_gl_transfer_mode_code      => 'S'
37538          , p_acct_entry_type_code       => 'A'
37539          , p_switch_side_flag           => 'Y'
37540          , p_merge_duplicate_code       => 'N'
37541          );
37542    --
37543    l_acc_rev_natural_side_code := 'D';  -- 4262811
37544    -- 
37545    --
37546    -- set accounting line type info
37547    --
37548    xla_ae_lines_pkg.SetAcctLineType
37549       (p_component_type             => l_component_type
37550       ,p_event_type_code            => l_event_type_code
37551       ,p_line_definition_owner_code => l_line_definition_owner_code
37552       ,p_line_definition_code       => l_line_definition_code
37553       ,p_accounting_line_code       => l_component_code
37554       ,p_accounting_line_type_code  => l_component_type_code
37555       ,p_accounting_line_appl_id    => l_component_appl_id
37556       ,p_amb_context_code           => l_amb_context_code
37557       ,p_entity_code                => l_entity_code
37558       ,p_event_class_code           => l_event_class_code);
37559    --
37560    -- set accounting class
37561    --
37562    xla_ae_lines_pkg.SetAcctClass(
37563            p_accounting_class_code  => 'COST_CLEARING'
37564          , p_ae_header_id           => l_ae_header_id
37565          );
37566 
37567    --
37568    -- set rounding class
37569    --
37570    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37571                       'COST_CLEARING';
37572 
37573    --
37574    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37575    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37576    --
37577    -- bulk performance
37578    --
37579    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37580 
37581    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37582       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37583 
37584    -- 4955764
37585    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37586       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37587 
37588    -- 4458381 Public Sector Enh
37589    
37590    --
37591    -- set accounting attributes for the line type
37592    --
37593    l_entered_amt_idx := 22;
37594    l_accted_amt_idx  := 27;
37595    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37596    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
37597    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
37598    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
37599    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
37600    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
37601    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
37602    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
37603    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
37604    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
37605    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
37606    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
37607    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
37608    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
37609    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
37610    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
37611    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
37612    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
37613    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
37614    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
37615    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
37616    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
37617    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
37618    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
37619    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
37620    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
37621    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
37622    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
37623    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
37624    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
37625    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
37626    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
37627    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
37628    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
37629    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
37630    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
37631    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
37632    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
37633    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
37634    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
37638    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
37635    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
37636    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
37637    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
37639    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
37640    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
37641    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
37642    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
37643    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
37644    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
37645    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
37646    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
37647    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
37648    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
37649    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
37650    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
37651    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
37652    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
37653    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
37654    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
37655    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
37656 
37657    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37658    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37659 
37660    ---------------------------------------------------------------------------------------------------------------
37661    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37662    ---------------------------------------------------------------------------------------------------------------
37663    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37664 
37665    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37666    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37667 
37668    IF xla_accounting_cache_pkg.GetValueChar
37669          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37670          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37671    AND l_bflow_method_code = 'PRIOR_ENTRY'
37672 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37673    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37674          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37675        )
37676    THEN
37677          xla_ae_lines_pkg.BflowUpgEntry
37678            (p_business_method_code    => l_bflow_method_code
37679            ,p_business_class_code     => l_bflow_class_code
37680            ,p_balance_type            => l_balance_type_code);
37681    ELSE
37682       NULL;
37683 -- No business flow processing for business flow method of NONE.
37684    END IF;
37685 
37686    --
37687    -- call analytical criteria
37688    --
37689    
37690    --
37691    -- call description
37692    --
37693    -- No description or it is inherited.
37694    --
37695    -- call ADRs
37696    -- Bug 4922099
37697    --
37698    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37699         (NVL(l_actual_upg_option, 'N') = 'O') OR
37700         (NVL(l_enc_upg_option, 'N') = 'O')
37701       )
37702    THEN
37703    NULL;
37704    --
37705    --
37706    
37707   l_ccid := AcctDerRule_14(
37708            p_application_id           => p_application_id
37709          , p_ae_header_id             => l_ae_header_id 
37710 , p_source_5 => p_source_5
37711 , p_source_7 => p_source_7
37712 , p_source_8 => p_source_8
37713          , x_transaction_coa_id       => l_adr_transaction_coa_id
37714          , x_accounting_coa_id        => l_adr_accounting_coa_id
37715          , x_value_type_code          => l_adr_value_type_code
37716          , p_side                     => 'NA'
37717    );
37718 
37719    xla_ae_lines_pkg.set_ccid(
37720     p_code_combination_id          => l_ccid
37721   , p_value_type_code              => l_adr_value_type_code
37722   , p_transaction_coa_id           => l_adr_transaction_coa_id
37723   , p_accounting_coa_id            => l_adr_accounting_coa_id
37724   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
37725   , p_adr_type_code                => 'S'
37726   , p_component_type               => l_component_type
37727   , p_component_code               => l_component_code
37728   , p_component_type_code          => l_component_type_code
37729   , p_component_appl_id            => l_component_appl_id
37730   , p_amb_context_code             => l_amb_context_code
37731   , p_side                         => 'NA'
37732   );
37733 
37734 
37735    --
37736    --
37737    END IF;
37738    --
37739    -- Bug 4922099
37740    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37741           (NVL(l_enc_upg_option, 'N') = 'O')
37742         ) AND
37743         (l_bflow_method_code = 'PRIOR_ENTRY')
37744       )
37745    THEN
37746       IF
37747       --
37748       1 = 2
37749       --
37750       THEN
37751       xla_accounting_err_pkg.build_message
37752                                     (p_appli_s_name            => 'XLA'
37753                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37754                                     ,p_token_1                 => 'LINE_NUMBER'
37755                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37756                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37760                                                                             ,l_component_type_code
37757                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37758                                                                              l_component_type
37759                                                                             ,l_component_code
37761                                                                             ,l_component_appl_id
37762                                                                             ,l_amb_context_code
37763                                                                             ,l_entity_code
37764                                                                             ,l_event_class_code
37765                                                                            )
37766                                     ,p_token_3                 => 'OWNER'
37767                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37768                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37769                                                                           ,p_lookup_code    => l_component_type_code
37770                                                                          )
37771                                     ,p_token_4                 => 'PRODUCT_NAME'
37772                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37773                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37774                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37775                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37776                                     ,p_ae_header_id            =>  NULL
37777                                        );
37778 
37779         IF (C_LEVEL_ERROR>= g_log_level) THEN
37780                  trace
37781                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37782                       ,p_level    => C_LEVEL_ERROR
37783                       ,p_module   => l_log_module);
37784         END IF;
37785       END IF;
37786    END IF;
37787    --
37788    --
37789    ------------------------------------------------------------------------------------------------
37790    -- 4219869 Business Flow
37791    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37792    -- Prior Entry.  Currently, the following code is always generated.
37793    ------------------------------------------------------------------------------------------------
37794    XLA_AE_LINES_PKG.ValidateCurrentLine;
37795 
37796    ------------------------------------------------------------------------------------
37797    -- 4219869 Business Flow
37798    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37799    ------------------------------------------------------------------------------------
37800    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37801 
37802    ----------------------------------------------------------------------------------
37803    -- 4219869 Business Flow
37804    -- Update journal entry status -- Need to generate this within IF <condition>
37805    ----------------------------------------------------------------------------------
37806    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37807          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37808          ,p_balance_type_code => l_balance_type_code
37809          );
37810 
37811    -------------------------------------------------------------------------------------------
37812    -- 4262811 - Generate the Accrual Reversal lines
37813    -------------------------------------------------------------------------------------------
37814    BEGIN
37815       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37816                               (g_array_event(p_event_id).array_value_num('header_index'));
37817       IF l_acc_rev_flag IS NULL THEN
37818          l_acc_rev_flag := 'N';
37819       END IF;
37820    EXCEPTION
37821       WHEN OTHERS THEN
37822          l_acc_rev_flag := 'N';
37823    END;
37824    --
37825    IF (l_acc_rev_flag = 'Y') THEN
37826 
37827        -- 4645092  ------------------------------------------------------------------------------
37828        -- To allow MPA report to determine if it should generate report process
37829        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37830        ------------------------------------------------------------------------------------------
37831 
37832        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37833        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37834 
37835        --
37836        -- Update the line information that should be overwritten
37837        --
37838        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37839                                          p_header_num   => 1);
37840        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37841 
37842        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37843 
37844        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37845           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37846        END IF;
37847 
37848       --
37849       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37850       --
37851       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37852           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37853       ELSE
37854           ---------------------------------------------------------------------------------------------------
37858           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37855           -- 4262811a Switch Sign
37856           ---------------------------------------------------------------------------------------------------
37857           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37859                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37860           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37861                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37862           -- 5132302
37863           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37864                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37865 
37866       END IF;
37867 
37868       -- 4955764
37869       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37870       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37871 
37872 
37873       XLA_AE_LINES_PKG.ValidateCurrentLine;
37874       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37875 
37876       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37877                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37878                ,p_balance_type_code => l_balance_type_code);
37879 
37880    END IF;
37881 
37882    -----------------------------------------------------------------------------------------
37883    -- 4262811 Multiperiod Accounting
37884    -----------------------------------------------------------------------------------------
37885      -- No MPA option is assigned.
37886 
37887 
37888 END IF;
37889 --
37890 
37891 --
37892 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37893    trace
37894       (p_msg      => 'END of AcctLineType_86'
37895       ,p_level    => C_LEVEL_PROCEDURE
37896       ,p_module   => l_log_module);
37897 END IF;
37898 --
37899 EXCEPTION
37900   WHEN xla_exceptions_pkg.application_exception THEN
37901       RAISE;
37902   WHEN OTHERS THEN
37903        xla_exceptions_pkg.raise_message
37904            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_86');
37905 END AcctLineType_86;
37906 --
37907 
37908 ---------------------------------------
37909 --
37910 -- PRIVATE FUNCTION
37911 --         AcctLineType_87
37912 --
37913 ---------------------------------------
37914 PROCEDURE AcctLineType_87 (
37915   p_application_id        IN NUMBER
37916  ,p_event_id              IN NUMBER
37917  ,p_calculate_acctd_flag  IN VARCHAR2
37918  ,p_calculate_g_l_flag    IN VARCHAR2
37919  ,p_actual_flag           IN OUT VARCHAR2
37920  ,p_balance_type_code     OUT VARCHAR2
37921  ,p_gain_or_loss_ref      OUT VARCHAR2
37922  
37923 --Cost CCID
37924  , p_source_4            IN NUMBER
37925 --Allow Account Override Flag
37926  , p_source_5            IN VARCHAR2
37927 --Cost Clearing CCID
37928  , p_source_7            IN NUMBER
37929 --Adjustment Cost Clearing CCID
37930  , p_source_8            IN NUMBER
37931 --Reversing Line Flag
37932  , p_source_23            IN VARCHAR2
37933 --Actual Upgrade Credit Accounting Class
37934  , p_source_24            IN VARCHAR2
37935 --Entered Raw Cost
37936  , p_source_25            IN NUMBER
37937 --Entered Currency Code
37938  , p_source_26            IN VARCHAR2
37939 --Accounted Raw Cost
37940  , p_source_27            IN NUMBER
37941 --Exchange Rate Date
37942  , p_source_28            IN DATE
37943 --Exchange Rate
37944  , p_source_29            IN NUMBER
37945 --Exchange Rate Type
37946  , p_source_30            IN VARCHAR2
37947 --Actual Upgrade Debit Accounting Class
37948  , p_source_31            IN VARCHAR2
37949 --Use Actuals Upgrade Attributes Flag
37950  , p_source_32            IN VARCHAR2
37951 --Expenditure Item ID
37952  , p_source_33            IN NUMBER
37953 --Cost Distribution Line Number
37954  , p_source_34            IN NUMBER
37955 --Line Type
37956  , p_source_35            IN VARCHAR2
37957  , p_source_35_meaning    IN VARCHAR2
37958 --Reversed Line Number
37959  , p_source_36            IN NUMBER
37960 )
37961 IS
37962 
37963 l_component_type              VARCHAR2(80);
37964 l_component_code              VARCHAR2(30);
37965 l_component_type_code         VARCHAR2(1);
37966 l_component_appl_id           INTEGER;
37967 l_amb_context_code            VARCHAR2(30);
37968 l_entity_code                 VARCHAR2(30);
37969 l_event_class_code            VARCHAR2(30);
37970 l_ae_header_id                NUMBER;
37971 l_event_type_code             VARCHAR2(30);
37972 l_line_definition_code        VARCHAR2(30);
37973 l_line_definition_owner_code  VARCHAR2(1);
37974 --
37975 -- adr variables
37976 l_segment                     VARCHAR2(30);
37977 l_ccid                        NUMBER;
37978 l_adr_transaction_coa_id      NUMBER;
37979 l_adr_accounting_coa_id       NUMBER;
37980 l_adr_flexfield_segment_code  VARCHAR2(30);
37981 l_adr_flex_value_set_id       NUMBER;
37982 l_adr_value_type_code         VARCHAR2(30);
37983 l_adr_value_combination_id    NUMBER;
37984 l_adr_value_segment_code      VARCHAR2(30);
37985 
37986 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37987 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37988 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37989 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37990 
37991 -- 4262811 Variables ------------------------------------------------------------------------------------------
37992 l_entered_amt_idx             NUMBER;
37993 l_accted_amt_idx              NUMBER;
37997 l_acc_rev_natural_side_code   VARCHAR2(1);
37994 l_acc_rev_flag                VARCHAR2(1);
37995 l_accrual_line_num            NUMBER;
37996 l_tmp_amt                     NUMBER;
37998 
37999 l_num_entries                 NUMBER;
38000 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38001 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38002 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38003 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38004 l_recog_line_1                NUMBER;
38005 l_recog_line_2                NUMBER;
38006 
38007 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38008 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38009 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38010 
38011 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38012 
38013 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38014 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38015 
38016 ---------------------------------------------------------------------------------------------------------------
38017 
38018 
38019 --
38020 -- bulk performance
38021 --
38022 l_balance_type_code           VARCHAR2(1);
38023 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38024 l_log_module                  VARCHAR2(240);
38025 
38026 --
38027 -- Upgrade strategy
38028 --
38029 l_actual_upg_option           VARCHAR2(1);
38030 l_enc_upg_option           VARCHAR2(1);
38031 
38032 --
38033 BEGIN
38034 --
38035 IF g_log_enabled THEN
38036       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
38037 END IF;
38038 --
38039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38040 
38041       trace
38042          (p_msg      => 'BEGIN of AcctLineType_87'
38043          ,p_level    => C_LEVEL_PROCEDURE
38044          ,p_module   => l_log_module);
38045 
38046 END IF;
38047 --
38048 l_component_type             := 'AMB_JLT';
38049 l_component_code             := 'PA_RAW_COST_CLEARING';
38050 l_component_type_code        := 'S';
38051 l_component_appl_id          :=  275;
38052 l_amb_context_code           := 'DEFAULT';
38053 l_entity_code                := 'EXPENDITURES';
38054 l_event_class_code           := 'USG_COST';
38055 l_event_type_code            := 'USG_COST_ALL';
38056 l_line_definition_owner_code := 'S';
38057 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
38058 --
38059 l_balance_type_code          := 'A';
38060 l_segment                     := NULL;
38061 l_ccid                        := NULL;
38062 l_adr_transaction_coa_id      := NULL;
38063 l_adr_accounting_coa_id       := NULL;
38064 l_adr_flexfield_segment_code  := NULL;
38065 l_adr_flex_value_set_id       := NULL;
38066 l_adr_value_type_code         := NULL;
38067 l_adr_value_combination_id    := NULL;
38068 l_adr_value_segment_code      := NULL;
38069 
38070 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38071 l_bflow_class_code           := '';    -- 4219869 Business Flow
38072 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38073 l_budgetary_control_flag     := 'N';
38074 
38075 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38076 l_bflow_applied_to_amt       := NULL; -- 5132302
38077 l_entered_amt_idx            := NULL;          -- 4262811
38078 l_accted_amt_idx             := NULL;          -- 4262811
38079 l_acc_rev_flag               := NULL;          -- 4262811
38080 l_accrual_line_num           := NULL;          -- 4262811
38081 l_tmp_amt                    := NULL;          -- 4262811
38082 --
38083  
38084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38085     l_balance_type_code <> 'B' THEN
38086 
38087    --
38088    XLA_AE_LINES_PKG.SetNewLine;
38089 
38090    p_balance_type_code          := l_balance_type_code;
38091    -- set the flag so later we will know whether the gain loss line needs to be created
38092    
38093    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38094      p_actual_flag :='A';
38095    END IF;
38096 
38097    --
38098    -- bulk performance
38099    --
38100    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38101                                       p_header_num   => 0); -- 4262811
38102    --
38103    -- set accounting line options
38104    --
38105    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38106            p_natural_side_code          => 'C'
38107          , p_gain_or_loss_flag          => 'N'
38108          , p_gl_transfer_mode_code      => 'S'
38109          , p_acct_entry_type_code       => 'A'
38110          , p_switch_side_flag           => 'Y'
38111          , p_merge_duplicate_code       => 'N'
38112          );
38113    --
38114    l_acc_rev_natural_side_code := 'D';  -- 4262811
38115    -- 
38116    --
38117    -- set accounting line type info
38118    --
38119    xla_ae_lines_pkg.SetAcctLineType
38120       (p_component_type             => l_component_type
38121       ,p_event_type_code            => l_event_type_code
38122       ,p_line_definition_owner_code => l_line_definition_owner_code
38123       ,p_line_definition_code       => l_line_definition_code
38124       ,p_accounting_line_code       => l_component_code
38125       ,p_accounting_line_type_code  => l_component_type_code
38126       ,p_accounting_line_appl_id    => l_component_appl_id
38127       ,p_amb_context_code           => l_amb_context_code
38128       ,p_entity_code                => l_entity_code
38129       ,p_event_class_code           => l_event_class_code);
38130    --
38131    -- set accounting class
38132    --
38136          );
38133    xla_ae_lines_pkg.SetAcctClass(
38134            p_accounting_class_code  => 'COST_CLEARING'
38135          , p_ae_header_id           => l_ae_header_id
38137 
38138    --
38139    -- set rounding class
38140    --
38141    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38142                       'COST_CLEARING';
38143 
38144    --
38145    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38146    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38147    --
38148    -- bulk performance
38149    --
38150    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38151 
38152    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38153       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38154 
38155    -- 4955764
38156    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38157       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38158 
38159    -- 4458381 Public Sector Enh
38160    
38161    --
38162    -- set accounting attributes for the line type
38163    --
38164    l_entered_amt_idx := 22;
38165    l_accted_amt_idx  := 27;
38166    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38167    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
38168    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
38169    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
38170    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
38171    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
38172    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
38173    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
38174    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
38175    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
38176    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
38177    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
38178    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
38179    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
38180    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
38181    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
38182    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
38183    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
38184    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
38185    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
38186    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
38187    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
38188    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
38189    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
38190    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
38191    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
38192    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
38193    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
38194    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
38195    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
38196    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
38197    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
38198    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
38199    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
38200    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
38201    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
38202    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
38203    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
38204    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
38205    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
38206    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
38207    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
38208    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
38209    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
38210    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
38211    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
38212    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
38213    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
38214    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
38215    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
38216    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
38217    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
38218    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
38219    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
38220    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
38221    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
38222    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
38223    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
38224    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
38225    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
38226    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
38227 
38228    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38229    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38230 
38231    ---------------------------------------------------------------------------------------------------------------
38232    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38236    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38233    ---------------------------------------------------------------------------------------------------------------
38234    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38235 
38237    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38238 
38239    IF xla_accounting_cache_pkg.GetValueChar
38240          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38241          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38242    AND l_bflow_method_code = 'PRIOR_ENTRY'
38243 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38244    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38245          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38246        )
38247    THEN
38248          xla_ae_lines_pkg.BflowUpgEntry
38249            (p_business_method_code    => l_bflow_method_code
38250            ,p_business_class_code     => l_bflow_class_code
38251            ,p_balance_type            => l_balance_type_code);
38252    ELSE
38253       NULL;
38254 -- No business flow processing for business flow method of NONE.
38255    END IF;
38256 
38257    --
38258    -- call analytical criteria
38259    --
38260    
38261    --
38262    -- call description
38263    --
38264    -- No description or it is inherited.
38265    --
38266    -- call ADRs
38267    -- Bug 4922099
38268    --
38269    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38270         (NVL(l_actual_upg_option, 'N') = 'O') OR
38271         (NVL(l_enc_upg_option, 'N') = 'O')
38272       )
38273    THEN
38274    NULL;
38275    --
38276    --
38277    
38278   l_ccid := AcctDerRule_14(
38279            p_application_id           => p_application_id
38280          , p_ae_header_id             => l_ae_header_id 
38281 , p_source_5 => p_source_5
38282 , p_source_7 => p_source_7
38283 , p_source_8 => p_source_8
38284          , x_transaction_coa_id       => l_adr_transaction_coa_id
38285          , x_accounting_coa_id        => l_adr_accounting_coa_id
38286          , x_value_type_code          => l_adr_value_type_code
38287          , p_side                     => 'NA'
38288    );
38289 
38290    xla_ae_lines_pkg.set_ccid(
38291     p_code_combination_id          => l_ccid
38292   , p_value_type_code              => l_adr_value_type_code
38293   , p_transaction_coa_id           => l_adr_transaction_coa_id
38294   , p_accounting_coa_id            => l_adr_accounting_coa_id
38295   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
38296   , p_adr_type_code                => 'S'
38297   , p_component_type               => l_component_type
38298   , p_component_code               => l_component_code
38299   , p_component_type_code          => l_component_type_code
38300   , p_component_appl_id            => l_component_appl_id
38301   , p_amb_context_code             => l_amb_context_code
38302   , p_side                         => 'NA'
38303   );
38304 
38305 
38306    --
38307    --
38308    END IF;
38309    --
38310    -- Bug 4922099
38311    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38312           (NVL(l_enc_upg_option, 'N') = 'O')
38313         ) AND
38314         (l_bflow_method_code = 'PRIOR_ENTRY')
38315       )
38316    THEN
38317       IF
38318       --
38319       1 = 2
38320       --
38321       THEN
38322       xla_accounting_err_pkg.build_message
38323                                     (p_appli_s_name            => 'XLA'
38324                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38325                                     ,p_token_1                 => 'LINE_NUMBER'
38326                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38327                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38328                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38329                                                                              l_component_type
38330                                                                             ,l_component_code
38331                                                                             ,l_component_type_code
38332                                                                             ,l_component_appl_id
38333                                                                             ,l_amb_context_code
38334                                                                             ,l_entity_code
38335                                                                             ,l_event_class_code
38336                                                                            )
38337                                     ,p_token_3                 => 'OWNER'
38338                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38339                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38340                                                                           ,p_lookup_code    => l_component_type_code
38341                                                                          )
38342                                     ,p_token_4                 => 'PRODUCT_NAME'
38343                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38344                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38345                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38346                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38347                                     ,p_ae_header_id            =>  NULL
38351                  trace
38348                                        );
38349 
38350         IF (C_LEVEL_ERROR>= g_log_level) THEN
38352                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38353                       ,p_level    => C_LEVEL_ERROR
38354                       ,p_module   => l_log_module);
38355         END IF;
38356       END IF;
38357    END IF;
38358    --
38359    --
38360    ------------------------------------------------------------------------------------------------
38361    -- 4219869 Business Flow
38362    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38363    -- Prior Entry.  Currently, the following code is always generated.
38364    ------------------------------------------------------------------------------------------------
38365    XLA_AE_LINES_PKG.ValidateCurrentLine;
38366 
38367    ------------------------------------------------------------------------------------
38368    -- 4219869 Business Flow
38369    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38370    ------------------------------------------------------------------------------------
38371    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38372 
38373    ----------------------------------------------------------------------------------
38374    -- 4219869 Business Flow
38375    -- Update journal entry status -- Need to generate this within IF <condition>
38376    ----------------------------------------------------------------------------------
38377    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38378          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38379          ,p_balance_type_code => l_balance_type_code
38380          );
38381 
38382    -------------------------------------------------------------------------------------------
38383    -- 4262811 - Generate the Accrual Reversal lines
38384    -------------------------------------------------------------------------------------------
38385    BEGIN
38386       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38387                               (g_array_event(p_event_id).array_value_num('header_index'));
38388       IF l_acc_rev_flag IS NULL THEN
38389          l_acc_rev_flag := 'N';
38390       END IF;
38391    EXCEPTION
38392       WHEN OTHERS THEN
38393          l_acc_rev_flag := 'N';
38394    END;
38395    --
38396    IF (l_acc_rev_flag = 'Y') THEN
38397 
38398        -- 4645092  ------------------------------------------------------------------------------
38399        -- To allow MPA report to determine if it should generate report process
38400        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38401        ------------------------------------------------------------------------------------------
38402 
38403        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38404        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38405 
38406        --
38407        -- Update the line information that should be overwritten
38408        --
38409        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38410                                          p_header_num   => 1);
38411        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38412 
38413        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38414 
38415        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38416           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38417        END IF;
38418 
38419       --
38420       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38421       --
38422       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38423           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38424       ELSE
38425           ---------------------------------------------------------------------------------------------------
38426           -- 4262811a Switch Sign
38427           ---------------------------------------------------------------------------------------------------
38428           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38429           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38430                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38431           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38432                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38433           -- 5132302
38434           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38435                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38436 
38437       END IF;
38438 
38439       -- 4955764
38440       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38441       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38442 
38443 
38444       XLA_AE_LINES_PKG.ValidateCurrentLine;
38445       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38446 
38447       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38448                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38449                ,p_balance_type_code => l_balance_type_code);
38450 
38451    END IF;
38452 
38453    -----------------------------------------------------------------------------------------
38454    -- 4262811 Multiperiod Accounting
38455    -----------------------------------------------------------------------------------------
38456      -- No MPA option is assigned.
38457 
38458 
38459 END IF;
38463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38460 --
38461 
38462 --
38464    trace
38465       (p_msg      => 'END of AcctLineType_87'
38466       ,p_level    => C_LEVEL_PROCEDURE
38467       ,p_module   => l_log_module);
38468 END IF;
38469 --
38470 EXCEPTION
38471   WHEN xla_exceptions_pkg.application_exception THEN
38472       RAISE;
38473   WHEN OTHERS THEN
38474        xla_exceptions_pkg.raise_message
38475            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_87');
38476 END AcctLineType_87;
38477 --
38478 
38479 ---------------------------------------
38480 --
38481 -- PRIVATE FUNCTION
38482 --         AcctLineType_88
38483 --
38484 ---------------------------------------
38485 PROCEDURE AcctLineType_88 (
38486   p_application_id        IN NUMBER
38487  ,p_event_id              IN NUMBER
38488  ,p_calculate_acctd_flag  IN VARCHAR2
38489  ,p_calculate_g_l_flag    IN VARCHAR2
38490  ,p_actual_flag           IN OUT VARCHAR2
38491  ,p_balance_type_code     OUT VARCHAR2
38492  ,p_gain_or_loss_ref      OUT VARCHAR2
38493  
38494 --Cost CCID
38495  , p_source_4            IN NUMBER
38496 --Allow Account Override Flag
38497  , p_source_5            IN VARCHAR2
38498 --Cost Clearing CCID
38499  , p_source_7            IN NUMBER
38500 --Adjustment Cost Clearing CCID
38501  , p_source_8            IN NUMBER
38502 --Exchange Rate Variance Flag
38503  , p_source_22            IN VARCHAR2
38504 --Reversing Line Flag
38505  , p_source_23            IN VARCHAR2
38506 --Actual Upgrade Credit Accounting Class
38507  , p_source_24            IN VARCHAR2
38508 --Entered Raw Cost
38509  , p_source_25            IN NUMBER
38510 --Entered Currency Code
38511  , p_source_26            IN VARCHAR2
38512 --Accounted Raw Cost
38513  , p_source_27            IN NUMBER
38514 --Exchange Rate Date
38515  , p_source_28            IN DATE
38516 --Exchange Rate
38517  , p_source_29            IN NUMBER
38518 --Exchange Rate Type
38519  , p_source_30            IN VARCHAR2
38520 --Actual Upgrade Debit Accounting Class
38521  , p_source_31            IN VARCHAR2
38522 --Use Actuals Upgrade Attributes Flag
38523  , p_source_32            IN VARCHAR2
38524 --Expenditure Item ID
38525  , p_source_33            IN NUMBER
38526 --Cost Distribution Line Number
38527  , p_source_34            IN NUMBER
38528 --Line Type
38529  , p_source_35            IN VARCHAR2
38530  , p_source_35_meaning    IN VARCHAR2
38531 --Reversed Line Number
38532  , p_source_36            IN NUMBER
38533 )
38534 IS
38535 
38536 l_component_type              VARCHAR2(80);
38537 l_component_code              VARCHAR2(30);
38538 l_component_type_code         VARCHAR2(1);
38539 l_component_appl_id           INTEGER;
38540 l_amb_context_code            VARCHAR2(30);
38541 l_entity_code                 VARCHAR2(30);
38542 l_event_class_code            VARCHAR2(30);
38543 l_ae_header_id                NUMBER;
38544 l_event_type_code             VARCHAR2(30);
38545 l_line_definition_code        VARCHAR2(30);
38546 l_line_definition_owner_code  VARCHAR2(1);
38547 --
38548 -- adr variables
38549 l_segment                     VARCHAR2(30);
38550 l_ccid                        NUMBER;
38551 l_adr_transaction_coa_id      NUMBER;
38552 l_adr_accounting_coa_id       NUMBER;
38553 l_adr_flexfield_segment_code  VARCHAR2(30);
38554 l_adr_flex_value_set_id       NUMBER;
38555 l_adr_value_type_code         VARCHAR2(30);
38556 l_adr_value_combination_id    NUMBER;
38557 l_adr_value_segment_code      VARCHAR2(30);
38558 
38559 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38560 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38561 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38562 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38563 
38564 -- 4262811 Variables ------------------------------------------------------------------------------------------
38565 l_entered_amt_idx             NUMBER;
38566 l_accted_amt_idx              NUMBER;
38567 l_acc_rev_flag                VARCHAR2(1);
38568 l_accrual_line_num            NUMBER;
38569 l_tmp_amt                     NUMBER;
38570 l_acc_rev_natural_side_code   VARCHAR2(1);
38571 
38572 l_num_entries                 NUMBER;
38573 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38574 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38575 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38576 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38577 l_recog_line_1                NUMBER;
38578 l_recog_line_2                NUMBER;
38579 
38580 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38581 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38582 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38583 
38584 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38585 
38586 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38587 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38588 
38589 ---------------------------------------------------------------------------------------------------------------
38590 
38591 
38592 --
38593 -- bulk performance
38594 --
38595 l_balance_type_code           VARCHAR2(1);
38596 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38597 l_log_module                  VARCHAR2(240);
38598 
38599 --
38600 -- Upgrade strategy
38601 --
38602 l_actual_upg_option           VARCHAR2(1);
38603 l_enc_upg_option           VARCHAR2(1);
38604 
38605 --
38606 BEGIN
38607 --
38611 --
38608 IF g_log_enabled THEN
38609       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
38610 END IF;
38612 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38613 
38614       trace
38615          (p_msg      => 'BEGIN of AcctLineType_88'
38616          ,p_level    => C_LEVEL_PROCEDURE
38617          ,p_module   => l_log_module);
38618 
38619 END IF;
38620 --
38621 l_component_type             := 'AMB_JLT';
38622 l_component_code             := 'PA_RAW_COST_CLEARING';
38623 l_component_type_code        := 'S';
38624 l_component_appl_id          :=  275;
38625 l_amb_context_code           := 'DEFAULT';
38626 l_entity_code                := 'EXPENDITURES';
38627 l_event_class_code           := 'SUPPLIER_COST';
38628 l_event_type_code            := 'SUPPLIER_COST_ALL';
38629 l_line_definition_owner_code := 'S';
38630 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
38631 --
38632 l_balance_type_code          := 'A';
38633 l_segment                     := NULL;
38634 l_ccid                        := NULL;
38635 l_adr_transaction_coa_id      := NULL;
38636 l_adr_accounting_coa_id       := NULL;
38637 l_adr_flexfield_segment_code  := NULL;
38638 l_adr_flex_value_set_id       := NULL;
38639 l_adr_value_type_code         := NULL;
38640 l_adr_value_combination_id    := NULL;
38641 l_adr_value_segment_code      := NULL;
38642 
38643 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38644 l_bflow_class_code           := '';    -- 4219869 Business Flow
38645 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38646 l_budgetary_control_flag     := 'N';
38647 
38648 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38649 l_bflow_applied_to_amt       := NULL; -- 5132302
38650 l_entered_amt_idx            := NULL;          -- 4262811
38651 l_accted_amt_idx             := NULL;          -- 4262811
38652 l_acc_rev_flag               := NULL;          -- 4262811
38653 l_accrual_line_num           := NULL;          -- 4262811
38654 l_tmp_amt                    := NULL;          -- 4262811
38655 --
38656  
38657 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38658     l_balance_type_code <> 'B' THEN
38659 IF NVL(p_source_22,'
38660 ') =  'N'
38661  THEN 
38662 
38663    --
38664    XLA_AE_LINES_PKG.SetNewLine;
38665 
38666    p_balance_type_code          := l_balance_type_code;
38667    -- set the flag so later we will know whether the gain loss line needs to be created
38668    
38669    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38670      p_actual_flag :='A';
38671    END IF;
38672 
38673    --
38674    -- bulk performance
38675    --
38676    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38677                                       p_header_num   => 0); -- 4262811
38678    --
38679    -- set accounting line options
38680    --
38681    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38682            p_natural_side_code          => 'C'
38683          , p_gain_or_loss_flag          => 'N'
38684          , p_gl_transfer_mode_code      => 'S'
38685          , p_acct_entry_type_code       => 'A'
38686          , p_switch_side_flag           => 'Y'
38687          , p_merge_duplicate_code       => 'N'
38688          );
38689    --
38690    l_acc_rev_natural_side_code := 'D';  -- 4262811
38691    -- 
38692    --
38693    -- set accounting line type info
38694    --
38695    xla_ae_lines_pkg.SetAcctLineType
38696       (p_component_type             => l_component_type
38697       ,p_event_type_code            => l_event_type_code
38698       ,p_line_definition_owner_code => l_line_definition_owner_code
38699       ,p_line_definition_code       => l_line_definition_code
38700       ,p_accounting_line_code       => l_component_code
38701       ,p_accounting_line_type_code  => l_component_type_code
38702       ,p_accounting_line_appl_id    => l_component_appl_id
38703       ,p_amb_context_code           => l_amb_context_code
38704       ,p_entity_code                => l_entity_code
38705       ,p_event_class_code           => l_event_class_code);
38706    --
38707    -- set accounting class
38708    --
38709    xla_ae_lines_pkg.SetAcctClass(
38710            p_accounting_class_code  => 'COST_CLEARING'
38711          , p_ae_header_id           => l_ae_header_id
38712          );
38713 
38714    --
38715    -- set rounding class
38716    --
38717    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38718                       'COST_CLEARING';
38719 
38720    --
38721    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38722    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38723    --
38724    -- bulk performance
38725    --
38726    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38727 
38728    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38729       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38730 
38731    -- 4955764
38732    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38733       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38734 
38735    -- 4458381 Public Sector Enh
38736    
38737    --
38738    -- set accounting attributes for the line type
38739    --
38740    l_entered_amt_idx := 22;
38741    l_accted_amt_idx  := 27;
38742    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38743    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
38744    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
38745    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
38749    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
38746    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
38747    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
38748    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
38750    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
38751    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
38752    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
38753    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
38754    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
38755    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
38756    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
38757    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
38758    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
38759    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
38760    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
38761    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
38762    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
38763    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
38764    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
38765    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
38766    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
38767    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
38768    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
38769    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
38770    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
38771    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
38772    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
38773    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
38774    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
38775    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
38776    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
38777    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
38778    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
38779    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
38780    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
38781    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
38782    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
38783    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
38784    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
38785    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
38786    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
38787    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
38788    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
38789    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
38790    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
38791    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
38792    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
38793    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
38794    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
38795    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
38796    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
38797    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
38798    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
38799    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
38800    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
38801    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
38802    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
38803 
38804    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38805    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38806 
38807    ---------------------------------------------------------------------------------------------------------------
38808    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38809    ---------------------------------------------------------------------------------------------------------------
38810    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38811 
38812    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38813    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38814 
38815    IF xla_accounting_cache_pkg.GetValueChar
38816          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38817          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38818    AND l_bflow_method_code = 'PRIOR_ENTRY'
38819 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38820    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38821          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38822        )
38823    THEN
38824          xla_ae_lines_pkg.BflowUpgEntry
38825            (p_business_method_code    => l_bflow_method_code
38826            ,p_business_class_code     => l_bflow_class_code
38827            ,p_balance_type            => l_balance_type_code);
38828    ELSE
38829       NULL;
38830 -- No business flow processing for business flow method of NONE.
38831    END IF;
38832 
38833    --
38834    -- call analytical criteria
38835    --
38836    
38837    --
38838    -- call description
38839    --
38840    -- No description or it is inherited.
38841    --
38842    -- call ADRs
38843    -- Bug 4922099
38844    --
38845    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38846         (NVL(l_actual_upg_option, 'N') = 'O') OR
38850    NULL;
38847         (NVL(l_enc_upg_option, 'N') = 'O')
38848       )
38849    THEN
38851    --
38852    --
38853    
38854   l_ccid := AcctDerRule_14(
38855            p_application_id           => p_application_id
38856          , p_ae_header_id             => l_ae_header_id 
38857 , p_source_5 => p_source_5
38858 , p_source_7 => p_source_7
38859 , p_source_8 => p_source_8
38860          , x_transaction_coa_id       => l_adr_transaction_coa_id
38861          , x_accounting_coa_id        => l_adr_accounting_coa_id
38862          , x_value_type_code          => l_adr_value_type_code
38863          , p_side                     => 'NA'
38864    );
38865 
38866    xla_ae_lines_pkg.set_ccid(
38867     p_code_combination_id          => l_ccid
38868   , p_value_type_code              => l_adr_value_type_code
38869   , p_transaction_coa_id           => l_adr_transaction_coa_id
38870   , p_accounting_coa_id            => l_adr_accounting_coa_id
38871   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
38872   , p_adr_type_code                => 'S'
38873   , p_component_type               => l_component_type
38874   , p_component_code               => l_component_code
38875   , p_component_type_code          => l_component_type_code
38876   , p_component_appl_id            => l_component_appl_id
38877   , p_amb_context_code             => l_amb_context_code
38878   , p_side                         => 'NA'
38879   );
38880 
38881 
38882    --
38883    --
38884    END IF;
38885    --
38886    -- Bug 4922099
38887    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38888           (NVL(l_enc_upg_option, 'N') = 'O')
38889         ) AND
38890         (l_bflow_method_code = 'PRIOR_ENTRY')
38891       )
38892    THEN
38893       IF
38894       --
38895       1 = 2
38896       --
38897       THEN
38898       xla_accounting_err_pkg.build_message
38899                                     (p_appli_s_name            => 'XLA'
38900                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38901                                     ,p_token_1                 => 'LINE_NUMBER'
38902                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38903                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38904                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38905                                                                              l_component_type
38906                                                                             ,l_component_code
38907                                                                             ,l_component_type_code
38908                                                                             ,l_component_appl_id
38909                                                                             ,l_amb_context_code
38910                                                                             ,l_entity_code
38911                                                                             ,l_event_class_code
38912                                                                            )
38913                                     ,p_token_3                 => 'OWNER'
38914                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38915                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38916                                                                           ,p_lookup_code    => l_component_type_code
38917                                                                          )
38918                                     ,p_token_4                 => 'PRODUCT_NAME'
38919                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38920                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38921                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38922                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38923                                     ,p_ae_header_id            =>  NULL
38924                                        );
38925 
38926         IF (C_LEVEL_ERROR>= g_log_level) THEN
38927                  trace
38928                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38929                       ,p_level    => C_LEVEL_ERROR
38930                       ,p_module   => l_log_module);
38931         END IF;
38932       END IF;
38933    END IF;
38934    --
38935    --
38936    ------------------------------------------------------------------------------------------------
38937    -- 4219869 Business Flow
38938    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38939    -- Prior Entry.  Currently, the following code is always generated.
38940    ------------------------------------------------------------------------------------------------
38941    XLA_AE_LINES_PKG.ValidateCurrentLine;
38942 
38943    ------------------------------------------------------------------------------------
38944    -- 4219869 Business Flow
38945    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38946    ------------------------------------------------------------------------------------
38947    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38948 
38949    ----------------------------------------------------------------------------------
38950    -- 4219869 Business Flow
38951    -- Update journal entry status -- Need to generate this within IF <condition>
38952    ----------------------------------------------------------------------------------
38953    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38954          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38955          ,p_balance_type_code => l_balance_type_code
38959    -- 4262811 - Generate the Accrual Reversal lines
38956          );
38957 
38958    -------------------------------------------------------------------------------------------
38960    -------------------------------------------------------------------------------------------
38961    BEGIN
38962       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38963                               (g_array_event(p_event_id).array_value_num('header_index'));
38964       IF l_acc_rev_flag IS NULL THEN
38965          l_acc_rev_flag := 'N';
38966       END IF;
38967    EXCEPTION
38968       WHEN OTHERS THEN
38969          l_acc_rev_flag := 'N';
38970    END;
38971    --
38972    IF (l_acc_rev_flag = 'Y') THEN
38973 
38974        -- 4645092  ------------------------------------------------------------------------------
38975        -- To allow MPA report to determine if it should generate report process
38976        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38977        ------------------------------------------------------------------------------------------
38978 
38979        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38980        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38981 
38982        --
38983        -- Update the line information that should be overwritten
38984        --
38985        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38986                                          p_header_num   => 1);
38987        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38988 
38989        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38990 
38991        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38992           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38993        END IF;
38994 
38995       --
38996       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38997       --
38998       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38999           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39000       ELSE
39001           ---------------------------------------------------------------------------------------------------
39002           -- 4262811a Switch Sign
39003           ---------------------------------------------------------------------------------------------------
39004           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39005           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39006                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39007           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39008                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39009           -- 5132302
39010           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39011                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39012 
39013       END IF;
39014 
39015       -- 4955764
39016       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39017       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39018 
39019 
39020       XLA_AE_LINES_PKG.ValidateCurrentLine;
39021       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39022 
39023       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39024                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39025                ,p_balance_type_code => l_balance_type_code);
39026 
39027    END IF;
39028 
39029    -----------------------------------------------------------------------------------------
39030    -- 4262811 Multiperiod Accounting
39031    -----------------------------------------------------------------------------------------
39032      -- No MPA option is assigned.
39033 
39034 
39035 END IF;
39036 END IF;
39037 --
39038 
39039 --
39040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39041    trace
39042       (p_msg      => 'END of AcctLineType_88'
39043       ,p_level    => C_LEVEL_PROCEDURE
39044       ,p_module   => l_log_module);
39045 END IF;
39046 --
39047 EXCEPTION
39048   WHEN xla_exceptions_pkg.application_exception THEN
39049       RAISE;
39050   WHEN OTHERS THEN
39051        xla_exceptions_pkg.raise_message
39052            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_88');
39053 END AcctLineType_88;
39054 --
39055 
39056 ---------------------------------------
39057 --
39058 -- PRIVATE FUNCTION
39059 --         AcctLineType_89
39060 --
39061 ---------------------------------------
39062 PROCEDURE AcctLineType_89 (
39063   p_application_id        IN NUMBER
39064  ,p_event_id              IN NUMBER
39065  ,p_calculate_acctd_flag  IN VARCHAR2
39066  ,p_calculate_g_l_flag    IN VARCHAR2
39067  ,p_actual_flag           IN OUT VARCHAR2
39068  ,p_balance_type_code     OUT VARCHAR2
39069  ,p_gain_or_loss_ref      OUT VARCHAR2
39070  
39071 --Cost CCID
39072  , p_source_4            IN NUMBER
39073 --Allow Account Override Flag
39074  , p_source_5            IN VARCHAR2
39075 --Cost Clearing CCID
39076  , p_source_7            IN NUMBER
39077 --Adjustment Cost Clearing CCID
39078  , p_source_8            IN NUMBER
39079 --Reversing Line Flag
39080  , p_source_23            IN VARCHAR2
39081 --Actual Upgrade Credit Accounting Class
39082  , p_source_24            IN VARCHAR2
39083 --Entered Raw Cost
39084  , p_source_25            IN NUMBER
39088  , p_source_27            IN NUMBER
39085 --Entered Currency Code
39086  , p_source_26            IN VARCHAR2
39087 --Accounted Raw Cost
39089 --Exchange Rate Date
39090  , p_source_28            IN DATE
39091 --Exchange Rate
39092  , p_source_29            IN NUMBER
39093 --Exchange Rate Type
39094  , p_source_30            IN VARCHAR2
39095 --Actual Upgrade Debit Accounting Class
39096  , p_source_31            IN VARCHAR2
39097 --Use Actuals Upgrade Attributes Flag
39098  , p_source_32            IN VARCHAR2
39099 --Expenditure Item ID
39100  , p_source_33            IN NUMBER
39101 --Cost Distribution Line Number
39102  , p_source_34            IN NUMBER
39103 --Line Type
39104  , p_source_35            IN VARCHAR2
39105  , p_source_35_meaning    IN VARCHAR2
39106 --Reversed Line Number
39107  , p_source_36            IN NUMBER
39108 )
39109 IS
39110 
39111 l_component_type              VARCHAR2(80);
39112 l_component_code              VARCHAR2(30);
39113 l_component_type_code         VARCHAR2(1);
39114 l_component_appl_id           INTEGER;
39115 l_amb_context_code            VARCHAR2(30);
39116 l_entity_code                 VARCHAR2(30);
39117 l_event_class_code            VARCHAR2(30);
39118 l_ae_header_id                NUMBER;
39119 l_event_type_code             VARCHAR2(30);
39120 l_line_definition_code        VARCHAR2(30);
39121 l_line_definition_owner_code  VARCHAR2(1);
39122 --
39123 -- adr variables
39124 l_segment                     VARCHAR2(30);
39125 l_ccid                        NUMBER;
39126 l_adr_transaction_coa_id      NUMBER;
39127 l_adr_accounting_coa_id       NUMBER;
39128 l_adr_flexfield_segment_code  VARCHAR2(30);
39129 l_adr_flex_value_set_id       NUMBER;
39130 l_adr_value_type_code         VARCHAR2(30);
39131 l_adr_value_combination_id    NUMBER;
39132 l_adr_value_segment_code      VARCHAR2(30);
39133 
39134 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39135 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39136 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39137 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39138 
39139 -- 4262811 Variables ------------------------------------------------------------------------------------------
39140 l_entered_amt_idx             NUMBER;
39141 l_accted_amt_idx              NUMBER;
39142 l_acc_rev_flag                VARCHAR2(1);
39143 l_accrual_line_num            NUMBER;
39144 l_tmp_amt                     NUMBER;
39145 l_acc_rev_natural_side_code   VARCHAR2(1);
39146 
39147 l_num_entries                 NUMBER;
39148 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39149 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39150 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39151 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39152 l_recog_line_1                NUMBER;
39153 l_recog_line_2                NUMBER;
39154 
39155 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39156 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39157 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39158 
39159 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39160 
39161 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39162 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39163 
39164 ---------------------------------------------------------------------------------------------------------------
39165 
39166 
39167 --
39168 -- bulk performance
39169 --
39170 l_balance_type_code           VARCHAR2(1);
39171 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39172 l_log_module                  VARCHAR2(240);
39173 
39174 --
39175 -- Upgrade strategy
39176 --
39177 l_actual_upg_option           VARCHAR2(1);
39178 l_enc_upg_option           VARCHAR2(1);
39179 
39180 --
39181 BEGIN
39182 --
39183 IF g_log_enabled THEN
39184       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
39185 END IF;
39186 --
39187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39188 
39189       trace
39190          (p_msg      => 'BEGIN of AcctLineType_89'
39191          ,p_level    => C_LEVEL_PROCEDURE
39192          ,p_module   => l_log_module);
39193 
39194 END IF;
39195 --
39196 l_component_type             := 'AMB_JLT';
39197 l_component_code             := 'PA_RAW_COST_CLEARING';
39198 l_component_type_code        := 'S';
39199 l_component_appl_id          :=  275;
39200 l_amb_context_code           := 'DEFAULT';
39201 l_entity_code                := 'EXPENDITURES';
39202 l_event_class_code           := 'INVENTORY_COST';
39203 l_event_type_code            := 'INVENTORY_COST_ALL';
39204 l_line_definition_owner_code := 'S';
39205 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
39206 --
39207 l_balance_type_code          := 'A';
39208 l_segment                     := NULL;
39209 l_ccid                        := NULL;
39210 l_adr_transaction_coa_id      := NULL;
39211 l_adr_accounting_coa_id       := NULL;
39212 l_adr_flexfield_segment_code  := NULL;
39213 l_adr_flex_value_set_id       := NULL;
39214 l_adr_value_type_code         := NULL;
39215 l_adr_value_combination_id    := NULL;
39216 l_adr_value_segment_code      := NULL;
39217 
39218 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39219 l_bflow_class_code           := '';    -- 4219869 Business Flow
39220 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39221 l_budgetary_control_flag     := 'N';
39222 
39223 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39224 l_bflow_applied_to_amt       := NULL; -- 5132302
39228 l_accrual_line_num           := NULL;          -- 4262811
39225 l_entered_amt_idx            := NULL;          -- 4262811
39226 l_accted_amt_idx             := NULL;          -- 4262811
39227 l_acc_rev_flag               := NULL;          -- 4262811
39229 l_tmp_amt                    := NULL;          -- 4262811
39230 --
39231  
39232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39233     l_balance_type_code <> 'B' THEN
39234 
39235    --
39236    XLA_AE_LINES_PKG.SetNewLine;
39237 
39238    p_balance_type_code          := l_balance_type_code;
39239    -- set the flag so later we will know whether the gain loss line needs to be created
39240    
39241    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39242      p_actual_flag :='A';
39243    END IF;
39244 
39245    --
39246    -- bulk performance
39247    --
39248    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39249                                       p_header_num   => 0); -- 4262811
39250    --
39251    -- set accounting line options
39252    --
39253    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39254            p_natural_side_code          => 'C'
39255          , p_gain_or_loss_flag          => 'N'
39256          , p_gl_transfer_mode_code      => 'S'
39257          , p_acct_entry_type_code       => 'A'
39258          , p_switch_side_flag           => 'Y'
39259          , p_merge_duplicate_code       => 'N'
39260          );
39261    --
39262    l_acc_rev_natural_side_code := 'D';  -- 4262811
39263    -- 
39264    --
39265    -- set accounting line type info
39266    --
39267    xla_ae_lines_pkg.SetAcctLineType
39268       (p_component_type             => l_component_type
39269       ,p_event_type_code            => l_event_type_code
39270       ,p_line_definition_owner_code => l_line_definition_owner_code
39271       ,p_line_definition_code       => l_line_definition_code
39272       ,p_accounting_line_code       => l_component_code
39273       ,p_accounting_line_type_code  => l_component_type_code
39274       ,p_accounting_line_appl_id    => l_component_appl_id
39275       ,p_amb_context_code           => l_amb_context_code
39276       ,p_entity_code                => l_entity_code
39277       ,p_event_class_code           => l_event_class_code);
39278    --
39279    -- set accounting class
39280    --
39281    xla_ae_lines_pkg.SetAcctClass(
39282            p_accounting_class_code  => 'COST_CLEARING'
39283          , p_ae_header_id           => l_ae_header_id
39284          );
39285 
39286    --
39287    -- set rounding class
39288    --
39289    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39290                       'COST_CLEARING';
39291 
39292    --
39293    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39294    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39295    --
39296    -- bulk performance
39297    --
39298    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39299 
39300    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39301       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39302 
39303    -- 4955764
39304    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39305       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39306 
39307    -- 4458381 Public Sector Enh
39308    
39309    --
39310    -- set accounting attributes for the line type
39311    --
39312    l_entered_amt_idx := 22;
39313    l_accted_amt_idx  := 27;
39314    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39315    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
39316    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
39317    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
39318    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
39319    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
39320    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
39321    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
39322    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
39323    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
39324    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
39325    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
39326    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
39327    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
39328    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
39329    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
39330    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
39331    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
39332    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
39333    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
39334    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
39335    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
39336    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
39337    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
39338    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
39339    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
39340    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
39341    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
39342    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
39343    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
39344    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
39348    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
39345    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
39346    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
39347    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
39349    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
39350    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
39351    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
39352    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
39353    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
39354    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
39355    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
39356    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
39357    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
39358    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
39359    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
39360    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
39361    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
39362    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
39363    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
39364    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
39365    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
39366    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
39367    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
39368    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
39369    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
39370    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
39371    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
39372    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
39373    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
39374    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
39375 
39376    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39377    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39378 
39379    ---------------------------------------------------------------------------------------------------------------
39380    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39381    ---------------------------------------------------------------------------------------------------------------
39382    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39383 
39384    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39385    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39386 
39387    IF xla_accounting_cache_pkg.GetValueChar
39388          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39389          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39390    AND l_bflow_method_code = 'PRIOR_ENTRY'
39391 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39392    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39393          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39394        )
39395    THEN
39396          xla_ae_lines_pkg.BflowUpgEntry
39397            (p_business_method_code    => l_bflow_method_code
39398            ,p_business_class_code     => l_bflow_class_code
39399            ,p_balance_type            => l_balance_type_code);
39400    ELSE
39401       NULL;
39402 -- No business flow processing for business flow method of NONE.
39403    END IF;
39404 
39405    --
39406    -- call analytical criteria
39407    --
39408    
39409    --
39410    -- call description
39411    --
39412    -- No description or it is inherited.
39413    --
39414    -- call ADRs
39415    -- Bug 4922099
39416    --
39417    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39418         (NVL(l_actual_upg_option, 'N') = 'O') OR
39419         (NVL(l_enc_upg_option, 'N') = 'O')
39420       )
39421    THEN
39422    NULL;
39423    --
39424    --
39425    
39426   l_ccid := AcctDerRule_14(
39427            p_application_id           => p_application_id
39428          , p_ae_header_id             => l_ae_header_id 
39429 , p_source_5 => p_source_5
39430 , p_source_7 => p_source_7
39431 , p_source_8 => p_source_8
39432          , x_transaction_coa_id       => l_adr_transaction_coa_id
39433          , x_accounting_coa_id        => l_adr_accounting_coa_id
39434          , x_value_type_code          => l_adr_value_type_code
39435          , p_side                     => 'NA'
39436    );
39437 
39438    xla_ae_lines_pkg.set_ccid(
39439     p_code_combination_id          => l_ccid
39440   , p_value_type_code              => l_adr_value_type_code
39441   , p_transaction_coa_id           => l_adr_transaction_coa_id
39442   , p_accounting_coa_id            => l_adr_accounting_coa_id
39443   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
39444   , p_adr_type_code                => 'S'
39445   , p_component_type               => l_component_type
39446   , p_component_code               => l_component_code
39447   , p_component_type_code          => l_component_type_code
39448   , p_component_appl_id            => l_component_appl_id
39449   , p_amb_context_code             => l_amb_context_code
39450   , p_side                         => 'NA'
39451   );
39452 
39453 
39454    --
39455    --
39456    END IF;
39457    --
39458    -- Bug 4922099
39459    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39460           (NVL(l_enc_upg_option, 'N') = 'O')
39461         ) AND
39462         (l_bflow_method_code = 'PRIOR_ENTRY')
39463       )
39464    THEN
39468       --
39465       IF
39466       --
39467       1 = 2
39469       THEN
39470       xla_accounting_err_pkg.build_message
39471                                     (p_appli_s_name            => 'XLA'
39472                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39473                                     ,p_token_1                 => 'LINE_NUMBER'
39474                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39475                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39476                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39477                                                                              l_component_type
39478                                                                             ,l_component_code
39479                                                                             ,l_component_type_code
39480                                                                             ,l_component_appl_id
39481                                                                             ,l_amb_context_code
39482                                                                             ,l_entity_code
39483                                                                             ,l_event_class_code
39484                                                                            )
39485                                     ,p_token_3                 => 'OWNER'
39486                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39487                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39488                                                                           ,p_lookup_code    => l_component_type_code
39489                                                                          )
39490                                     ,p_token_4                 => 'PRODUCT_NAME'
39491                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39492                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39493                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39494                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39495                                     ,p_ae_header_id            =>  NULL
39496                                        );
39497 
39498         IF (C_LEVEL_ERROR>= g_log_level) THEN
39499                  trace
39500                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39501                       ,p_level    => C_LEVEL_ERROR
39502                       ,p_module   => l_log_module);
39503         END IF;
39504       END IF;
39505    END IF;
39506    --
39507    --
39508    ------------------------------------------------------------------------------------------------
39509    -- 4219869 Business Flow
39510    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39511    -- Prior Entry.  Currently, the following code is always generated.
39512    ------------------------------------------------------------------------------------------------
39513    XLA_AE_LINES_PKG.ValidateCurrentLine;
39514 
39515    ------------------------------------------------------------------------------------
39516    -- 4219869 Business Flow
39517    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39518    ------------------------------------------------------------------------------------
39519    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39520 
39521    ----------------------------------------------------------------------------------
39522    -- 4219869 Business Flow
39523    -- Update journal entry status -- Need to generate this within IF <condition>
39524    ----------------------------------------------------------------------------------
39525    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39526          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39527          ,p_balance_type_code => l_balance_type_code
39528          );
39529 
39530    -------------------------------------------------------------------------------------------
39531    -- 4262811 - Generate the Accrual Reversal lines
39532    -------------------------------------------------------------------------------------------
39533    BEGIN
39534       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39535                               (g_array_event(p_event_id).array_value_num('header_index'));
39536       IF l_acc_rev_flag IS NULL THEN
39537          l_acc_rev_flag := 'N';
39538       END IF;
39539    EXCEPTION
39540       WHEN OTHERS THEN
39541          l_acc_rev_flag := 'N';
39542    END;
39543    --
39544    IF (l_acc_rev_flag = 'Y') THEN
39545 
39546        -- 4645092  ------------------------------------------------------------------------------
39547        -- To allow MPA report to determine if it should generate report process
39548        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39549        ------------------------------------------------------------------------------------------
39550 
39551        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39552        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39553 
39554        --
39555        -- Update the line information that should be overwritten
39556        --
39557        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39558                                          p_header_num   => 1);
39559        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39560 
39561        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39562 
39563        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39567       --
39564           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39565        END IF;
39566 
39568       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39569       --
39570       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39571           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39572       ELSE
39573           ---------------------------------------------------------------------------------------------------
39574           -- 4262811a Switch Sign
39575           ---------------------------------------------------------------------------------------------------
39576           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39577           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39578                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39579           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39580                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39581           -- 5132302
39582           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39583                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39584 
39585       END IF;
39586 
39587       -- 4955764
39588       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39589       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39590 
39591 
39592       XLA_AE_LINES_PKG.ValidateCurrentLine;
39593       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39594 
39595       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39596                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39597                ,p_balance_type_code => l_balance_type_code);
39598 
39599    END IF;
39600 
39601    -----------------------------------------------------------------------------------------
39602    -- 4262811 Multiperiod Accounting
39603    -----------------------------------------------------------------------------------------
39604      -- No MPA option is assigned.
39605 
39606 
39607 END IF;
39608 --
39609 
39610 --
39611 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39612    trace
39613       (p_msg      => 'END of AcctLineType_89'
39614       ,p_level    => C_LEVEL_PROCEDURE
39615       ,p_module   => l_log_module);
39616 END IF;
39617 --
39618 EXCEPTION
39619   WHEN xla_exceptions_pkg.application_exception THEN
39620       RAISE;
39621   WHEN OTHERS THEN
39622        xla_exceptions_pkg.raise_message
39623            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_89');
39624 END AcctLineType_89;
39625 --
39626 
39627 ---------------------------------------
39628 --
39629 -- PRIVATE FUNCTION
39630 --         AcctLineType_90
39631 --
39632 ---------------------------------------
39633 PROCEDURE AcctLineType_90 (
39634   p_application_id        IN NUMBER
39635  ,p_event_id              IN NUMBER
39636  ,p_calculate_acctd_flag  IN VARCHAR2
39637  ,p_calculate_g_l_flag    IN VARCHAR2
39638  ,p_actual_flag           IN OUT VARCHAR2
39639  ,p_balance_type_code     OUT VARCHAR2
39640  ,p_gain_or_loss_ref      OUT VARCHAR2
39641  
39642 --Cost CCID
39643  , p_source_4            IN NUMBER
39644 --Allow Account Override Flag
39645  , p_source_5            IN VARCHAR2
39646 --Cost Clearing CCID
39647  , p_source_7            IN NUMBER
39648 --Adjustment Cost Clearing CCID
39649  , p_source_8            IN NUMBER
39650 --Reversing Line Flag
39651  , p_source_23            IN VARCHAR2
39652 --Actual Upgrade Credit Accounting Class
39653  , p_source_24            IN VARCHAR2
39654 --Entered Raw Cost
39655  , p_source_25            IN NUMBER
39656 --Entered Currency Code
39657  , p_source_26            IN VARCHAR2
39658 --Accounted Raw Cost
39659  , p_source_27            IN NUMBER
39660 --Exchange Rate Date
39661  , p_source_28            IN DATE
39662 --Exchange Rate
39663  , p_source_29            IN NUMBER
39664 --Exchange Rate Type
39665  , p_source_30            IN VARCHAR2
39666 --Actual Upgrade Debit Accounting Class
39667  , p_source_31            IN VARCHAR2
39668 --Use Actuals Upgrade Attributes Flag
39669  , p_source_32            IN VARCHAR2
39670 --Expenditure Item ID
39671  , p_source_33            IN NUMBER
39672 --Cost Distribution Line Number
39673  , p_source_34            IN NUMBER
39674 --Line Type
39675  , p_source_35            IN VARCHAR2
39676  , p_source_35_meaning    IN VARCHAR2
39677 --Reversed Line Number
39678  , p_source_36            IN NUMBER
39679 )
39680 IS
39681 
39682 l_component_type              VARCHAR2(80);
39683 l_component_code              VARCHAR2(30);
39684 l_component_type_code         VARCHAR2(1);
39685 l_component_appl_id           INTEGER;
39686 l_amb_context_code            VARCHAR2(30);
39687 l_entity_code                 VARCHAR2(30);
39688 l_event_class_code            VARCHAR2(30);
39689 l_ae_header_id                NUMBER;
39690 l_event_type_code             VARCHAR2(30);
39691 l_line_definition_code        VARCHAR2(30);
39692 l_line_definition_owner_code  VARCHAR2(1);
39693 --
39694 -- adr variables
39695 l_segment                     VARCHAR2(30);
39696 l_ccid                        NUMBER;
39697 l_adr_transaction_coa_id      NUMBER;
39698 l_adr_accounting_coa_id       NUMBER;
39699 l_adr_flexfield_segment_code  VARCHAR2(30);
39700 l_adr_flex_value_set_id       NUMBER;
39704 
39701 l_adr_value_type_code         VARCHAR2(30);
39702 l_adr_value_combination_id    NUMBER;
39703 l_adr_value_segment_code      VARCHAR2(30);
39705 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39706 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39707 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39708 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39709 
39710 -- 4262811 Variables ------------------------------------------------------------------------------------------
39711 l_entered_amt_idx             NUMBER;
39712 l_accted_amt_idx              NUMBER;
39713 l_acc_rev_flag                VARCHAR2(1);
39714 l_accrual_line_num            NUMBER;
39715 l_tmp_amt                     NUMBER;
39716 l_acc_rev_natural_side_code   VARCHAR2(1);
39717 
39718 l_num_entries                 NUMBER;
39719 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39720 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39721 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39722 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39723 l_recog_line_1                NUMBER;
39724 l_recog_line_2                NUMBER;
39725 
39726 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39727 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39728 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39729 
39730 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39731 
39732 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39733 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39734 
39735 ---------------------------------------------------------------------------------------------------------------
39736 
39737 
39738 --
39739 -- bulk performance
39740 --
39741 l_balance_type_code           VARCHAR2(1);
39742 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39743 l_log_module                  VARCHAR2(240);
39744 
39745 --
39746 -- Upgrade strategy
39747 --
39748 l_actual_upg_option           VARCHAR2(1);
39749 l_enc_upg_option           VARCHAR2(1);
39750 
39751 --
39752 BEGIN
39753 --
39754 IF g_log_enabled THEN
39755       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
39756 END IF;
39757 --
39758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39759 
39760       trace
39761          (p_msg      => 'BEGIN of AcctLineType_90'
39762          ,p_level    => C_LEVEL_PROCEDURE
39763          ,p_module   => l_log_module);
39764 
39765 END IF;
39766 --
39767 l_component_type             := 'AMB_JLT';
39768 l_component_code             := 'PA_RAW_COST_CLEARING';
39769 l_component_type_code        := 'S';
39770 l_component_appl_id          :=  275;
39771 l_amb_context_code           := 'DEFAULT';
39772 l_entity_code                := 'EXPENDITURES';
39773 l_event_class_code           := 'MISC_COST';
39774 l_event_type_code            := 'MISC_COST_ALL';
39775 l_line_definition_owner_code := 'S';
39776 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
39777 --
39778 l_balance_type_code          := 'A';
39779 l_segment                     := NULL;
39780 l_ccid                        := NULL;
39781 l_adr_transaction_coa_id      := NULL;
39782 l_adr_accounting_coa_id       := NULL;
39783 l_adr_flexfield_segment_code  := NULL;
39784 l_adr_flex_value_set_id       := NULL;
39785 l_adr_value_type_code         := NULL;
39786 l_adr_value_combination_id    := NULL;
39787 l_adr_value_segment_code      := NULL;
39788 
39789 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39790 l_bflow_class_code           := '';    -- 4219869 Business Flow
39791 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39792 l_budgetary_control_flag     := 'N';
39793 
39794 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39795 l_bflow_applied_to_amt       := NULL; -- 5132302
39796 l_entered_amt_idx            := NULL;          -- 4262811
39797 l_accted_amt_idx             := NULL;          -- 4262811
39798 l_acc_rev_flag               := NULL;          -- 4262811
39799 l_accrual_line_num           := NULL;          -- 4262811
39800 l_tmp_amt                    := NULL;          -- 4262811
39801 --
39802  
39803 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39804     l_balance_type_code <> 'B' THEN
39805 
39806    --
39807    XLA_AE_LINES_PKG.SetNewLine;
39808 
39809    p_balance_type_code          := l_balance_type_code;
39810    -- set the flag so later we will know whether the gain loss line needs to be created
39811    
39812    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39813      p_actual_flag :='A';
39814    END IF;
39815 
39816    --
39817    -- bulk performance
39818    --
39819    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39820                                       p_header_num   => 0); -- 4262811
39821    --
39822    -- set accounting line options
39823    --
39824    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39825            p_natural_side_code          => 'C'
39826          , p_gain_or_loss_flag          => 'N'
39827          , p_gl_transfer_mode_code      => 'S'
39828          , p_acct_entry_type_code       => 'A'
39829          , p_switch_side_flag           => 'Y'
39830          , p_merge_duplicate_code       => 'N'
39831          );
39832    --
39833    l_acc_rev_natural_side_code := 'D';  -- 4262811
39834    -- 
39835    --
39836    -- set accounting line type info
39837    --
39838    xla_ae_lines_pkg.SetAcctLineType
39839       (p_component_type             => l_component_type
39843       ,p_accounting_line_code       => l_component_code
39840       ,p_event_type_code            => l_event_type_code
39841       ,p_line_definition_owner_code => l_line_definition_owner_code
39842       ,p_line_definition_code       => l_line_definition_code
39844       ,p_accounting_line_type_code  => l_component_type_code
39845       ,p_accounting_line_appl_id    => l_component_appl_id
39846       ,p_amb_context_code           => l_amb_context_code
39847       ,p_entity_code                => l_entity_code
39848       ,p_event_class_code           => l_event_class_code);
39849    --
39850    -- set accounting class
39851    --
39852    xla_ae_lines_pkg.SetAcctClass(
39853            p_accounting_class_code  => 'COST_CLEARING'
39854          , p_ae_header_id           => l_ae_header_id
39855          );
39856 
39857    --
39858    -- set rounding class
39859    --
39860    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39861                       'COST_CLEARING';
39862 
39863    --
39864    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39865    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39866    --
39867    -- bulk performance
39868    --
39869    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39870 
39871    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39872       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39873 
39874    -- 4955764
39875    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39876       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39877 
39878    -- 4458381 Public Sector Enh
39879    
39880    --
39881    -- set accounting attributes for the line type
39882    --
39883    l_entered_amt_idx := 22;
39884    l_accted_amt_idx  := 27;
39885    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39886    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
39887    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
39888    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
39889    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
39890    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
39891    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
39892    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
39893    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
39894    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
39895    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
39896    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
39897    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
39898    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
39899    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
39900    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
39901    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
39902    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
39903    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
39904    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
39905    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
39906    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
39907    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
39908    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
39909    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
39910    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
39911    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
39912    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
39913    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
39914    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
39915    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
39916    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
39917    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
39918    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
39919    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
39920    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
39921    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
39922    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
39923    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
39924    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
39925    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
39926    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
39927    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
39928    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
39929    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
39930    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
39931    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
39932    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
39933    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
39934    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
39935    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
39936    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
39937    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
39938    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
39939    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
39940    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
39941    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
39942    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
39946 
39943    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
39944    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
39945    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
39947    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39948    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39949 
39950    ---------------------------------------------------------------------------------------------------------------
39951    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39952    ---------------------------------------------------------------------------------------------------------------
39953    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39954 
39955    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39956    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39957 
39958    IF xla_accounting_cache_pkg.GetValueChar
39959          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39960          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39961    AND l_bflow_method_code = 'PRIOR_ENTRY'
39962 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39963    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39964          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39965        )
39966    THEN
39967          xla_ae_lines_pkg.BflowUpgEntry
39968            (p_business_method_code    => l_bflow_method_code
39969            ,p_business_class_code     => l_bflow_class_code
39970            ,p_balance_type            => l_balance_type_code);
39971    ELSE
39972       NULL;
39973 -- No business flow processing for business flow method of NONE.
39974    END IF;
39975 
39976    --
39977    -- call analytical criteria
39978    --
39979    
39980    --
39981    -- call description
39982    --
39983    -- No description or it is inherited.
39984    --
39985    -- call ADRs
39986    -- Bug 4922099
39987    --
39988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39989         (NVL(l_actual_upg_option, 'N') = 'O') OR
39990         (NVL(l_enc_upg_option, 'N') = 'O')
39991       )
39992    THEN
39993    NULL;
39994    --
39995    --
39996    
39997   l_ccid := AcctDerRule_14(
39998            p_application_id           => p_application_id
39999          , p_ae_header_id             => l_ae_header_id 
40000 , p_source_5 => p_source_5
40001 , p_source_7 => p_source_7
40002 , p_source_8 => p_source_8
40003          , x_transaction_coa_id       => l_adr_transaction_coa_id
40004          , x_accounting_coa_id        => l_adr_accounting_coa_id
40005          , x_value_type_code          => l_adr_value_type_code
40006          , p_side                     => 'NA'
40007    );
40008 
40009    xla_ae_lines_pkg.set_ccid(
40010     p_code_combination_id          => l_ccid
40011   , p_value_type_code              => l_adr_value_type_code
40012   , p_transaction_coa_id           => l_adr_transaction_coa_id
40013   , p_accounting_coa_id            => l_adr_accounting_coa_id
40014   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
40015   , p_adr_type_code                => 'S'
40016   , p_component_type               => l_component_type
40017   , p_component_code               => l_component_code
40018   , p_component_type_code          => l_component_type_code
40019   , p_component_appl_id            => l_component_appl_id
40020   , p_amb_context_code             => l_amb_context_code
40021   , p_side                         => 'NA'
40022   );
40023 
40024 
40025    --
40026    --
40027    END IF;
40028    --
40029    -- Bug 4922099
40030    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40031           (NVL(l_enc_upg_option, 'N') = 'O')
40032         ) AND
40033         (l_bflow_method_code = 'PRIOR_ENTRY')
40034       )
40035    THEN
40036       IF
40037       --
40038       1 = 2
40039       --
40040       THEN
40041       xla_accounting_err_pkg.build_message
40042                                     (p_appli_s_name            => 'XLA'
40043                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40044                                     ,p_token_1                 => 'LINE_NUMBER'
40045                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40046                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40047                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40048                                                                              l_component_type
40049                                                                             ,l_component_code
40050                                                                             ,l_component_type_code
40051                                                                             ,l_component_appl_id
40052                                                                             ,l_amb_context_code
40053                                                                             ,l_entity_code
40054                                                                             ,l_event_class_code
40055                                                                            )
40056                                     ,p_token_3                 => 'OWNER'
40057                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40058                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40059                                                                           ,p_lookup_code    => l_component_type_code
40063                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40060                                                                          )
40061                                     ,p_token_4                 => 'PRODUCT_NAME'
40062                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40064                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40065                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40066                                     ,p_ae_header_id            =>  NULL
40067                                        );
40068 
40069         IF (C_LEVEL_ERROR>= g_log_level) THEN
40070                  trace
40071                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40072                       ,p_level    => C_LEVEL_ERROR
40073                       ,p_module   => l_log_module);
40074         END IF;
40075       END IF;
40076    END IF;
40077    --
40078    --
40079    ------------------------------------------------------------------------------------------------
40080    -- 4219869 Business Flow
40081    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40082    -- Prior Entry.  Currently, the following code is always generated.
40083    ------------------------------------------------------------------------------------------------
40084    XLA_AE_LINES_PKG.ValidateCurrentLine;
40085 
40086    ------------------------------------------------------------------------------------
40087    -- 4219869 Business Flow
40088    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40089    ------------------------------------------------------------------------------------
40090    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40091 
40092    ----------------------------------------------------------------------------------
40093    -- 4219869 Business Flow
40094    -- Update journal entry status -- Need to generate this within IF <condition>
40095    ----------------------------------------------------------------------------------
40096    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40097          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40098          ,p_balance_type_code => l_balance_type_code
40099          );
40100 
40101    -------------------------------------------------------------------------------------------
40102    -- 4262811 - Generate the Accrual Reversal lines
40103    -------------------------------------------------------------------------------------------
40104    BEGIN
40105       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40106                               (g_array_event(p_event_id).array_value_num('header_index'));
40107       IF l_acc_rev_flag IS NULL THEN
40108          l_acc_rev_flag := 'N';
40109       END IF;
40110    EXCEPTION
40111       WHEN OTHERS THEN
40112          l_acc_rev_flag := 'N';
40113    END;
40114    --
40115    IF (l_acc_rev_flag = 'Y') THEN
40116 
40117        -- 4645092  ------------------------------------------------------------------------------
40118        -- To allow MPA report to determine if it should generate report process
40119        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40120        ------------------------------------------------------------------------------------------
40121 
40122        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40123        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40124 
40125        --
40126        -- Update the line information that should be overwritten
40127        --
40128        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40129                                          p_header_num   => 1);
40130        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40131 
40132        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40133 
40134        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40135           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40136        END IF;
40137 
40138       --
40139       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40140       --
40141       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40142           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40143       ELSE
40144           ---------------------------------------------------------------------------------------------------
40145           -- 4262811a Switch Sign
40146           ---------------------------------------------------------------------------------------------------
40147           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40148           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40149                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40150           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40151                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40152           -- 5132302
40153           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40154                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40155 
40156       END IF;
40157 
40158       -- 4955764
40159       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40160       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40161 
40162 
40166       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40163       XLA_AE_LINES_PKG.ValidateCurrentLine;
40164       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40165 
40167                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40168                ,p_balance_type_code => l_balance_type_code);
40169 
40170    END IF;
40171 
40172    -----------------------------------------------------------------------------------------
40173    -- 4262811 Multiperiod Accounting
40174    -----------------------------------------------------------------------------------------
40175      -- No MPA option is assigned.
40176 
40177 
40178 END IF;
40179 --
40180 
40181 --
40182 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40183    trace
40184       (p_msg      => 'END of AcctLineType_90'
40185       ,p_level    => C_LEVEL_PROCEDURE
40186       ,p_module   => l_log_module);
40187 END IF;
40188 --
40189 EXCEPTION
40190   WHEN xla_exceptions_pkg.application_exception THEN
40191       RAISE;
40192   WHEN OTHERS THEN
40193        xla_exceptions_pkg.raise_message
40194            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_90');
40195 END AcctLineType_90;
40196 --
40197 
40198 ---------------------------------------
40199 --
40200 -- PRIVATE FUNCTION
40201 --         AcctLineType_91
40202 --
40203 ---------------------------------------
40204 PROCEDURE AcctLineType_91 (
40205   p_application_id        IN NUMBER
40206  ,p_event_id              IN NUMBER
40207  ,p_calculate_acctd_flag  IN VARCHAR2
40208  ,p_calculate_g_l_flag    IN VARCHAR2
40209  ,p_actual_flag           IN OUT VARCHAR2
40210  ,p_balance_type_code     OUT VARCHAR2
40211  ,p_gain_or_loss_ref      OUT VARCHAR2
40212  
40213 --Cost CCID
40214  , p_source_4            IN NUMBER
40215 --Allow Account Override Flag
40216  , p_source_5            IN VARCHAR2
40217 --Cost Clearing CCID
40218  , p_source_7            IN NUMBER
40219 --Adjustment Cost Clearing CCID
40220  , p_source_8            IN NUMBER
40221 --Reversing Line Flag
40222  , p_source_23            IN VARCHAR2
40223 --Actual Upgrade Credit Accounting Class
40224  , p_source_24            IN VARCHAR2
40225 --Entered Raw Cost
40226  , p_source_25            IN NUMBER
40227 --Entered Currency Code
40228  , p_source_26            IN VARCHAR2
40229 --Accounted Raw Cost
40230  , p_source_27            IN NUMBER
40231 --Exchange Rate Date
40232  , p_source_28            IN DATE
40233 --Exchange Rate
40234  , p_source_29            IN NUMBER
40235 --Exchange Rate Type
40236  , p_source_30            IN VARCHAR2
40237 --Actual Upgrade Debit Accounting Class
40238  , p_source_31            IN VARCHAR2
40239 --Use Actuals Upgrade Attributes Flag
40240  , p_source_32            IN VARCHAR2
40241 --Expenditure Item ID
40242  , p_source_33            IN NUMBER
40243 --Cost Distribution Line Number
40244  , p_source_34            IN NUMBER
40245 --Line Type
40246  , p_source_35            IN VARCHAR2
40247  , p_source_35_meaning    IN VARCHAR2
40248 --Reversed Line Number
40249  , p_source_36            IN NUMBER
40250 )
40251 IS
40252 
40253 l_component_type              VARCHAR2(80);
40254 l_component_code              VARCHAR2(30);
40255 l_component_type_code         VARCHAR2(1);
40256 l_component_appl_id           INTEGER;
40257 l_amb_context_code            VARCHAR2(30);
40258 l_entity_code                 VARCHAR2(30);
40259 l_event_class_code            VARCHAR2(30);
40260 l_ae_header_id                NUMBER;
40261 l_event_type_code             VARCHAR2(30);
40262 l_line_definition_code        VARCHAR2(30);
40263 l_line_definition_owner_code  VARCHAR2(1);
40264 --
40265 -- adr variables
40266 l_segment                     VARCHAR2(30);
40267 l_ccid                        NUMBER;
40268 l_adr_transaction_coa_id      NUMBER;
40269 l_adr_accounting_coa_id       NUMBER;
40270 l_adr_flexfield_segment_code  VARCHAR2(30);
40271 l_adr_flex_value_set_id       NUMBER;
40272 l_adr_value_type_code         VARCHAR2(30);
40273 l_adr_value_combination_id    NUMBER;
40274 l_adr_value_segment_code      VARCHAR2(30);
40275 
40276 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40277 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40278 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40279 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40280 
40281 -- 4262811 Variables ------------------------------------------------------------------------------------------
40282 l_entered_amt_idx             NUMBER;
40283 l_accted_amt_idx              NUMBER;
40284 l_acc_rev_flag                VARCHAR2(1);
40285 l_accrual_line_num            NUMBER;
40286 l_tmp_amt                     NUMBER;
40287 l_acc_rev_natural_side_code   VARCHAR2(1);
40288 
40289 l_num_entries                 NUMBER;
40290 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40291 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40292 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40293 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40294 l_recog_line_1                NUMBER;
40295 l_recog_line_2                NUMBER;
40296 
40297 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40298 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40299 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40300 
40301 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40302 
40303 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40304 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40305 
40309 --
40306 ---------------------------------------------------------------------------------------------------------------
40307 
40308 
40310 -- bulk performance
40311 --
40312 l_balance_type_code           VARCHAR2(1);
40313 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40314 l_log_module                  VARCHAR2(240);
40315 
40316 --
40317 -- Upgrade strategy
40318 --
40319 l_actual_upg_option           VARCHAR2(1);
40320 l_enc_upg_option           VARCHAR2(1);
40321 
40322 --
40323 BEGIN
40324 --
40325 IF g_log_enabled THEN
40326       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
40327 END IF;
40328 --
40329 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40330 
40331       trace
40332          (p_msg      => 'BEGIN of AcctLineType_91'
40333          ,p_level    => C_LEVEL_PROCEDURE
40334          ,p_module   => l_log_module);
40335 
40336 END IF;
40337 --
40338 l_component_type             := 'AMB_JLT';
40339 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
40340 l_component_type_code        := 'S';
40341 l_component_appl_id          :=  275;
40342 l_amb_context_code           := 'DEFAULT';
40343 l_entity_code                := 'EXPENDITURES';
40344 l_event_class_code           := 'INVENTORY_COST_ADJ';
40345 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
40346 l_line_definition_owner_code := 'S';
40347 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
40348 --
40349 l_balance_type_code          := 'A';
40350 l_segment                     := NULL;
40351 l_ccid                        := NULL;
40352 l_adr_transaction_coa_id      := NULL;
40353 l_adr_accounting_coa_id       := NULL;
40354 l_adr_flexfield_segment_code  := NULL;
40355 l_adr_flex_value_set_id       := NULL;
40356 l_adr_value_type_code         := NULL;
40357 l_adr_value_combination_id    := NULL;
40358 l_adr_value_segment_code      := NULL;
40359 
40360 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40361 l_bflow_class_code           := '';    -- 4219869 Business Flow
40362 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40363 l_budgetary_control_flag     := 'N';
40364 
40365 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40366 l_bflow_applied_to_amt       := NULL; -- 5132302
40367 l_entered_amt_idx            := NULL;          -- 4262811
40368 l_accted_amt_idx             := NULL;          -- 4262811
40369 l_acc_rev_flag               := NULL;          -- 4262811
40370 l_accrual_line_num           := NULL;          -- 4262811
40371 l_tmp_amt                    := NULL;          -- 4262811
40372 --
40373  
40374 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40375     l_balance_type_code <> 'B' THEN
40376 
40377    --
40378    XLA_AE_LINES_PKG.SetNewLine;
40379 
40380    p_balance_type_code          := l_balance_type_code;
40381    -- set the flag so later we will know whether the gain loss line needs to be created
40382    
40383    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40384      p_actual_flag :='A';
40385    END IF;
40386 
40387    --
40388    -- bulk performance
40389    --
40390    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40391                                       p_header_num   => 0); -- 4262811
40392    --
40393    -- set accounting line options
40394    --
40395    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40396            p_natural_side_code          => 'C'
40397          , p_gain_or_loss_flag          => 'N'
40398          , p_gl_transfer_mode_code      => 'S'
40399          , p_acct_entry_type_code       => 'A'
40400          , p_switch_side_flag           => 'Y'
40401          , p_merge_duplicate_code       => 'N'
40402          );
40403    --
40404    l_acc_rev_natural_side_code := 'D';  -- 4262811
40405    -- 
40406    --
40407    -- set accounting line type info
40408    --
40409    xla_ae_lines_pkg.SetAcctLineType
40410       (p_component_type             => l_component_type
40411       ,p_event_type_code            => l_event_type_code
40412       ,p_line_definition_owner_code => l_line_definition_owner_code
40413       ,p_line_definition_code       => l_line_definition_code
40414       ,p_accounting_line_code       => l_component_code
40415       ,p_accounting_line_type_code  => l_component_type_code
40416       ,p_accounting_line_appl_id    => l_component_appl_id
40417       ,p_amb_context_code           => l_amb_context_code
40418       ,p_entity_code                => l_entity_code
40419       ,p_event_class_code           => l_event_class_code);
40420    --
40421    -- set accounting class
40422    --
40423    xla_ae_lines_pkg.SetAcctClass(
40424            p_accounting_class_code  => 'COST_CLEARING'
40425          , p_ae_header_id           => l_ae_header_id
40426          );
40427 
40428    --
40429    -- set rounding class
40430    --
40431    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40432                       'COST_CLEARING';
40433 
40434    --
40435    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40436    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40437    --
40438    -- bulk performance
40439    --
40440    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40441 
40442    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40443       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40444 
40445    -- 4955764
40446    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40450    
40447       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40448 
40449    -- 4458381 Public Sector Enh
40451    --
40452    -- set accounting attributes for the line type
40453    --
40454    l_entered_amt_idx := 22;
40455    l_accted_amt_idx  := 27;
40456    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40457    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
40458    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
40459    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
40460    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
40461    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
40462    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
40463    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
40464    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
40465    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
40466    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
40467    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
40468    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
40469    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
40470    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
40471    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
40472    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
40473    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
40474    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
40475    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
40476    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
40477    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
40478    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
40479    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
40480    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
40481    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
40482    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
40483    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
40484    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
40485    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
40486    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
40487    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
40488    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
40489    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
40490    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
40491    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
40492    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
40493    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
40494    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
40495    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
40496    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
40497    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
40498    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
40499    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
40500    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
40501    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
40502    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
40503    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
40504    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
40505    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
40506    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
40507    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
40508    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
40509    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
40510    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
40511    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
40512    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
40513    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
40514    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
40515    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
40516    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
40517 
40518    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40519    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40520 
40521    ---------------------------------------------------------------------------------------------------------------
40522    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40523    ---------------------------------------------------------------------------------------------------------------
40524    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40525 
40526    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40527    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40528 
40529    IF xla_accounting_cache_pkg.GetValueChar
40530          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40531          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40532    AND l_bflow_method_code = 'PRIOR_ENTRY'
40533 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40534    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40535          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40536        )
40537    THEN
40538          xla_ae_lines_pkg.BflowUpgEntry
40539            (p_business_method_code    => l_bflow_method_code
40540            ,p_business_class_code     => l_bflow_class_code
40544 -- No business flow processing for business flow method of NONE.
40541            ,p_balance_type            => l_balance_type_code);
40542    ELSE
40543       NULL;
40545    END IF;
40546 
40547    --
40548    -- call analytical criteria
40549    --
40550    
40551    --
40552    -- call description
40553    --
40554    -- No description or it is inherited.
40555    --
40556    -- call ADRs
40557    -- Bug 4922099
40558    --
40559    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40560         (NVL(l_actual_upg_option, 'N') = 'O') OR
40561         (NVL(l_enc_upg_option, 'N') = 'O')
40562       )
40563    THEN
40564    NULL;
40565    --
40566    --
40567    
40568   l_ccid := AcctDerRule_15(
40569            p_application_id           => p_application_id
40570          , p_ae_header_id             => l_ae_header_id 
40571 , p_source_5 => p_source_5
40572 , p_source_8 => p_source_8
40573          , x_transaction_coa_id       => l_adr_transaction_coa_id
40574          , x_accounting_coa_id        => l_adr_accounting_coa_id
40575          , x_value_type_code          => l_adr_value_type_code
40576          , p_side                     => 'NA'
40577    );
40578 
40579    xla_ae_lines_pkg.set_ccid(
40580     p_code_combination_id          => l_ccid
40581   , p_value_type_code              => l_adr_value_type_code
40582   , p_transaction_coa_id           => l_adr_transaction_coa_id
40583   , p_accounting_coa_id            => l_adr_accounting_coa_id
40584   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
40585   , p_adr_type_code                => 'S'
40586   , p_component_type               => l_component_type
40587   , p_component_code               => l_component_code
40588   , p_component_type_code          => l_component_type_code
40589   , p_component_appl_id            => l_component_appl_id
40590   , p_amb_context_code             => l_amb_context_code
40591   , p_side                         => 'NA'
40592   );
40593 
40594 
40595    --
40596    --
40597    END IF;
40598    --
40599    -- Bug 4922099
40600    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40601           (NVL(l_enc_upg_option, 'N') = 'O')
40602         ) AND
40603         (l_bflow_method_code = 'PRIOR_ENTRY')
40604       )
40605    THEN
40606       IF
40607       --
40608       1 = 2
40609       --
40610       THEN
40611       xla_accounting_err_pkg.build_message
40612                                     (p_appli_s_name            => 'XLA'
40613                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40614                                     ,p_token_1                 => 'LINE_NUMBER'
40615                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40616                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40617                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40618                                                                              l_component_type
40619                                                                             ,l_component_code
40620                                                                             ,l_component_type_code
40621                                                                             ,l_component_appl_id
40622                                                                             ,l_amb_context_code
40623                                                                             ,l_entity_code
40624                                                                             ,l_event_class_code
40625                                                                            )
40626                                     ,p_token_3                 => 'OWNER'
40627                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40628                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40629                                                                           ,p_lookup_code    => l_component_type_code
40630                                                                          )
40631                                     ,p_token_4                 => 'PRODUCT_NAME'
40632                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40633                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40634                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40635                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40636                                     ,p_ae_header_id            =>  NULL
40637                                        );
40638 
40639         IF (C_LEVEL_ERROR>= g_log_level) THEN
40640                  trace
40641                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40642                       ,p_level    => C_LEVEL_ERROR
40643                       ,p_module   => l_log_module);
40644         END IF;
40645       END IF;
40646    END IF;
40647    --
40648    --
40649    ------------------------------------------------------------------------------------------------
40650    -- 4219869 Business Flow
40651    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40652    -- Prior Entry.  Currently, the following code is always generated.
40653    ------------------------------------------------------------------------------------------------
40654    XLA_AE_LINES_PKG.ValidateCurrentLine;
40655 
40656    ------------------------------------------------------------------------------------
40657    -- 4219869 Business Flow
40658    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40662    ----------------------------------------------------------------------------------
40659    ------------------------------------------------------------------------------------
40660    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40661 
40663    -- 4219869 Business Flow
40664    -- Update journal entry status -- Need to generate this within IF <condition>
40665    ----------------------------------------------------------------------------------
40666    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40667          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40668          ,p_balance_type_code => l_balance_type_code
40669          );
40670 
40671    -------------------------------------------------------------------------------------------
40672    -- 4262811 - Generate the Accrual Reversal lines
40673    -------------------------------------------------------------------------------------------
40674    BEGIN
40675       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40676                               (g_array_event(p_event_id).array_value_num('header_index'));
40677       IF l_acc_rev_flag IS NULL THEN
40678          l_acc_rev_flag := 'N';
40679       END IF;
40680    EXCEPTION
40681       WHEN OTHERS THEN
40682          l_acc_rev_flag := 'N';
40683    END;
40684    --
40685    IF (l_acc_rev_flag = 'Y') THEN
40686 
40687        -- 4645092  ------------------------------------------------------------------------------
40688        -- To allow MPA report to determine if it should generate report process
40689        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40690        ------------------------------------------------------------------------------------------
40691 
40692        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40693        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40694 
40695        --
40696        -- Update the line information that should be overwritten
40697        --
40698        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40699                                          p_header_num   => 1);
40700        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40701 
40702        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40703 
40704        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40705           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40706        END IF;
40707 
40708       --
40709       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40710       --
40711       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40712           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40713       ELSE
40714           ---------------------------------------------------------------------------------------------------
40715           -- 4262811a Switch Sign
40716           ---------------------------------------------------------------------------------------------------
40717           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40718           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40719                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40720           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40721                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40722           -- 5132302
40723           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40724                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40725 
40726       END IF;
40727 
40728       -- 4955764
40729       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40730       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40731 
40732 
40733       XLA_AE_LINES_PKG.ValidateCurrentLine;
40734       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40735 
40736       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40737                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40738                ,p_balance_type_code => l_balance_type_code);
40739 
40740    END IF;
40741 
40742    -----------------------------------------------------------------------------------------
40743    -- 4262811 Multiperiod Accounting
40744    -----------------------------------------------------------------------------------------
40745      -- No MPA option is assigned.
40746 
40747 
40748 END IF;
40749 --
40750 
40751 --
40752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40753    trace
40754       (p_msg      => 'END of AcctLineType_91'
40755       ,p_level    => C_LEVEL_PROCEDURE
40756       ,p_module   => l_log_module);
40757 END IF;
40758 --
40759 EXCEPTION
40760   WHEN xla_exceptions_pkg.application_exception THEN
40761       RAISE;
40762   WHEN OTHERS THEN
40763        xla_exceptions_pkg.raise_message
40764            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_91');
40765 END AcctLineType_91;
40766 --
40767 
40768 ---------------------------------------
40769 --
40770 -- PRIVATE FUNCTION
40771 --         AcctLineType_92
40772 --
40773 ---------------------------------------
40774 PROCEDURE AcctLineType_92 (
40775   p_application_id        IN NUMBER
40776  ,p_event_id              IN NUMBER
40777  ,p_calculate_acctd_flag  IN VARCHAR2
40778  ,p_calculate_g_l_flag    IN VARCHAR2
40779  ,p_actual_flag           IN OUT VARCHAR2
40780  ,p_balance_type_code     OUT VARCHAR2
40784  , p_source_4            IN NUMBER
40781  ,p_gain_or_loss_ref      OUT VARCHAR2
40782  
40783 --Cost CCID
40785 --Allow Account Override Flag
40786  , p_source_5            IN VARCHAR2
40787 --Cost Clearing CCID
40788  , p_source_7            IN NUMBER
40789 --Adjustment Cost Clearing CCID
40790  , p_source_8            IN NUMBER
40791 --Reversing Line Flag
40792  , p_source_23            IN VARCHAR2
40793 --Actual Upgrade Credit Accounting Class
40794  , p_source_24            IN VARCHAR2
40795 --Entered Raw Cost
40796  , p_source_25            IN NUMBER
40797 --Entered Currency Code
40798  , p_source_26            IN VARCHAR2
40799 --Accounted Raw Cost
40800  , p_source_27            IN NUMBER
40801 --Exchange Rate Date
40802  , p_source_28            IN DATE
40803 --Exchange Rate
40804  , p_source_29            IN NUMBER
40805 --Exchange Rate Type
40806  , p_source_30            IN VARCHAR2
40807 --Actual Upgrade Debit Accounting Class
40808  , p_source_31            IN VARCHAR2
40809 --Use Actuals Upgrade Attributes Flag
40810  , p_source_32            IN VARCHAR2
40811 --Expenditure Item ID
40812  , p_source_33            IN NUMBER
40813 --Cost Distribution Line Number
40814  , p_source_34            IN NUMBER
40815 --Line Type
40816  , p_source_35            IN VARCHAR2
40817  , p_source_35_meaning    IN VARCHAR2
40818 --Reversed Line Number
40819  , p_source_36            IN NUMBER
40820 )
40821 IS
40822 
40823 l_component_type              VARCHAR2(80);
40824 l_component_code              VARCHAR2(30);
40825 l_component_type_code         VARCHAR2(1);
40826 l_component_appl_id           INTEGER;
40827 l_amb_context_code            VARCHAR2(30);
40828 l_entity_code                 VARCHAR2(30);
40829 l_event_class_code            VARCHAR2(30);
40830 l_ae_header_id                NUMBER;
40831 l_event_type_code             VARCHAR2(30);
40832 l_line_definition_code        VARCHAR2(30);
40833 l_line_definition_owner_code  VARCHAR2(1);
40834 --
40835 -- adr variables
40836 l_segment                     VARCHAR2(30);
40837 l_ccid                        NUMBER;
40838 l_adr_transaction_coa_id      NUMBER;
40839 l_adr_accounting_coa_id       NUMBER;
40840 l_adr_flexfield_segment_code  VARCHAR2(30);
40841 l_adr_flex_value_set_id       NUMBER;
40842 l_adr_value_type_code         VARCHAR2(30);
40843 l_adr_value_combination_id    NUMBER;
40844 l_adr_value_segment_code      VARCHAR2(30);
40845 
40846 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40847 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40848 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40849 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40850 
40851 -- 4262811 Variables ------------------------------------------------------------------------------------------
40852 l_entered_amt_idx             NUMBER;
40853 l_accted_amt_idx              NUMBER;
40854 l_acc_rev_flag                VARCHAR2(1);
40855 l_accrual_line_num            NUMBER;
40856 l_tmp_amt                     NUMBER;
40857 l_acc_rev_natural_side_code   VARCHAR2(1);
40858 
40859 l_num_entries                 NUMBER;
40860 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40861 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40862 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40863 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40864 l_recog_line_1                NUMBER;
40865 l_recog_line_2                NUMBER;
40866 
40867 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40868 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40869 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40870 
40871 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40872 
40873 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40874 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40875 
40876 ---------------------------------------------------------------------------------------------------------------
40877 
40878 
40879 --
40880 -- bulk performance
40881 --
40882 l_balance_type_code           VARCHAR2(1);
40883 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40884 l_log_module                  VARCHAR2(240);
40885 
40886 --
40887 -- Upgrade strategy
40888 --
40889 l_actual_upg_option           VARCHAR2(1);
40890 l_enc_upg_option           VARCHAR2(1);
40891 
40892 --
40893 BEGIN
40894 --
40895 IF g_log_enabled THEN
40896       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
40897 END IF;
40898 --
40899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40900 
40901       trace
40902          (p_msg      => 'BEGIN of AcctLineType_92'
40903          ,p_level    => C_LEVEL_PROCEDURE
40904          ,p_module   => l_log_module);
40905 
40906 END IF;
40907 --
40908 l_component_type             := 'AMB_JLT';
40909 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
40910 l_component_type_code        := 'S';
40911 l_component_appl_id          :=  275;
40912 l_amb_context_code           := 'DEFAULT';
40913 l_entity_code                := 'EXPENDITURES';
40914 l_event_class_code           := 'USG_COST_ADJ';
40915 l_event_type_code            := 'USG_COST_ADJ_ALL';
40916 l_line_definition_owner_code := 'S';
40917 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
40918 --
40919 l_balance_type_code          := 'A';
40920 l_segment                     := NULL;
40921 l_ccid                        := NULL;
40922 l_adr_transaction_coa_id      := NULL;
40923 l_adr_accounting_coa_id       := NULL;
40927 l_adr_value_combination_id    := NULL;
40924 l_adr_flexfield_segment_code  := NULL;
40925 l_adr_flex_value_set_id       := NULL;
40926 l_adr_value_type_code         := NULL;
40928 l_adr_value_segment_code      := NULL;
40929 
40930 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40931 l_bflow_class_code           := '';    -- 4219869 Business Flow
40932 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40933 l_budgetary_control_flag     := 'N';
40934 
40935 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40936 l_bflow_applied_to_amt       := NULL; -- 5132302
40937 l_entered_amt_idx            := NULL;          -- 4262811
40938 l_accted_amt_idx             := NULL;          -- 4262811
40939 l_acc_rev_flag               := NULL;          -- 4262811
40940 l_accrual_line_num           := NULL;          -- 4262811
40941 l_tmp_amt                    := NULL;          -- 4262811
40942 --
40943  
40944 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40945     l_balance_type_code <> 'B' THEN
40946 
40947    --
40948    XLA_AE_LINES_PKG.SetNewLine;
40949 
40950    p_balance_type_code          := l_balance_type_code;
40951    -- set the flag so later we will know whether the gain loss line needs to be created
40952    
40953    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40954      p_actual_flag :='A';
40955    END IF;
40956 
40957    --
40958    -- bulk performance
40959    --
40960    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40961                                       p_header_num   => 0); -- 4262811
40962    --
40963    -- set accounting line options
40964    --
40965    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40966            p_natural_side_code          => 'C'
40967          , p_gain_or_loss_flag          => 'N'
40968          , p_gl_transfer_mode_code      => 'S'
40969          , p_acct_entry_type_code       => 'A'
40970          , p_switch_side_flag           => 'Y'
40971          , p_merge_duplicate_code       => 'N'
40972          );
40973    --
40974    l_acc_rev_natural_side_code := 'D';  -- 4262811
40975    -- 
40976    --
40977    -- set accounting line type info
40978    --
40979    xla_ae_lines_pkg.SetAcctLineType
40980       (p_component_type             => l_component_type
40981       ,p_event_type_code            => l_event_type_code
40982       ,p_line_definition_owner_code => l_line_definition_owner_code
40983       ,p_line_definition_code       => l_line_definition_code
40984       ,p_accounting_line_code       => l_component_code
40985       ,p_accounting_line_type_code  => l_component_type_code
40986       ,p_accounting_line_appl_id    => l_component_appl_id
40987       ,p_amb_context_code           => l_amb_context_code
40988       ,p_entity_code                => l_entity_code
40989       ,p_event_class_code           => l_event_class_code);
40990    --
40991    -- set accounting class
40992    --
40993    xla_ae_lines_pkg.SetAcctClass(
40994            p_accounting_class_code  => 'COST_CLEARING'
40995          , p_ae_header_id           => l_ae_header_id
40996          );
40997 
40998    --
40999    -- set rounding class
41000    --
41001    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41002                       'COST_CLEARING';
41003 
41004    --
41005    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41006    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41007    --
41008    -- bulk performance
41009    --
41010    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41011 
41012    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41013       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41014 
41015    -- 4955764
41016    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41017       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41018 
41019    -- 4458381 Public Sector Enh
41020    
41021    --
41022    -- set accounting attributes for the line type
41023    --
41024    l_entered_amt_idx := 22;
41025    l_accted_amt_idx  := 27;
41026    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41027    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
41028    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
41029    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
41030    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
41031    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
41032    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
41033    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
41034    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
41035    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
41036    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
41037    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
41038    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
41039    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
41040    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
41041    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
41042    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
41043    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
41044    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
41045    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
41046    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
41047    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
41051    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
41048    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
41049    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
41050    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
41052    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
41053    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
41054    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
41055    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
41056    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
41057    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
41058    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
41059    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
41060    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
41061    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
41062    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
41063    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
41064    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
41065    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
41066    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
41067    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
41068    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
41069    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
41070    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
41071    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
41072    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
41073    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
41074    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
41075    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
41076    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
41077    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
41078    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
41079    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
41080    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
41081    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
41082    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
41083    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
41084    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
41085    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
41086    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
41087 
41088    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41089    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41090 
41091    ---------------------------------------------------------------------------------------------------------------
41092    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41093    ---------------------------------------------------------------------------------------------------------------
41094    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41095 
41096    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41097    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41098 
41099    IF xla_accounting_cache_pkg.GetValueChar
41100          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41101          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41102    AND l_bflow_method_code = 'PRIOR_ENTRY'
41103 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41104    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41105          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41106        )
41107    THEN
41108          xla_ae_lines_pkg.BflowUpgEntry
41109            (p_business_method_code    => l_bflow_method_code
41110            ,p_business_class_code     => l_bflow_class_code
41111            ,p_balance_type            => l_balance_type_code);
41112    ELSE
41113       NULL;
41114 -- No business flow processing for business flow method of NONE.
41115    END IF;
41116 
41117    --
41118    -- call analytical criteria
41119    --
41120    
41121    --
41122    -- call description
41123    --
41124    -- No description or it is inherited.
41125    --
41126    -- call ADRs
41127    -- Bug 4922099
41128    --
41129    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41130         (NVL(l_actual_upg_option, 'N') = 'O') OR
41131         (NVL(l_enc_upg_option, 'N') = 'O')
41132       )
41133    THEN
41134    NULL;
41135    --
41136    --
41137    
41138   l_ccid := AcctDerRule_15(
41139            p_application_id           => p_application_id
41140          , p_ae_header_id             => l_ae_header_id 
41141 , p_source_5 => p_source_5
41142 , p_source_8 => p_source_8
41143          , x_transaction_coa_id       => l_adr_transaction_coa_id
41144          , x_accounting_coa_id        => l_adr_accounting_coa_id
41145          , x_value_type_code          => l_adr_value_type_code
41146          , p_side                     => 'NA'
41147    );
41148 
41149    xla_ae_lines_pkg.set_ccid(
41150     p_code_combination_id          => l_ccid
41151   , p_value_type_code              => l_adr_value_type_code
41152   , p_transaction_coa_id           => l_adr_transaction_coa_id
41153   , p_accounting_coa_id            => l_adr_accounting_coa_id
41154   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
41155   , p_adr_type_code                => 'S'
41156   , p_component_type               => l_component_type
41157   , p_component_code               => l_component_code
41161   , p_side                         => 'NA'
41158   , p_component_type_code          => l_component_type_code
41159   , p_component_appl_id            => l_component_appl_id
41160   , p_amb_context_code             => l_amb_context_code
41162   );
41163 
41164 
41165    --
41166    --
41167    END IF;
41168    --
41169    -- Bug 4922099
41170    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41171           (NVL(l_enc_upg_option, 'N') = 'O')
41172         ) AND
41173         (l_bflow_method_code = 'PRIOR_ENTRY')
41174       )
41175    THEN
41176       IF
41177       --
41178       1 = 2
41179       --
41180       THEN
41181       xla_accounting_err_pkg.build_message
41182                                     (p_appli_s_name            => 'XLA'
41183                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41184                                     ,p_token_1                 => 'LINE_NUMBER'
41185                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41186                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41187                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41188                                                                              l_component_type
41189                                                                             ,l_component_code
41190                                                                             ,l_component_type_code
41191                                                                             ,l_component_appl_id
41192                                                                             ,l_amb_context_code
41193                                                                             ,l_entity_code
41194                                                                             ,l_event_class_code
41195                                                                            )
41196                                     ,p_token_3                 => 'OWNER'
41197                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41198                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41199                                                                           ,p_lookup_code    => l_component_type_code
41200                                                                          )
41201                                     ,p_token_4                 => 'PRODUCT_NAME'
41202                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41203                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41204                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41205                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41206                                     ,p_ae_header_id            =>  NULL
41207                                        );
41208 
41209         IF (C_LEVEL_ERROR>= g_log_level) THEN
41210                  trace
41211                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41212                       ,p_level    => C_LEVEL_ERROR
41213                       ,p_module   => l_log_module);
41214         END IF;
41215       END IF;
41216    END IF;
41217    --
41218    --
41219    ------------------------------------------------------------------------------------------------
41220    -- 4219869 Business Flow
41221    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41222    -- Prior Entry.  Currently, the following code is always generated.
41223    ------------------------------------------------------------------------------------------------
41224    XLA_AE_LINES_PKG.ValidateCurrentLine;
41225 
41226    ------------------------------------------------------------------------------------
41227    -- 4219869 Business Flow
41228    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41229    ------------------------------------------------------------------------------------
41230    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41231 
41232    ----------------------------------------------------------------------------------
41233    -- 4219869 Business Flow
41234    -- Update journal entry status -- Need to generate this within IF <condition>
41235    ----------------------------------------------------------------------------------
41236    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41237          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41238          ,p_balance_type_code => l_balance_type_code
41239          );
41240 
41241    -------------------------------------------------------------------------------------------
41242    -- 4262811 - Generate the Accrual Reversal lines
41243    -------------------------------------------------------------------------------------------
41244    BEGIN
41245       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41246                               (g_array_event(p_event_id).array_value_num('header_index'));
41247       IF l_acc_rev_flag IS NULL THEN
41248          l_acc_rev_flag := 'N';
41249       END IF;
41250    EXCEPTION
41251       WHEN OTHERS THEN
41252          l_acc_rev_flag := 'N';
41253    END;
41254    --
41255    IF (l_acc_rev_flag = 'Y') THEN
41256 
41257        -- 4645092  ------------------------------------------------------------------------------
41258        -- To allow MPA report to determine if it should generate report process
41259        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41260        ------------------------------------------------------------------------------------------
41261 
41262        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41263        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41267        --
41264 
41265        --
41266        -- Update the line information that should be overwritten
41268        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41269                                          p_header_num   => 1);
41270        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41271 
41272        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41273 
41274        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41275           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41276        END IF;
41277 
41278       --
41279       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41280       --
41281       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41282           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41283       ELSE
41284           ---------------------------------------------------------------------------------------------------
41285           -- 4262811a Switch Sign
41286           ---------------------------------------------------------------------------------------------------
41287           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41288           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41289                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41290           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41291                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41292           -- 5132302
41293           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41294                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41295 
41296       END IF;
41297 
41298       -- 4955764
41299       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41300       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41301 
41302 
41303       XLA_AE_LINES_PKG.ValidateCurrentLine;
41304       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41305 
41306       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41307                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41308                ,p_balance_type_code => l_balance_type_code);
41309 
41310    END IF;
41311 
41312    -----------------------------------------------------------------------------------------
41313    -- 4262811 Multiperiod Accounting
41314    -----------------------------------------------------------------------------------------
41315      -- No MPA option is assigned.
41316 
41317 
41318 END IF;
41319 --
41320 
41321 --
41322 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41323    trace
41324       (p_msg      => 'END of AcctLineType_92'
41325       ,p_level    => C_LEVEL_PROCEDURE
41326       ,p_module   => l_log_module);
41327 END IF;
41328 --
41329 EXCEPTION
41330   WHEN xla_exceptions_pkg.application_exception THEN
41331       RAISE;
41332   WHEN OTHERS THEN
41333        xla_exceptions_pkg.raise_message
41334            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_92');
41335 END AcctLineType_92;
41336 --
41337 
41338 ---------------------------------------
41339 --
41340 -- PRIVATE FUNCTION
41341 --         AcctLineType_93
41342 --
41343 ---------------------------------------
41344 PROCEDURE AcctLineType_93 (
41345   p_application_id        IN NUMBER
41346  ,p_event_id              IN NUMBER
41347  ,p_calculate_acctd_flag  IN VARCHAR2
41348  ,p_calculate_g_l_flag    IN VARCHAR2
41349  ,p_actual_flag           IN OUT VARCHAR2
41350  ,p_balance_type_code     OUT VARCHAR2
41351  ,p_gain_or_loss_ref      OUT VARCHAR2
41352  
41353 --Cost CCID
41354  , p_source_4            IN NUMBER
41355 --Allow Account Override Flag
41356  , p_source_5            IN VARCHAR2
41357 --Cost Clearing CCID
41358  , p_source_7            IN NUMBER
41359 --Adjustment Cost Clearing CCID
41360  , p_source_8            IN NUMBER
41361 --Reversing Line Flag
41362  , p_source_23            IN VARCHAR2
41363 --Actual Upgrade Credit Accounting Class
41364  , p_source_24            IN VARCHAR2
41365 --Entered Raw Cost
41366  , p_source_25            IN NUMBER
41367 --Entered Currency Code
41368  , p_source_26            IN VARCHAR2
41369 --Accounted Raw Cost
41370  , p_source_27            IN NUMBER
41371 --Exchange Rate Date
41372  , p_source_28            IN DATE
41373 --Exchange Rate
41374  , p_source_29            IN NUMBER
41375 --Exchange Rate Type
41376  , p_source_30            IN VARCHAR2
41377 --Actual Upgrade Debit Accounting Class
41378  , p_source_31            IN VARCHAR2
41379 --Use Actuals Upgrade Attributes Flag
41380  , p_source_32            IN VARCHAR2
41381 --Expenditure Item ID
41382  , p_source_33            IN NUMBER
41383 --Cost Distribution Line Number
41384  , p_source_34            IN NUMBER
41385 --Line Type
41386  , p_source_35            IN VARCHAR2
41387  , p_source_35_meaning    IN VARCHAR2
41388 --Reversed Line Number
41389  , p_source_36            IN NUMBER
41390 )
41391 IS
41392 
41393 l_component_type              VARCHAR2(80);
41394 l_component_code              VARCHAR2(30);
41395 l_component_type_code         VARCHAR2(1);
41396 l_component_appl_id           INTEGER;
41397 l_amb_context_code            VARCHAR2(30);
41398 l_entity_code                 VARCHAR2(30);
41402 l_line_definition_code        VARCHAR2(30);
41399 l_event_class_code            VARCHAR2(30);
41400 l_ae_header_id                NUMBER;
41401 l_event_type_code             VARCHAR2(30);
41403 l_line_definition_owner_code  VARCHAR2(1);
41404 --
41405 -- adr variables
41406 l_segment                     VARCHAR2(30);
41407 l_ccid                        NUMBER;
41408 l_adr_transaction_coa_id      NUMBER;
41409 l_adr_accounting_coa_id       NUMBER;
41410 l_adr_flexfield_segment_code  VARCHAR2(30);
41411 l_adr_flex_value_set_id       NUMBER;
41412 l_adr_value_type_code         VARCHAR2(30);
41413 l_adr_value_combination_id    NUMBER;
41414 l_adr_value_segment_code      VARCHAR2(30);
41415 
41416 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41417 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41418 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41419 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41420 
41421 -- 4262811 Variables ------------------------------------------------------------------------------------------
41422 l_entered_amt_idx             NUMBER;
41423 l_accted_amt_idx              NUMBER;
41424 l_acc_rev_flag                VARCHAR2(1);
41425 l_accrual_line_num            NUMBER;
41426 l_tmp_amt                     NUMBER;
41427 l_acc_rev_natural_side_code   VARCHAR2(1);
41428 
41429 l_num_entries                 NUMBER;
41430 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41431 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41432 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41433 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41434 l_recog_line_1                NUMBER;
41435 l_recog_line_2                NUMBER;
41436 
41437 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41438 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41439 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41440 
41441 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41442 
41443 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41444 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41445 
41446 ---------------------------------------------------------------------------------------------------------------
41447 
41448 
41449 --
41450 -- bulk performance
41451 --
41452 l_balance_type_code           VARCHAR2(1);
41453 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41454 l_log_module                  VARCHAR2(240);
41455 
41456 --
41457 -- Upgrade strategy
41458 --
41459 l_actual_upg_option           VARCHAR2(1);
41460 l_enc_upg_option           VARCHAR2(1);
41461 
41462 --
41463 BEGIN
41464 --
41465 IF g_log_enabled THEN
41466       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
41467 END IF;
41468 --
41469 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41470 
41471       trace
41472          (p_msg      => 'BEGIN of AcctLineType_93'
41473          ,p_level    => C_LEVEL_PROCEDURE
41474          ,p_module   => l_log_module);
41475 
41476 END IF;
41477 --
41478 l_component_type             := 'AMB_JLT';
41479 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
41480 l_component_type_code        := 'S';
41481 l_component_appl_id          :=  275;
41482 l_amb_context_code           := 'DEFAULT';
41483 l_entity_code                := 'EXPENDITURES';
41484 l_event_class_code           := 'MISC_COST_ADJ';
41485 l_event_type_code            := 'MISC_COST_ADJ_ALL';
41486 l_line_definition_owner_code := 'S';
41487 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
41488 --
41489 l_balance_type_code          := 'A';
41490 l_segment                     := NULL;
41491 l_ccid                        := NULL;
41492 l_adr_transaction_coa_id      := NULL;
41493 l_adr_accounting_coa_id       := NULL;
41494 l_adr_flexfield_segment_code  := NULL;
41495 l_adr_flex_value_set_id       := NULL;
41496 l_adr_value_type_code         := NULL;
41497 l_adr_value_combination_id    := NULL;
41498 l_adr_value_segment_code      := NULL;
41499 
41500 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41501 l_bflow_class_code           := '';    -- 4219869 Business Flow
41502 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41503 l_budgetary_control_flag     := 'N';
41504 
41505 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41506 l_bflow_applied_to_amt       := NULL; -- 5132302
41507 l_entered_amt_idx            := NULL;          -- 4262811
41508 l_accted_amt_idx             := NULL;          -- 4262811
41509 l_acc_rev_flag               := NULL;          -- 4262811
41510 l_accrual_line_num           := NULL;          -- 4262811
41511 l_tmp_amt                    := NULL;          -- 4262811
41512 --
41513  
41514 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41515     l_balance_type_code <> 'B' THEN
41516 
41517    --
41518    XLA_AE_LINES_PKG.SetNewLine;
41519 
41520    p_balance_type_code          := l_balance_type_code;
41521    -- set the flag so later we will know whether the gain loss line needs to be created
41522    
41523    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41524      p_actual_flag :='A';
41525    END IF;
41526 
41527    --
41528    -- bulk performance
41529    --
41530    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41531                                       p_header_num   => 0); -- 4262811
41532    --
41533    -- set accounting line options
41534    --
41535    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41539          , p_acct_entry_type_code       => 'A'
41536            p_natural_side_code          => 'C'
41537          , p_gain_or_loss_flag          => 'N'
41538          , p_gl_transfer_mode_code      => 'S'
41540          , p_switch_side_flag           => 'Y'
41541          , p_merge_duplicate_code       => 'N'
41542          );
41543    --
41544    l_acc_rev_natural_side_code := 'D';  -- 4262811
41545    -- 
41546    --
41547    -- set accounting line type info
41548    --
41549    xla_ae_lines_pkg.SetAcctLineType
41550       (p_component_type             => l_component_type
41551       ,p_event_type_code            => l_event_type_code
41552       ,p_line_definition_owner_code => l_line_definition_owner_code
41553       ,p_line_definition_code       => l_line_definition_code
41554       ,p_accounting_line_code       => l_component_code
41555       ,p_accounting_line_type_code  => l_component_type_code
41556       ,p_accounting_line_appl_id    => l_component_appl_id
41557       ,p_amb_context_code           => l_amb_context_code
41558       ,p_entity_code                => l_entity_code
41559       ,p_event_class_code           => l_event_class_code);
41560    --
41561    -- set accounting class
41562    --
41563    xla_ae_lines_pkg.SetAcctClass(
41564            p_accounting_class_code  => 'COST_CLEARING'
41565          , p_ae_header_id           => l_ae_header_id
41566          );
41567 
41568    --
41569    -- set rounding class
41570    --
41571    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41572                       'COST_CLEARING';
41573 
41574    --
41575    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41576    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41577    --
41578    -- bulk performance
41579    --
41580    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41581 
41582    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41583       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41584 
41585    -- 4955764
41586    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41587       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41588 
41589    -- 4458381 Public Sector Enh
41590    
41591    --
41592    -- set accounting attributes for the line type
41593    --
41594    l_entered_amt_idx := 22;
41595    l_accted_amt_idx  := 27;
41596    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41597    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
41598    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
41599    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
41600    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
41601    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
41602    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
41603    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
41604    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
41605    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
41606    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
41607    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
41608    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
41609    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
41610    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
41611    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
41612    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
41613    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
41614    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
41615    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
41616    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
41617    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
41618    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
41619    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
41620    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
41621    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
41622    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
41623    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
41624    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
41625    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
41626    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
41627    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
41628    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
41629    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
41630    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
41631    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
41632    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
41633    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
41634    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
41635    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
41636    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
41637    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
41638    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
41639    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
41640    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
41641    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
41642    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
41643    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
41644    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
41648    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
41645    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
41646    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
41647    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
41649    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
41650    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
41651    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
41652    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
41653    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
41654    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
41655    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
41656    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
41657 
41658    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41659    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41660 
41661    ---------------------------------------------------------------------------------------------------------------
41662    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41663    ---------------------------------------------------------------------------------------------------------------
41664    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41665 
41666    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41667    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41668 
41669    IF xla_accounting_cache_pkg.GetValueChar
41670          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41671          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41672    AND l_bflow_method_code = 'PRIOR_ENTRY'
41673 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41674    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41675          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41676        )
41677    THEN
41678          xla_ae_lines_pkg.BflowUpgEntry
41679            (p_business_method_code    => l_bflow_method_code
41680            ,p_business_class_code     => l_bflow_class_code
41681            ,p_balance_type            => l_balance_type_code);
41682    ELSE
41683       NULL;
41684 -- No business flow processing for business flow method of NONE.
41685    END IF;
41686 
41687    --
41688    -- call analytical criteria
41689    --
41690    
41691    --
41692    -- call description
41693    --
41694    -- No description or it is inherited.
41695    --
41696    -- call ADRs
41697    -- Bug 4922099
41698    --
41699    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41700         (NVL(l_actual_upg_option, 'N') = 'O') OR
41701         (NVL(l_enc_upg_option, 'N') = 'O')
41702       )
41703    THEN
41704    NULL;
41705    --
41706    --
41707    
41708   l_ccid := AcctDerRule_15(
41709            p_application_id           => p_application_id
41710          , p_ae_header_id             => l_ae_header_id 
41711 , p_source_5 => p_source_5
41712 , p_source_8 => p_source_8
41713          , x_transaction_coa_id       => l_adr_transaction_coa_id
41714          , x_accounting_coa_id        => l_adr_accounting_coa_id
41715          , x_value_type_code          => l_adr_value_type_code
41716          , p_side                     => 'NA'
41717    );
41718 
41719    xla_ae_lines_pkg.set_ccid(
41720     p_code_combination_id          => l_ccid
41721   , p_value_type_code              => l_adr_value_type_code
41722   , p_transaction_coa_id           => l_adr_transaction_coa_id
41723   , p_accounting_coa_id            => l_adr_accounting_coa_id
41724   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
41725   , p_adr_type_code                => 'S'
41726   , p_component_type               => l_component_type
41727   , p_component_code               => l_component_code
41728   , p_component_type_code          => l_component_type_code
41729   , p_component_appl_id            => l_component_appl_id
41730   , p_amb_context_code             => l_amb_context_code
41731   , p_side                         => 'NA'
41732   );
41733 
41734 
41735    --
41736    --
41737    END IF;
41738    --
41739    -- Bug 4922099
41740    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41741           (NVL(l_enc_upg_option, 'N') = 'O')
41742         ) AND
41743         (l_bflow_method_code = 'PRIOR_ENTRY')
41744       )
41745    THEN
41746       IF
41747       --
41748       1 = 2
41749       --
41750       THEN
41751       xla_accounting_err_pkg.build_message
41752                                     (p_appli_s_name            => 'XLA'
41753                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41754                                     ,p_token_1                 => 'LINE_NUMBER'
41755                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41756                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41757                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41758                                                                              l_component_type
41759                                                                             ,l_component_code
41760                                                                             ,l_component_type_code
41761                                                                             ,l_component_appl_id
41762                                                                             ,l_amb_context_code
41763                                                                             ,l_entity_code
41767                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41764                                                                             ,l_event_class_code
41765                                                                            )
41766                                     ,p_token_3                 => 'OWNER'
41768                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41769                                                                           ,p_lookup_code    => l_component_type_code
41770                                                                          )
41771                                     ,p_token_4                 => 'PRODUCT_NAME'
41772                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41773                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41774                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41775                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41776                                     ,p_ae_header_id            =>  NULL
41777                                        );
41778 
41779         IF (C_LEVEL_ERROR>= g_log_level) THEN
41780                  trace
41781                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41782                       ,p_level    => C_LEVEL_ERROR
41783                       ,p_module   => l_log_module);
41784         END IF;
41785       END IF;
41786    END IF;
41787    --
41788    --
41789    ------------------------------------------------------------------------------------------------
41790    -- 4219869 Business Flow
41791    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41792    -- Prior Entry.  Currently, the following code is always generated.
41793    ------------------------------------------------------------------------------------------------
41794    XLA_AE_LINES_PKG.ValidateCurrentLine;
41795 
41796    ------------------------------------------------------------------------------------
41797    -- 4219869 Business Flow
41798    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41799    ------------------------------------------------------------------------------------
41800    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41801 
41802    ----------------------------------------------------------------------------------
41803    -- 4219869 Business Flow
41804    -- Update journal entry status -- Need to generate this within IF <condition>
41805    ----------------------------------------------------------------------------------
41806    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41807          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41808          ,p_balance_type_code => l_balance_type_code
41809          );
41810 
41811    -------------------------------------------------------------------------------------------
41812    -- 4262811 - Generate the Accrual Reversal lines
41813    -------------------------------------------------------------------------------------------
41814    BEGIN
41815       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41816                               (g_array_event(p_event_id).array_value_num('header_index'));
41817       IF l_acc_rev_flag IS NULL THEN
41818          l_acc_rev_flag := 'N';
41819       END IF;
41820    EXCEPTION
41821       WHEN OTHERS THEN
41822          l_acc_rev_flag := 'N';
41823    END;
41824    --
41825    IF (l_acc_rev_flag = 'Y') THEN
41826 
41827        -- 4645092  ------------------------------------------------------------------------------
41828        -- To allow MPA report to determine if it should generate report process
41829        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41830        ------------------------------------------------------------------------------------------
41831 
41832        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41833        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41834 
41835        --
41836        -- Update the line information that should be overwritten
41837        --
41838        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41839                                          p_header_num   => 1);
41840        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41841 
41842        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41843 
41844        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41845           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41846        END IF;
41847 
41848       --
41849       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41850       --
41851       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41852           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41853       ELSE
41854           ---------------------------------------------------------------------------------------------------
41855           -- 4262811a Switch Sign
41856           ---------------------------------------------------------------------------------------------------
41857           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41858           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41859                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41860           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41861                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41865 
41862           -- 5132302
41863           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41864                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41866       END IF;
41867 
41868       -- 4955764
41869       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41870       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41871 
41872 
41873       XLA_AE_LINES_PKG.ValidateCurrentLine;
41874       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41875 
41876       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41877                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41878                ,p_balance_type_code => l_balance_type_code);
41879 
41880    END IF;
41881 
41882    -----------------------------------------------------------------------------------------
41883    -- 4262811 Multiperiod Accounting
41884    -----------------------------------------------------------------------------------------
41885      -- No MPA option is assigned.
41886 
41887 
41888 END IF;
41889 --
41890 
41891 --
41892 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41893    trace
41894       (p_msg      => 'END of AcctLineType_93'
41895       ,p_level    => C_LEVEL_PROCEDURE
41896       ,p_module   => l_log_module);
41897 END IF;
41898 --
41899 EXCEPTION
41900   WHEN xla_exceptions_pkg.application_exception THEN
41901       RAISE;
41902   WHEN OTHERS THEN
41903        xla_exceptions_pkg.raise_message
41904            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_93');
41905 END AcctLineType_93;
41906 --
41907 
41908 ---------------------------------------
41909 --
41910 -- PRIVATE FUNCTION
41911 --         AcctLineType_94
41912 --
41913 ---------------------------------------
41914 PROCEDURE AcctLineType_94 (
41915   p_application_id        IN NUMBER
41916  ,p_event_id              IN NUMBER
41917  ,p_calculate_acctd_flag  IN VARCHAR2
41918  ,p_calculate_g_l_flag    IN VARCHAR2
41919  ,p_actual_flag           IN OUT VARCHAR2
41920  ,p_balance_type_code     OUT VARCHAR2
41921  ,p_gain_or_loss_ref      OUT VARCHAR2
41922  
41923 --Cost CCID
41924  , p_source_4            IN NUMBER
41925 --Allow Account Override Flag
41926  , p_source_5            IN VARCHAR2
41927 --Cost Clearing CCID
41928  , p_source_7            IN NUMBER
41929 --Adjustment Cost Clearing CCID
41930  , p_source_8            IN NUMBER
41931 --Reversing Line Flag
41932  , p_source_23            IN VARCHAR2
41933 --Actual Upgrade Credit Accounting Class
41934  , p_source_24            IN VARCHAR2
41935 --Entered Raw Cost
41936  , p_source_25            IN NUMBER
41937 --Entered Currency Code
41938  , p_source_26            IN VARCHAR2
41939 --Accounted Raw Cost
41940  , p_source_27            IN NUMBER
41941 --Exchange Rate Date
41942  , p_source_28            IN DATE
41943 --Exchange Rate
41944  , p_source_29            IN NUMBER
41945 --Exchange Rate Type
41946  , p_source_30            IN VARCHAR2
41947 --Actual Upgrade Debit Accounting Class
41948  , p_source_31            IN VARCHAR2
41949 --Use Actuals Upgrade Attributes Flag
41950  , p_source_32            IN VARCHAR2
41951 --Expenditure Item ID
41952  , p_source_33            IN NUMBER
41953 --Cost Distribution Line Number
41954  , p_source_34            IN NUMBER
41955 --Line Type
41956  , p_source_35            IN VARCHAR2
41957  , p_source_35_meaning    IN VARCHAR2
41958 --Reversed Line Number
41959  , p_source_36            IN NUMBER
41960 )
41961 IS
41962 
41963 l_component_type              VARCHAR2(80);
41964 l_component_code              VARCHAR2(30);
41965 l_component_type_code         VARCHAR2(1);
41966 l_component_appl_id           INTEGER;
41967 l_amb_context_code            VARCHAR2(30);
41968 l_entity_code                 VARCHAR2(30);
41969 l_event_class_code            VARCHAR2(30);
41970 l_ae_header_id                NUMBER;
41971 l_event_type_code             VARCHAR2(30);
41972 l_line_definition_code        VARCHAR2(30);
41973 l_line_definition_owner_code  VARCHAR2(1);
41974 --
41975 -- adr variables
41976 l_segment                     VARCHAR2(30);
41977 l_ccid                        NUMBER;
41978 l_adr_transaction_coa_id      NUMBER;
41979 l_adr_accounting_coa_id       NUMBER;
41980 l_adr_flexfield_segment_code  VARCHAR2(30);
41981 l_adr_flex_value_set_id       NUMBER;
41982 l_adr_value_type_code         VARCHAR2(30);
41983 l_adr_value_combination_id    NUMBER;
41984 l_adr_value_segment_code      VARCHAR2(30);
41985 
41986 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41987 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41988 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41989 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41990 
41991 -- 4262811 Variables ------------------------------------------------------------------------------------------
41992 l_entered_amt_idx             NUMBER;
41993 l_accted_amt_idx              NUMBER;
41994 l_acc_rev_flag                VARCHAR2(1);
41995 l_accrual_line_num            NUMBER;
41996 l_tmp_amt                     NUMBER;
41997 l_acc_rev_natural_side_code   VARCHAR2(1);
41998 
41999 l_num_entries                 NUMBER;
42000 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42001 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42002 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42003 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42004 l_recog_line_1                NUMBER;
42005 l_recog_line_2                NUMBER;
42006 
42010 
42007 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42008 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42009 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42011 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42012 
42013 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42014 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42015 
42016 ---------------------------------------------------------------------------------------------------------------
42017 
42018 
42019 --
42020 -- bulk performance
42021 --
42022 l_balance_type_code           VARCHAR2(1);
42023 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42024 l_log_module                  VARCHAR2(240);
42025 
42026 --
42027 -- Upgrade strategy
42028 --
42029 l_actual_upg_option           VARCHAR2(1);
42030 l_enc_upg_option           VARCHAR2(1);
42031 
42032 --
42033 BEGIN
42034 --
42035 IF g_log_enabled THEN
42036       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
42037 END IF;
42038 --
42039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42040 
42041       trace
42042          (p_msg      => 'BEGIN of AcctLineType_94'
42043          ,p_level    => C_LEVEL_PROCEDURE
42044          ,p_module   => l_log_module);
42045 
42046 END IF;
42047 --
42048 l_component_type             := 'AMB_JLT';
42049 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
42050 l_component_type_code        := 'S';
42051 l_component_appl_id          :=  275;
42052 l_amb_context_code           := 'DEFAULT';
42053 l_entity_code                := 'EXPENDITURES';
42054 l_event_class_code           := 'LABOR_COST_ADJ';
42055 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
42056 l_line_definition_owner_code := 'S';
42057 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
42058 --
42059 l_balance_type_code          := 'A';
42060 l_segment                     := NULL;
42061 l_ccid                        := NULL;
42062 l_adr_transaction_coa_id      := NULL;
42063 l_adr_accounting_coa_id       := NULL;
42064 l_adr_flexfield_segment_code  := NULL;
42065 l_adr_flex_value_set_id       := NULL;
42066 l_adr_value_type_code         := NULL;
42067 l_adr_value_combination_id    := NULL;
42068 l_adr_value_segment_code      := NULL;
42069 
42070 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42071 l_bflow_class_code           := '';    -- 4219869 Business Flow
42072 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42073 l_budgetary_control_flag     := 'N';
42074 
42075 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42076 l_bflow_applied_to_amt       := NULL; -- 5132302
42077 l_entered_amt_idx            := NULL;          -- 4262811
42078 l_accted_amt_idx             := NULL;          -- 4262811
42079 l_acc_rev_flag               := NULL;          -- 4262811
42080 l_accrual_line_num           := NULL;          -- 4262811
42081 l_tmp_amt                    := NULL;          -- 4262811
42082 --
42083  
42084 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42085     l_balance_type_code <> 'B' THEN
42086 
42087    --
42088    XLA_AE_LINES_PKG.SetNewLine;
42089 
42090    p_balance_type_code          := l_balance_type_code;
42091    -- set the flag so later we will know whether the gain loss line needs to be created
42092    
42093    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42094      p_actual_flag :='A';
42095    END IF;
42096 
42097    --
42098    -- bulk performance
42099    --
42100    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42101                                       p_header_num   => 0); -- 4262811
42102    --
42103    -- set accounting line options
42104    --
42105    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42106            p_natural_side_code          => 'C'
42107          , p_gain_or_loss_flag          => 'N'
42108          , p_gl_transfer_mode_code      => 'S'
42109          , p_acct_entry_type_code       => 'A'
42110          , p_switch_side_flag           => 'Y'
42111          , p_merge_duplicate_code       => 'N'
42112          );
42113    --
42114    l_acc_rev_natural_side_code := 'D';  -- 4262811
42115    -- 
42116    --
42117    -- set accounting line type info
42118    --
42119    xla_ae_lines_pkg.SetAcctLineType
42120       (p_component_type             => l_component_type
42121       ,p_event_type_code            => l_event_type_code
42122       ,p_line_definition_owner_code => l_line_definition_owner_code
42123       ,p_line_definition_code       => l_line_definition_code
42124       ,p_accounting_line_code       => l_component_code
42125       ,p_accounting_line_type_code  => l_component_type_code
42126       ,p_accounting_line_appl_id    => l_component_appl_id
42127       ,p_amb_context_code           => l_amb_context_code
42128       ,p_entity_code                => l_entity_code
42129       ,p_event_class_code           => l_event_class_code);
42130    --
42131    -- set accounting class
42132    --
42133    xla_ae_lines_pkg.SetAcctClass(
42134            p_accounting_class_code  => 'COST_CLEARING'
42135          , p_ae_header_id           => l_ae_header_id
42136          );
42137 
42138    --
42139    -- set rounding class
42140    --
42141    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42142                       'COST_CLEARING';
42143 
42144    --
42145    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42149    --
42146    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42147    --
42148    -- bulk performance
42150    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42151 
42152    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42153       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42154 
42155    -- 4955764
42156    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42157       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42158 
42159    -- 4458381 Public Sector Enh
42160    
42161    --
42162    -- set accounting attributes for the line type
42163    --
42164    l_entered_amt_idx := 22;
42165    l_accted_amt_idx  := 27;
42166    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42167    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42168    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
42169    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
42170    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
42171    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
42172    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
42173    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
42174    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
42175    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
42176    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
42177    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
42178    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
42179    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
42180    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
42181    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
42182    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
42183    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
42184    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
42185    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
42186    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
42187    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
42188    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
42189    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
42190    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
42191    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
42192    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
42193    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
42194    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
42195    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
42196    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
42197    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
42198    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
42199    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
42200    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
42201    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
42202    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
42203    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
42204    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
42205    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
42206    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
42207    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
42208    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
42209    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
42210    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
42211    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
42212    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
42213    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
42214    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
42215    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
42216    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
42217    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
42218    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
42219    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
42220    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
42221    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
42222    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
42223    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
42224    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
42225    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
42226    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
42227 
42228    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42229    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42230 
42231    ---------------------------------------------------------------------------------------------------------------
42232    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42233    ---------------------------------------------------------------------------------------------------------------
42234    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42235 
42236    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42237    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42238 
42239    IF xla_accounting_cache_pkg.GetValueChar
42240          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42244    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42241          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42242    AND l_bflow_method_code = 'PRIOR_ENTRY'
42243 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42245          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42246        )
42247    THEN
42248          xla_ae_lines_pkg.BflowUpgEntry
42249            (p_business_method_code    => l_bflow_method_code
42250            ,p_business_class_code     => l_bflow_class_code
42251            ,p_balance_type            => l_balance_type_code);
42252    ELSE
42253       NULL;
42254 -- No business flow processing for business flow method of NONE.
42255    END IF;
42256 
42257    --
42258    -- call analytical criteria
42259    --
42260    
42261    --
42262    -- call description
42263    --
42264    -- No description or it is inherited.
42265    --
42266    -- call ADRs
42267    -- Bug 4922099
42268    --
42269    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42270         (NVL(l_actual_upg_option, 'N') = 'O') OR
42271         (NVL(l_enc_upg_option, 'N') = 'O')
42272       )
42273    THEN
42274    NULL;
42275    --
42276    --
42277    
42278   l_ccid := AcctDerRule_15(
42279            p_application_id           => p_application_id
42280          , p_ae_header_id             => l_ae_header_id 
42281 , p_source_5 => p_source_5
42282 , p_source_8 => p_source_8
42283          , x_transaction_coa_id       => l_adr_transaction_coa_id
42284          , x_accounting_coa_id        => l_adr_accounting_coa_id
42285          , x_value_type_code          => l_adr_value_type_code
42286          , p_side                     => 'NA'
42287    );
42288 
42289    xla_ae_lines_pkg.set_ccid(
42290     p_code_combination_id          => l_ccid
42291   , p_value_type_code              => l_adr_value_type_code
42292   , p_transaction_coa_id           => l_adr_transaction_coa_id
42293   , p_accounting_coa_id            => l_adr_accounting_coa_id
42294   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
42295   , p_adr_type_code                => 'S'
42296   , p_component_type               => l_component_type
42297   , p_component_code               => l_component_code
42298   , p_component_type_code          => l_component_type_code
42299   , p_component_appl_id            => l_component_appl_id
42300   , p_amb_context_code             => l_amb_context_code
42301   , p_side                         => 'NA'
42302   );
42303 
42304 
42305    --
42306    --
42307    END IF;
42308    --
42309    -- Bug 4922099
42310    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42311           (NVL(l_enc_upg_option, 'N') = 'O')
42312         ) AND
42313         (l_bflow_method_code = 'PRIOR_ENTRY')
42314       )
42315    THEN
42316       IF
42317       --
42318       1 = 2
42319       --
42320       THEN
42321       xla_accounting_err_pkg.build_message
42322                                     (p_appli_s_name            => 'XLA'
42323                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42324                                     ,p_token_1                 => 'LINE_NUMBER'
42325                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42326                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42327                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42328                                                                              l_component_type
42329                                                                             ,l_component_code
42330                                                                             ,l_component_type_code
42331                                                                             ,l_component_appl_id
42332                                                                             ,l_amb_context_code
42333                                                                             ,l_entity_code
42334                                                                             ,l_event_class_code
42335                                                                            )
42336                                     ,p_token_3                 => 'OWNER'
42337                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42338                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42339                                                                           ,p_lookup_code    => l_component_type_code
42340                                                                          )
42341                                     ,p_token_4                 => 'PRODUCT_NAME'
42342                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42343                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42344                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42345                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42346                                     ,p_ae_header_id            =>  NULL
42347                                        );
42348 
42349         IF (C_LEVEL_ERROR>= g_log_level) THEN
42350                  trace
42351                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42352                       ,p_level    => C_LEVEL_ERROR
42353                       ,p_module   => l_log_module);
42354         END IF;
42355       END IF;
42356    END IF;
42357    --
42358    --
42359    ------------------------------------------------------------------------------------------------
42360    -- 4219869 Business Flow
42364    XLA_AE_LINES_PKG.ValidateCurrentLine;
42361    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42362    -- Prior Entry.  Currently, the following code is always generated.
42363    ------------------------------------------------------------------------------------------------
42365 
42366    ------------------------------------------------------------------------------------
42367    -- 4219869 Business Flow
42368    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42369    ------------------------------------------------------------------------------------
42370    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42371 
42372    ----------------------------------------------------------------------------------
42373    -- 4219869 Business Flow
42374    -- Update journal entry status -- Need to generate this within IF <condition>
42375    ----------------------------------------------------------------------------------
42376    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42377          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42378          ,p_balance_type_code => l_balance_type_code
42379          );
42380 
42381    -------------------------------------------------------------------------------------------
42382    -- 4262811 - Generate the Accrual Reversal lines
42383    -------------------------------------------------------------------------------------------
42384    BEGIN
42385       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42386                               (g_array_event(p_event_id).array_value_num('header_index'));
42387       IF l_acc_rev_flag IS NULL THEN
42388          l_acc_rev_flag := 'N';
42389       END IF;
42390    EXCEPTION
42391       WHEN OTHERS THEN
42392          l_acc_rev_flag := 'N';
42393    END;
42394    --
42395    IF (l_acc_rev_flag = 'Y') THEN
42396 
42397        -- 4645092  ------------------------------------------------------------------------------
42398        -- To allow MPA report to determine if it should generate report process
42399        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42400        ------------------------------------------------------------------------------------------
42401 
42402        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42403        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42404 
42405        --
42406        -- Update the line information that should be overwritten
42407        --
42408        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42409                                          p_header_num   => 1);
42410        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42411 
42412        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42413 
42414        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42415           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42416        END IF;
42417 
42418       --
42419       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42420       --
42421       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42422           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42423       ELSE
42424           ---------------------------------------------------------------------------------------------------
42425           -- 4262811a Switch Sign
42426           ---------------------------------------------------------------------------------------------------
42427           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42428           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42429                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42430           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42431                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42432           -- 5132302
42433           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42434                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42435 
42436       END IF;
42437 
42438       -- 4955764
42439       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42440       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42441 
42442 
42443       XLA_AE_LINES_PKG.ValidateCurrentLine;
42444       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42445 
42446       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42447                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42448                ,p_balance_type_code => l_balance_type_code);
42449 
42450    END IF;
42451 
42452    -----------------------------------------------------------------------------------------
42453    -- 4262811 Multiperiod Accounting
42454    -----------------------------------------------------------------------------------------
42455      -- No MPA option is assigned.
42456 
42457 
42458 END IF;
42459 --
42460 
42461 --
42462 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42463    trace
42464       (p_msg      => 'END of AcctLineType_94'
42465       ,p_level    => C_LEVEL_PROCEDURE
42466       ,p_module   => l_log_module);
42467 END IF;
42468 --
42469 EXCEPTION
42470   WHEN xla_exceptions_pkg.application_exception THEN
42471       RAISE;
42472   WHEN OTHERS THEN
42473        xla_exceptions_pkg.raise_message
42474            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_94');
42475 END AcctLineType_94;
42479 --
42476 --
42477 
42478 ---------------------------------------
42480 -- PRIVATE FUNCTION
42481 --         AcctLineType_95
42482 --
42483 ---------------------------------------
42484 PROCEDURE AcctLineType_95 (
42485   p_application_id        IN NUMBER
42486  ,p_event_id              IN NUMBER
42487  ,p_calculate_acctd_flag  IN VARCHAR2
42488  ,p_calculate_g_l_flag    IN VARCHAR2
42489  ,p_actual_flag           IN OUT VARCHAR2
42490  ,p_balance_type_code     OUT VARCHAR2
42491  ,p_gain_or_loss_ref      OUT VARCHAR2
42492  
42493 --Cost CCID
42494  , p_source_4            IN NUMBER
42495 --Allow Account Override Flag
42496  , p_source_5            IN VARCHAR2
42497 --Cost Clearing CCID
42498  , p_source_7            IN NUMBER
42499 --Adjustment Cost Clearing CCID
42500  , p_source_8            IN NUMBER
42501 --Reversing Line Flag
42502  , p_source_23            IN VARCHAR2
42503 --Actual Upgrade Credit Accounting Class
42504  , p_source_24            IN VARCHAR2
42505 --Entered Raw Cost
42506  , p_source_25            IN NUMBER
42507 --Entered Currency Code
42508  , p_source_26            IN VARCHAR2
42509 --Accounted Raw Cost
42510  , p_source_27            IN NUMBER
42511 --Exchange Rate Date
42512  , p_source_28            IN DATE
42513 --Exchange Rate
42514  , p_source_29            IN NUMBER
42515 --Exchange Rate Type
42516  , p_source_30            IN VARCHAR2
42517 --Actual Upgrade Debit Accounting Class
42518  , p_source_31            IN VARCHAR2
42519 --Use Actuals Upgrade Attributes Flag
42520  , p_source_32            IN VARCHAR2
42521 --Expenditure Item ID
42522  , p_source_33            IN NUMBER
42523 --Cost Distribution Line Number
42524  , p_source_34            IN NUMBER
42525 --Line Type
42526  , p_source_35            IN VARCHAR2
42527  , p_source_35_meaning    IN VARCHAR2
42528 --Reversed Line Number
42529  , p_source_36            IN NUMBER
42530 )
42531 IS
42532 
42533 l_component_type              VARCHAR2(80);
42534 l_component_code              VARCHAR2(30);
42535 l_component_type_code         VARCHAR2(1);
42536 l_component_appl_id           INTEGER;
42537 l_amb_context_code            VARCHAR2(30);
42538 l_entity_code                 VARCHAR2(30);
42539 l_event_class_code            VARCHAR2(30);
42540 l_ae_header_id                NUMBER;
42541 l_event_type_code             VARCHAR2(30);
42542 l_line_definition_code        VARCHAR2(30);
42543 l_line_definition_owner_code  VARCHAR2(1);
42544 --
42545 -- adr variables
42546 l_segment                     VARCHAR2(30);
42547 l_ccid                        NUMBER;
42548 l_adr_transaction_coa_id      NUMBER;
42549 l_adr_accounting_coa_id       NUMBER;
42550 l_adr_flexfield_segment_code  VARCHAR2(30);
42551 l_adr_flex_value_set_id       NUMBER;
42552 l_adr_value_type_code         VARCHAR2(30);
42553 l_adr_value_combination_id    NUMBER;
42554 l_adr_value_segment_code      VARCHAR2(30);
42555 
42556 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42557 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42558 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42559 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42560 
42561 -- 4262811 Variables ------------------------------------------------------------------------------------------
42562 l_entered_amt_idx             NUMBER;
42563 l_accted_amt_idx              NUMBER;
42564 l_acc_rev_flag                VARCHAR2(1);
42565 l_accrual_line_num            NUMBER;
42566 l_tmp_amt                     NUMBER;
42567 l_acc_rev_natural_side_code   VARCHAR2(1);
42568 
42569 l_num_entries                 NUMBER;
42570 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42571 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42572 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42573 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42574 l_recog_line_1                NUMBER;
42575 l_recog_line_2                NUMBER;
42576 
42577 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42578 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42579 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42580 
42581 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42582 
42583 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42584 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42585 
42586 ---------------------------------------------------------------------------------------------------------------
42587 
42588 
42589 --
42590 -- bulk performance
42591 --
42592 l_balance_type_code           VARCHAR2(1);
42593 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42594 l_log_module                  VARCHAR2(240);
42595 
42596 --
42597 -- Upgrade strategy
42598 --
42599 l_actual_upg_option           VARCHAR2(1);
42600 l_enc_upg_option           VARCHAR2(1);
42601 
42602 --
42603 BEGIN
42604 --
42605 IF g_log_enabled THEN
42606       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
42607 END IF;
42608 --
42609 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42610 
42611       trace
42612          (p_msg      => 'BEGIN of AcctLineType_95'
42613          ,p_level    => C_LEVEL_PROCEDURE
42614          ,p_module   => l_log_module);
42615 
42616 END IF;
42617 --
42618 l_component_type             := 'AMB_JLT';
42619 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
42620 l_component_type_code        := 'S';
42621 l_component_appl_id          :=  275;
42622 l_amb_context_code           := 'DEFAULT';
42626 l_line_definition_owner_code := 'S';
42623 l_entity_code                := 'EXPENDITURES';
42624 l_event_class_code           := 'WIP_COST_ADJ';
42625 l_event_type_code            := 'WIP_COST_ADJ_ALL';
42627 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
42628 --
42629 l_balance_type_code          := 'A';
42630 l_segment                     := NULL;
42631 l_ccid                        := NULL;
42632 l_adr_transaction_coa_id      := NULL;
42633 l_adr_accounting_coa_id       := NULL;
42634 l_adr_flexfield_segment_code  := NULL;
42635 l_adr_flex_value_set_id       := NULL;
42636 l_adr_value_type_code         := NULL;
42637 l_adr_value_combination_id    := NULL;
42638 l_adr_value_segment_code      := NULL;
42639 
42640 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42641 l_bflow_class_code           := '';    -- 4219869 Business Flow
42642 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42643 l_budgetary_control_flag     := 'N';
42644 
42645 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42646 l_bflow_applied_to_amt       := NULL; -- 5132302
42647 l_entered_amt_idx            := NULL;          -- 4262811
42648 l_accted_amt_idx             := NULL;          -- 4262811
42649 l_acc_rev_flag               := NULL;          -- 4262811
42650 l_accrual_line_num           := NULL;          -- 4262811
42651 l_tmp_amt                    := NULL;          -- 4262811
42652 --
42653  
42654 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42655     l_balance_type_code <> 'B' THEN
42656 
42657    --
42658    XLA_AE_LINES_PKG.SetNewLine;
42659 
42660    p_balance_type_code          := l_balance_type_code;
42661    -- set the flag so later we will know whether the gain loss line needs to be created
42662    
42663    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42664      p_actual_flag :='A';
42665    END IF;
42666 
42667    --
42668    -- bulk performance
42669    --
42670    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42671                                       p_header_num   => 0); -- 4262811
42672    --
42673    -- set accounting line options
42674    --
42675    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42676            p_natural_side_code          => 'C'
42677          , p_gain_or_loss_flag          => 'N'
42678          , p_gl_transfer_mode_code      => 'S'
42679          , p_acct_entry_type_code       => 'A'
42680          , p_switch_side_flag           => 'Y'
42681          , p_merge_duplicate_code       => 'N'
42682          );
42683    --
42684    l_acc_rev_natural_side_code := 'D';  -- 4262811
42685    -- 
42686    --
42687    -- set accounting line type info
42688    --
42689    xla_ae_lines_pkg.SetAcctLineType
42690       (p_component_type             => l_component_type
42691       ,p_event_type_code            => l_event_type_code
42692       ,p_line_definition_owner_code => l_line_definition_owner_code
42693       ,p_line_definition_code       => l_line_definition_code
42694       ,p_accounting_line_code       => l_component_code
42695       ,p_accounting_line_type_code  => l_component_type_code
42696       ,p_accounting_line_appl_id    => l_component_appl_id
42697       ,p_amb_context_code           => l_amb_context_code
42698       ,p_entity_code                => l_entity_code
42699       ,p_event_class_code           => l_event_class_code);
42700    --
42701    -- set accounting class
42702    --
42703    xla_ae_lines_pkg.SetAcctClass(
42704            p_accounting_class_code  => 'COST_CLEARING'
42705          , p_ae_header_id           => l_ae_header_id
42706          );
42707 
42708    --
42709    -- set rounding class
42710    --
42711    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42712                       'COST_CLEARING';
42713 
42714    --
42715    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42716    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42717    --
42718    -- bulk performance
42719    --
42720    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42721 
42722    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42723       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42724 
42725    -- 4955764
42726    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42727       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42728 
42729    -- 4458381 Public Sector Enh
42730    
42731    --
42732    -- set accounting attributes for the line type
42733    --
42734    l_entered_amt_idx := 22;
42735    l_accted_amt_idx  := 27;
42736    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42737    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
42738    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
42739    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
42740    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
42741    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
42742    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
42743    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
42744    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
42745    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
42746    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
42747    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
42748    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
42749    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
42750    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
42754    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
42751    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
42752    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
42753    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
42755    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
42756    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
42757    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
42758    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
42759    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
42760    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
42761    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
42762    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
42763    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
42764    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
42765    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
42766    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
42767    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
42768    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
42769    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
42770    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
42771    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
42772    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
42773    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
42774    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
42775    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
42776    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
42777    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
42778    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
42779    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
42780    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
42781    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
42782    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
42783    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
42784    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
42785    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
42786    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
42787    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
42788    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
42789    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
42790    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
42791    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
42792    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
42793    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
42794    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
42795    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
42796    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
42797 
42798    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42799    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42800 
42801    ---------------------------------------------------------------------------------------------------------------
42802    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42803    ---------------------------------------------------------------------------------------------------------------
42804    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42805 
42806    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42807    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42808 
42809    IF xla_accounting_cache_pkg.GetValueChar
42810          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42811          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42812    AND l_bflow_method_code = 'PRIOR_ENTRY'
42813 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42814    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42815          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42816        )
42817    THEN
42818          xla_ae_lines_pkg.BflowUpgEntry
42819            (p_business_method_code    => l_bflow_method_code
42820            ,p_business_class_code     => l_bflow_class_code
42821            ,p_balance_type            => l_balance_type_code);
42822    ELSE
42823       NULL;
42824 -- No business flow processing for business flow method of NONE.
42825    END IF;
42826 
42827    --
42828    -- call analytical criteria
42829    --
42830    
42831    --
42832    -- call description
42833    --
42834    -- No description or it is inherited.
42835    --
42836    -- call ADRs
42837    -- Bug 4922099
42838    --
42839    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42840         (NVL(l_actual_upg_option, 'N') = 'O') OR
42841         (NVL(l_enc_upg_option, 'N') = 'O')
42842       )
42843    THEN
42844    NULL;
42845    --
42846    --
42847    
42848   l_ccid := AcctDerRule_15(
42849            p_application_id           => p_application_id
42850          , p_ae_header_id             => l_ae_header_id 
42851 , p_source_5 => p_source_5
42852 , p_source_8 => p_source_8
42853          , x_transaction_coa_id       => l_adr_transaction_coa_id
42854          , x_accounting_coa_id        => l_adr_accounting_coa_id
42855          , x_value_type_code          => l_adr_value_type_code
42856          , p_side                     => 'NA'
42857    );
42858 
42859    xla_ae_lines_pkg.set_ccid(
42863   , p_accounting_coa_id            => l_adr_accounting_coa_id
42860     p_code_combination_id          => l_ccid
42861   , p_value_type_code              => l_adr_value_type_code
42862   , p_transaction_coa_id           => l_adr_transaction_coa_id
42864   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
42865   , p_adr_type_code                => 'S'
42866   , p_component_type               => l_component_type
42867   , p_component_code               => l_component_code
42868   , p_component_type_code          => l_component_type_code
42869   , p_component_appl_id            => l_component_appl_id
42870   , p_amb_context_code             => l_amb_context_code
42871   , p_side                         => 'NA'
42872   );
42873 
42874 
42875    --
42876    --
42877    END IF;
42878    --
42879    -- Bug 4922099
42880    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42881           (NVL(l_enc_upg_option, 'N') = 'O')
42882         ) AND
42883         (l_bflow_method_code = 'PRIOR_ENTRY')
42884       )
42885    THEN
42886       IF
42887       --
42888       1 = 2
42889       --
42890       THEN
42891       xla_accounting_err_pkg.build_message
42892                                     (p_appli_s_name            => 'XLA'
42893                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42894                                     ,p_token_1                 => 'LINE_NUMBER'
42895                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42896                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42897                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42898                                                                              l_component_type
42899                                                                             ,l_component_code
42900                                                                             ,l_component_type_code
42901                                                                             ,l_component_appl_id
42902                                                                             ,l_amb_context_code
42903                                                                             ,l_entity_code
42904                                                                             ,l_event_class_code
42905                                                                            )
42906                                     ,p_token_3                 => 'OWNER'
42907                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42908                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42909                                                                           ,p_lookup_code    => l_component_type_code
42910                                                                          )
42911                                     ,p_token_4                 => 'PRODUCT_NAME'
42912                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42913                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42914                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42915                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42916                                     ,p_ae_header_id            =>  NULL
42917                                        );
42918 
42919         IF (C_LEVEL_ERROR>= g_log_level) THEN
42920                  trace
42921                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42922                       ,p_level    => C_LEVEL_ERROR
42923                       ,p_module   => l_log_module);
42924         END IF;
42925       END IF;
42926    END IF;
42927    --
42928    --
42929    ------------------------------------------------------------------------------------------------
42930    -- 4219869 Business Flow
42931    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42932    -- Prior Entry.  Currently, the following code is always generated.
42933    ------------------------------------------------------------------------------------------------
42934    XLA_AE_LINES_PKG.ValidateCurrentLine;
42935 
42936    ------------------------------------------------------------------------------------
42937    -- 4219869 Business Flow
42938    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42939    ------------------------------------------------------------------------------------
42940    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42941 
42942    ----------------------------------------------------------------------------------
42943    -- 4219869 Business Flow
42944    -- Update journal entry status -- Need to generate this within IF <condition>
42945    ----------------------------------------------------------------------------------
42946    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42947          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42948          ,p_balance_type_code => l_balance_type_code
42949          );
42950 
42951    -------------------------------------------------------------------------------------------
42952    -- 4262811 - Generate the Accrual Reversal lines
42953    -------------------------------------------------------------------------------------------
42954    BEGIN
42955       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42956                               (g_array_event(p_event_id).array_value_num('header_index'));
42957       IF l_acc_rev_flag IS NULL THEN
42958          l_acc_rev_flag := 'N';
42959       END IF;
42960    EXCEPTION
42961       WHEN OTHERS THEN
42962          l_acc_rev_flag := 'N';
42963    END;
42964    --
42965    IF (l_acc_rev_flag = 'Y') THEN
42969        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42966 
42967        -- 4645092  ------------------------------------------------------------------------------
42968        -- To allow MPA report to determine if it should generate report process
42970        ------------------------------------------------------------------------------------------
42971 
42972        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42973        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42974 
42975        --
42976        -- Update the line information that should be overwritten
42977        --
42978        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42979                                          p_header_num   => 1);
42980        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42981 
42982        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42983 
42984        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42985           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42986        END IF;
42987 
42988       --
42989       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42990       --
42991       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42992           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42993       ELSE
42994           ---------------------------------------------------------------------------------------------------
42995           -- 4262811a Switch Sign
42996           ---------------------------------------------------------------------------------------------------
42997           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42998           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42999                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43000           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43001                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43002           -- 5132302
43003           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43004                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43005 
43006       END IF;
43007 
43008       -- 4955764
43009       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43010       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43011 
43012 
43013       XLA_AE_LINES_PKG.ValidateCurrentLine;
43014       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43015 
43016       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43017                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43018                ,p_balance_type_code => l_balance_type_code);
43019 
43020    END IF;
43021 
43022    -----------------------------------------------------------------------------------------
43023    -- 4262811 Multiperiod Accounting
43024    -----------------------------------------------------------------------------------------
43025      -- No MPA option is assigned.
43026 
43027 
43028 END IF;
43029 --
43030 
43031 --
43032 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43033    trace
43034       (p_msg      => 'END of AcctLineType_95'
43035       ,p_level    => C_LEVEL_PROCEDURE
43036       ,p_module   => l_log_module);
43037 END IF;
43038 --
43039 EXCEPTION
43040   WHEN xla_exceptions_pkg.application_exception THEN
43041       RAISE;
43042   WHEN OTHERS THEN
43043        xla_exceptions_pkg.raise_message
43044            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_95');
43045 END AcctLineType_95;
43046 --
43047 
43048 ---------------------------------------
43049 --
43050 -- PRIVATE FUNCTION
43051 --         AcctLineType_96
43052 --
43053 ---------------------------------------
43054 PROCEDURE AcctLineType_96 (
43055   p_application_id        IN NUMBER
43056  ,p_event_id              IN NUMBER
43057  ,p_calculate_acctd_flag  IN VARCHAR2
43058  ,p_calculate_g_l_flag    IN VARCHAR2
43059  ,p_actual_flag           IN OUT VARCHAR2
43060  ,p_balance_type_code     OUT VARCHAR2
43061  ,p_gain_or_loss_ref      OUT VARCHAR2
43062  
43063 --Cost CCID
43064  , p_source_4            IN NUMBER
43065 --Allow Account Override Flag
43066  , p_source_5            IN VARCHAR2
43067 --Cost Clearing CCID
43068  , p_source_7            IN NUMBER
43069 --Adjustment Cost Clearing CCID
43070  , p_source_8            IN NUMBER
43071 --Exchange Rate Variance Flag
43072  , p_source_22            IN VARCHAR2
43073 --Reversing Line Flag
43074  , p_source_23            IN VARCHAR2
43075 --Actual Upgrade Credit Accounting Class
43076  , p_source_24            IN VARCHAR2
43077 --Entered Raw Cost
43078  , p_source_25            IN NUMBER
43079 --Entered Currency Code
43080  , p_source_26            IN VARCHAR2
43081 --Accounted Raw Cost
43082  , p_source_27            IN NUMBER
43083 --Exchange Rate Date
43084  , p_source_28            IN DATE
43085 --Exchange Rate
43086  , p_source_29            IN NUMBER
43087 --Exchange Rate Type
43088  , p_source_30            IN VARCHAR2
43089 --Actual Upgrade Debit Accounting Class
43090  , p_source_31            IN VARCHAR2
43091 --Use Actuals Upgrade Attributes Flag
43092  , p_source_32            IN VARCHAR2
43093 --Expenditure Item ID
43094  , p_source_33            IN NUMBER
43095 --Cost Distribution Line Number
43096  , p_source_34            IN NUMBER
43100 --Reversed Line Number
43097 --Line Type
43098  , p_source_35            IN VARCHAR2
43099  , p_source_35_meaning    IN VARCHAR2
43101  , p_source_36            IN NUMBER
43102 )
43103 IS
43104 
43105 l_component_type              VARCHAR2(80);
43106 l_component_code              VARCHAR2(30);
43107 l_component_type_code         VARCHAR2(1);
43108 l_component_appl_id           INTEGER;
43109 l_amb_context_code            VARCHAR2(30);
43110 l_entity_code                 VARCHAR2(30);
43111 l_event_class_code            VARCHAR2(30);
43112 l_ae_header_id                NUMBER;
43113 l_event_type_code             VARCHAR2(30);
43114 l_line_definition_code        VARCHAR2(30);
43115 l_line_definition_owner_code  VARCHAR2(1);
43116 --
43117 -- adr variables
43118 l_segment                     VARCHAR2(30);
43119 l_ccid                        NUMBER;
43120 l_adr_transaction_coa_id      NUMBER;
43121 l_adr_accounting_coa_id       NUMBER;
43122 l_adr_flexfield_segment_code  VARCHAR2(30);
43123 l_adr_flex_value_set_id       NUMBER;
43124 l_adr_value_type_code         VARCHAR2(30);
43125 l_adr_value_combination_id    NUMBER;
43126 l_adr_value_segment_code      VARCHAR2(30);
43127 
43128 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43129 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43130 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43131 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43132 
43133 -- 4262811 Variables ------------------------------------------------------------------------------------------
43134 l_entered_amt_idx             NUMBER;
43135 l_accted_amt_idx              NUMBER;
43136 l_acc_rev_flag                VARCHAR2(1);
43137 l_accrual_line_num            NUMBER;
43138 l_tmp_amt                     NUMBER;
43139 l_acc_rev_natural_side_code   VARCHAR2(1);
43140 
43141 l_num_entries                 NUMBER;
43142 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43143 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43144 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43145 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43146 l_recog_line_1                NUMBER;
43147 l_recog_line_2                NUMBER;
43148 
43149 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43150 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43151 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43152 
43153 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43154 
43155 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43156 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43157 
43158 ---------------------------------------------------------------------------------------------------------------
43159 
43160 
43161 --
43162 -- bulk performance
43163 --
43164 l_balance_type_code           VARCHAR2(1);
43165 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43166 l_log_module                  VARCHAR2(240);
43167 
43168 --
43169 -- Upgrade strategy
43170 --
43171 l_actual_upg_option           VARCHAR2(1);
43172 l_enc_upg_option           VARCHAR2(1);
43173 
43174 --
43175 BEGIN
43176 --
43177 IF g_log_enabled THEN
43178       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
43179 END IF;
43180 --
43181 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43182 
43183       trace
43184          (p_msg      => 'BEGIN of AcctLineType_96'
43185          ,p_level    => C_LEVEL_PROCEDURE
43186          ,p_module   => l_log_module);
43187 
43188 END IF;
43189 --
43190 l_component_type             := 'AMB_JLT';
43191 l_component_code             := 'PA_RAW_COST_CLEARING_ADJ';
43192 l_component_type_code        := 'S';
43193 l_component_appl_id          :=  275;
43194 l_amb_context_code           := 'DEFAULT';
43195 l_entity_code                := 'EXPENDITURES';
43196 l_event_class_code           := 'SUPPLIER_COST_ADJ';
43197 l_event_type_code            := 'SUPPLIER_COST_ADJ_ALL';
43198 l_line_definition_owner_code := 'S';
43199 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
43200 --
43201 l_balance_type_code          := 'A';
43202 l_segment                     := NULL;
43203 l_ccid                        := NULL;
43204 l_adr_transaction_coa_id      := NULL;
43205 l_adr_accounting_coa_id       := NULL;
43206 l_adr_flexfield_segment_code  := NULL;
43207 l_adr_flex_value_set_id       := NULL;
43208 l_adr_value_type_code         := NULL;
43209 l_adr_value_combination_id    := NULL;
43210 l_adr_value_segment_code      := NULL;
43211 
43212 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43213 l_bflow_class_code           := '';    -- 4219869 Business Flow
43214 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43215 l_budgetary_control_flag     := 'N';
43216 
43217 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43218 l_bflow_applied_to_amt       := NULL; -- 5132302
43219 l_entered_amt_idx            := NULL;          -- 4262811
43220 l_accted_amt_idx             := NULL;          -- 4262811
43221 l_acc_rev_flag               := NULL;          -- 4262811
43222 l_accrual_line_num           := NULL;          -- 4262811
43223 l_tmp_amt                    := NULL;          -- 4262811
43224 --
43225  
43226 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43227     l_balance_type_code <> 'B' THEN
43228 IF NVL(p_source_22,'
43229 ') =  'N'
43230  THEN 
43231 
43232    --
43233    XLA_AE_LINES_PKG.SetNewLine;
43234 
43235    p_balance_type_code          := l_balance_type_code;
43239      p_actual_flag :='A';
43236    -- set the flag so later we will know whether the gain loss line needs to be created
43237    
43238    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43240    END IF;
43241 
43242    --
43243    -- bulk performance
43244    --
43245    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43246                                       p_header_num   => 0); -- 4262811
43247    --
43248    -- set accounting line options
43249    --
43250    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43251            p_natural_side_code          => 'C'
43252          , p_gain_or_loss_flag          => 'N'
43253          , p_gl_transfer_mode_code      => 'S'
43254          , p_acct_entry_type_code       => 'A'
43255          , p_switch_side_flag           => 'Y'
43256          , p_merge_duplicate_code       => 'N'
43257          );
43258    --
43259    l_acc_rev_natural_side_code := 'D';  -- 4262811
43260    -- 
43261    --
43262    -- set accounting line type info
43263    --
43264    xla_ae_lines_pkg.SetAcctLineType
43265       (p_component_type             => l_component_type
43266       ,p_event_type_code            => l_event_type_code
43267       ,p_line_definition_owner_code => l_line_definition_owner_code
43268       ,p_line_definition_code       => l_line_definition_code
43269       ,p_accounting_line_code       => l_component_code
43270       ,p_accounting_line_type_code  => l_component_type_code
43271       ,p_accounting_line_appl_id    => l_component_appl_id
43272       ,p_amb_context_code           => l_amb_context_code
43273       ,p_entity_code                => l_entity_code
43274       ,p_event_class_code           => l_event_class_code);
43275    --
43276    -- set accounting class
43277    --
43278    xla_ae_lines_pkg.SetAcctClass(
43279            p_accounting_class_code  => 'COST_CLEARING'
43280          , p_ae_header_id           => l_ae_header_id
43281          );
43282 
43283    --
43284    -- set rounding class
43285    --
43286    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43287                       'COST_CLEARING';
43288 
43289    --
43290    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43291    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43292    --
43293    -- bulk performance
43294    --
43295    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43296 
43297    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43298       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43299 
43300    -- 4955764
43301    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43302       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43303 
43304    -- 4458381 Public Sector Enh
43305    
43306    --
43307    -- set accounting attributes for the line type
43308    --
43309    l_entered_amt_idx := 22;
43310    l_accted_amt_idx  := 27;
43311    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43312    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43313    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
43314    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
43315    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
43316    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
43317    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
43318    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
43319    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
43320    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
43321    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
43322    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
43323    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
43324    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
43325    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
43326    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
43327    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
43328    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
43329    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
43330    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
43331    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
43332    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
43333    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
43334    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
43335    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
43336    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
43337    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
43338    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
43339    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
43340    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
43341    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
43342    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
43343    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
43344    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
43345    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
43346    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
43347    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
43348    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
43349    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
43350    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
43354    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
43351    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
43352    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
43353    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
43355    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
43356    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
43357    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
43358    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
43359    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
43360    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
43361    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
43362    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
43363    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
43364    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
43365    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
43366    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
43367    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
43368    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
43369    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
43370    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
43371    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
43372 
43373    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43374    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43375 
43376    ---------------------------------------------------------------------------------------------------------------
43377    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43378    ---------------------------------------------------------------------------------------------------------------
43379    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43380 
43381    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43382    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43383 
43384    IF xla_accounting_cache_pkg.GetValueChar
43385          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43386          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43387    AND l_bflow_method_code = 'PRIOR_ENTRY'
43388 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43389    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43390          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43391        )
43392    THEN
43393          xla_ae_lines_pkg.BflowUpgEntry
43394            (p_business_method_code    => l_bflow_method_code
43395            ,p_business_class_code     => l_bflow_class_code
43396            ,p_balance_type            => l_balance_type_code);
43397    ELSE
43398       NULL;
43399 -- No business flow processing for business flow method of NONE.
43400    END IF;
43401 
43402    --
43403    -- call analytical criteria
43404    --
43405    
43406    --
43407    -- call description
43408    --
43409    -- No description or it is inherited.
43410    --
43411    -- call ADRs
43412    -- Bug 4922099
43413    --
43414    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43415         (NVL(l_actual_upg_option, 'N') = 'O') OR
43416         (NVL(l_enc_upg_option, 'N') = 'O')
43417       )
43418    THEN
43419    NULL;
43420    --
43421    --
43422    
43423   l_ccid := AcctDerRule_15(
43424            p_application_id           => p_application_id
43425          , p_ae_header_id             => l_ae_header_id 
43426 , p_source_5 => p_source_5
43427 , p_source_8 => p_source_8
43428          , x_transaction_coa_id       => l_adr_transaction_coa_id
43429          , x_accounting_coa_id        => l_adr_accounting_coa_id
43430          , x_value_type_code          => l_adr_value_type_code
43431          , p_side                     => 'NA'
43432    );
43433 
43434    xla_ae_lines_pkg.set_ccid(
43435     p_code_combination_id          => l_ccid
43436   , p_value_type_code              => l_adr_value_type_code
43437   , p_transaction_coa_id           => l_adr_transaction_coa_id
43438   , p_accounting_coa_id            => l_adr_accounting_coa_id
43439   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
43440   , p_adr_type_code                => 'S'
43441   , p_component_type               => l_component_type
43442   , p_component_code               => l_component_code
43443   , p_component_type_code          => l_component_type_code
43444   , p_component_appl_id            => l_component_appl_id
43445   , p_amb_context_code             => l_amb_context_code
43446   , p_side                         => 'NA'
43447   );
43448 
43449 
43450    --
43451    --
43452    END IF;
43453    --
43454    -- Bug 4922099
43455    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43456           (NVL(l_enc_upg_option, 'N') = 'O')
43457         ) AND
43458         (l_bflow_method_code = 'PRIOR_ENTRY')
43459       )
43460    THEN
43461       IF
43462       --
43463       1 = 2
43464       --
43465       THEN
43466       xla_accounting_err_pkg.build_message
43467                                     (p_appli_s_name            => 'XLA'
43468                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43469                                     ,p_token_1                 => 'LINE_NUMBER'
43470                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43471                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43472                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43476                                                                             ,l_component_appl_id
43473                                                                              l_component_type
43474                                                                             ,l_component_code
43475                                                                             ,l_component_type_code
43477                                                                             ,l_amb_context_code
43478                                                                             ,l_entity_code
43479                                                                             ,l_event_class_code
43480                                                                            )
43481                                     ,p_token_3                 => 'OWNER'
43482                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43483                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43484                                                                           ,p_lookup_code    => l_component_type_code
43485                                                                          )
43486                                     ,p_token_4                 => 'PRODUCT_NAME'
43487                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43488                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43489                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43490                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43491                                     ,p_ae_header_id            =>  NULL
43492                                        );
43493 
43494         IF (C_LEVEL_ERROR>= g_log_level) THEN
43495                  trace
43496                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43497                       ,p_level    => C_LEVEL_ERROR
43498                       ,p_module   => l_log_module);
43499         END IF;
43500       END IF;
43501    END IF;
43502    --
43503    --
43504    ------------------------------------------------------------------------------------------------
43505    -- 4219869 Business Flow
43506    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43507    -- Prior Entry.  Currently, the following code is always generated.
43508    ------------------------------------------------------------------------------------------------
43509    XLA_AE_LINES_PKG.ValidateCurrentLine;
43510 
43511    ------------------------------------------------------------------------------------
43512    -- 4219869 Business Flow
43513    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43514    ------------------------------------------------------------------------------------
43515    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43516 
43517    ----------------------------------------------------------------------------------
43518    -- 4219869 Business Flow
43519    -- Update journal entry status -- Need to generate this within IF <condition>
43520    ----------------------------------------------------------------------------------
43521    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43522          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43523          ,p_balance_type_code => l_balance_type_code
43524          );
43525 
43526    -------------------------------------------------------------------------------------------
43527    -- 4262811 - Generate the Accrual Reversal lines
43528    -------------------------------------------------------------------------------------------
43529    BEGIN
43530       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43531                               (g_array_event(p_event_id).array_value_num('header_index'));
43532       IF l_acc_rev_flag IS NULL THEN
43533          l_acc_rev_flag := 'N';
43534       END IF;
43535    EXCEPTION
43536       WHEN OTHERS THEN
43537          l_acc_rev_flag := 'N';
43538    END;
43539    --
43540    IF (l_acc_rev_flag = 'Y') THEN
43541 
43542        -- 4645092  ------------------------------------------------------------------------------
43543        -- To allow MPA report to determine if it should generate report process
43544        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43545        ------------------------------------------------------------------------------------------
43546 
43547        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43548        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43549 
43550        --
43551        -- Update the line information that should be overwritten
43552        --
43553        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43554                                          p_header_num   => 1);
43555        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43556 
43557        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43558 
43559        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43560           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43561        END IF;
43562 
43563       --
43564       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43565       --
43566       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43567           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43568       ELSE
43569           ---------------------------------------------------------------------------------------------------
43570           -- 4262811a Switch Sign
43574                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43571           ---------------------------------------------------------------------------------------------------
43572           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43573           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43575           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43576                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43577           -- 5132302
43578           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43579                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43580 
43581       END IF;
43582 
43583       -- 4955764
43584       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43585       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43586 
43587 
43588       XLA_AE_LINES_PKG.ValidateCurrentLine;
43589       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43590 
43591       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43592                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43593                ,p_balance_type_code => l_balance_type_code);
43594 
43595    END IF;
43596 
43597    -----------------------------------------------------------------------------------------
43598    -- 4262811 Multiperiod Accounting
43599    -----------------------------------------------------------------------------------------
43600      -- No MPA option is assigned.
43601 
43602 
43603 END IF;
43604 END IF;
43605 --
43606 
43607 --
43608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43609    trace
43610       (p_msg      => 'END of AcctLineType_96'
43611       ,p_level    => C_LEVEL_PROCEDURE
43612       ,p_module   => l_log_module);
43613 END IF;
43614 --
43615 EXCEPTION
43616   WHEN xla_exceptions_pkg.application_exception THEN
43617       RAISE;
43618   WHEN OTHERS THEN
43619        xla_exceptions_pkg.raise_message
43620            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_96');
43621 END AcctLineType_96;
43622 --
43623 
43624 ---------------------------------------
43625 --
43626 -- PRIVATE FUNCTION
43627 --         AcctLineType_97
43628 --
43629 ---------------------------------------
43630 PROCEDURE AcctLineType_97 (
43631   p_application_id        IN NUMBER
43632  ,p_event_id              IN NUMBER
43633  ,p_calculate_acctd_flag  IN VARCHAR2
43634  ,p_calculate_g_l_flag    IN VARCHAR2
43635  ,p_actual_flag           IN OUT VARCHAR2
43636  ,p_balance_type_code     OUT VARCHAR2
43637  ,p_gain_or_loss_ref      OUT VARCHAR2
43638  
43639 --Cost CCID
43640  , p_source_4            IN NUMBER
43641 --Allow Account Override Flag
43642  , p_source_5            IN VARCHAR2
43643 --Cost Clearing CCID
43644  , p_source_7            IN NUMBER
43645 --Adjustment Cost Clearing CCID
43646  , p_source_8            IN NUMBER
43647 --Reversing Line Flag
43648  , p_source_23            IN VARCHAR2
43649 --Actual Upgrade Credit Accounting Class
43650  , p_source_24            IN VARCHAR2
43651 --Entered Raw Cost
43652  , p_source_25            IN NUMBER
43653 --Entered Currency Code
43654  , p_source_26            IN VARCHAR2
43655 --Accounted Raw Cost
43656  , p_source_27            IN NUMBER
43657 --Exchange Rate Date
43658  , p_source_28            IN DATE
43659 --Exchange Rate
43660  , p_source_29            IN NUMBER
43661 --Exchange Rate Type
43662  , p_source_30            IN VARCHAR2
43663 --Actual Upgrade Debit Accounting Class
43664  , p_source_31            IN VARCHAR2
43665 --Use Actuals Upgrade Attributes Flag
43666  , p_source_32            IN VARCHAR2
43667 --Expenditure Item ID
43668  , p_source_33            IN NUMBER
43669 --Cost Distribution Line Number
43670  , p_source_34            IN NUMBER
43671 --Line Type
43672  , p_source_35            IN VARCHAR2
43673  , p_source_35_meaning    IN VARCHAR2
43674 --Reversed Line Number
43675  , p_source_36            IN NUMBER
43676 )
43677 IS
43678 
43679 l_component_type              VARCHAR2(80);
43680 l_component_code              VARCHAR2(30);
43681 l_component_type_code         VARCHAR2(1);
43682 l_component_appl_id           INTEGER;
43683 l_amb_context_code            VARCHAR2(30);
43684 l_entity_code                 VARCHAR2(30);
43685 l_event_class_code            VARCHAR2(30);
43686 l_ae_header_id                NUMBER;
43687 l_event_type_code             VARCHAR2(30);
43688 l_line_definition_code        VARCHAR2(30);
43689 l_line_definition_owner_code  VARCHAR2(1);
43690 --
43691 -- adr variables
43692 l_segment                     VARCHAR2(30);
43693 l_ccid                        NUMBER;
43694 l_adr_transaction_coa_id      NUMBER;
43695 l_adr_accounting_coa_id       NUMBER;
43696 l_adr_flexfield_segment_code  VARCHAR2(30);
43697 l_adr_flex_value_set_id       NUMBER;
43698 l_adr_value_type_code         VARCHAR2(30);
43699 l_adr_value_combination_id    NUMBER;
43700 l_adr_value_segment_code      VARCHAR2(30);
43701 
43702 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43703 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43704 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43705 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43706 
43707 -- 4262811 Variables ------------------------------------------------------------------------------------------
43708 l_entered_amt_idx             NUMBER;
43709 l_accted_amt_idx              NUMBER;
43713 l_acc_rev_natural_side_code   VARCHAR2(1);
43710 l_acc_rev_flag                VARCHAR2(1);
43711 l_accrual_line_num            NUMBER;
43712 l_tmp_amt                     NUMBER;
43714 
43715 l_num_entries                 NUMBER;
43716 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43717 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43718 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43719 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43720 l_recog_line_1                NUMBER;
43721 l_recog_line_2                NUMBER;
43722 
43723 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43724 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43725 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43726 
43727 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43728 
43729 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43730 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43731 
43732 ---------------------------------------------------------------------------------------------------------------
43733 
43734 
43735 --
43736 -- bulk performance
43737 --
43738 l_balance_type_code           VARCHAR2(1);
43739 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43740 l_log_module                  VARCHAR2(240);
43741 
43742 --
43743 -- Upgrade strategy
43744 --
43745 l_actual_upg_option           VARCHAR2(1);
43746 l_enc_upg_option           VARCHAR2(1);
43747 
43748 --
43749 BEGIN
43750 --
43751 IF g_log_enabled THEN
43752       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
43753 END IF;
43754 --
43755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43756 
43757       trace
43758          (p_msg      => 'BEGIN of AcctLineType_97'
43759          ,p_level    => C_LEVEL_PROCEDURE
43760          ,p_module   => l_log_module);
43761 
43762 END IF;
43763 --
43764 l_component_type             := 'AMB_JLT';
43765 l_component_code             := 'PA_RAW_COST_CLEAR_ADJ_FED';
43766 l_component_type_code        := 'S';
43767 l_component_appl_id          :=  275;
43768 l_amb_context_code           := 'DEFAULT';
43769 l_entity_code                := 'EXPENDITURES';
43770 l_event_class_code           := 'LABOR_COST_ADJ';
43771 l_event_type_code            := 'LABOR_COST_ADJ_ALL';
43772 l_line_definition_owner_code := 'S';
43773 l_line_definition_code       := 'FV_PROJECTS_JLD';
43774 --
43775 l_balance_type_code          := 'A';
43776 l_segment                     := NULL;
43777 l_ccid                        := NULL;
43778 l_adr_transaction_coa_id      := NULL;
43779 l_adr_accounting_coa_id       := NULL;
43780 l_adr_flexfield_segment_code  := NULL;
43781 l_adr_flex_value_set_id       := NULL;
43782 l_adr_value_type_code         := NULL;
43783 l_adr_value_combination_id    := NULL;
43784 l_adr_value_segment_code      := NULL;
43785 
43786 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43787 l_bflow_class_code           := '';    -- 4219869 Business Flow
43788 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43789 l_budgetary_control_flag     := 'N';
43790 
43791 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43792 l_bflow_applied_to_amt       := NULL; -- 5132302
43793 l_entered_amt_idx            := NULL;          -- 4262811
43794 l_accted_amt_idx             := NULL;          -- 4262811
43795 l_acc_rev_flag               := NULL;          -- 4262811
43796 l_accrual_line_num           := NULL;          -- 4262811
43797 l_tmp_amt                    := NULL;          -- 4262811
43798 --
43799  
43800 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43801     l_balance_type_code <> 'B' THEN
43802 
43803    --
43804    XLA_AE_LINES_PKG.SetNewLine;
43805 
43806    p_balance_type_code          := l_balance_type_code;
43807    -- set the flag so later we will know whether the gain loss line needs to be created
43808    
43809    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43810      p_actual_flag :='A';
43811    END IF;
43812 
43813    --
43814    -- bulk performance
43815    --
43816    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43817                                       p_header_num   => 0); -- 4262811
43818    --
43819    -- set accounting line options
43820    --
43821    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43822            p_natural_side_code          => 'C'
43823          , p_gain_or_loss_flag          => 'N'
43824          , p_gl_transfer_mode_code      => 'S'
43825          , p_acct_entry_type_code       => 'A'
43826          , p_switch_side_flag           => 'Y'
43827          , p_merge_duplicate_code       => 'N'
43828          );
43829    --
43830    l_acc_rev_natural_side_code := 'D';  -- 4262811
43831    -- 
43832    --
43833    -- set accounting line type info
43834    --
43835    xla_ae_lines_pkg.SetAcctLineType
43836       (p_component_type             => l_component_type
43837       ,p_event_type_code            => l_event_type_code
43838       ,p_line_definition_owner_code => l_line_definition_owner_code
43839       ,p_line_definition_code       => l_line_definition_code
43840       ,p_accounting_line_code       => l_component_code
43841       ,p_accounting_line_type_code  => l_component_type_code
43842       ,p_accounting_line_appl_id    => l_component_appl_id
43843       ,p_amb_context_code           => l_amb_context_code
43844       ,p_entity_code                => l_entity_code
43845       ,p_event_class_code           => l_event_class_code);
43846    --
43847    -- set accounting class
43848    --
43852          );
43849    xla_ae_lines_pkg.SetAcctClass(
43850            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
43851          , p_ae_header_id           => l_ae_header_id
43853 
43854    --
43855    -- set rounding class
43856    --
43857    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43858                       'FEDERAL_PROJECT_COST_CLEARING';
43859 
43860    --
43861    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43862    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43863    --
43864    -- bulk performance
43865    --
43866    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43867 
43868    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43869       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43870 
43871    -- 4955764
43872    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43873       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43874 
43875    -- 4458381 Public Sector Enh
43876    
43877    --
43878    -- set accounting attributes for the line type
43879    --
43880    l_entered_amt_idx := 22;
43881    l_accted_amt_idx  := 27;
43882    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43883    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
43884    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
43885    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
43886    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
43887    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
43888    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
43889    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
43890    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
43891    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
43892    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
43893    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
43894    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
43895    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
43896    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
43897    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
43898    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
43899    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
43900    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
43901    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
43902    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
43903    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
43904    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
43905    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
43906    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
43907    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
43908    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
43909    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
43910    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
43911    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
43912    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
43913    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
43914    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
43915    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
43916    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
43917    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
43918    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
43919    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
43920    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
43921    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
43922    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
43923    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
43924    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
43925    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
43926    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
43927    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
43928    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
43929    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
43930    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
43931    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
43932    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
43933    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
43934    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
43935    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
43936    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
43937    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
43938    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
43939    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
43940    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
43941    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
43942    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
43943 
43944    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43945    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43946 
43947    ---------------------------------------------------------------------------------------------------------------
43948    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43952    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43949    ---------------------------------------------------------------------------------------------------------------
43950    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43951 
43953    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43954 
43955    IF xla_accounting_cache_pkg.GetValueChar
43956          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43957          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43958    AND l_bflow_method_code = 'PRIOR_ENTRY'
43959 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43960    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43961          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43962        )
43963    THEN
43964          xla_ae_lines_pkg.BflowUpgEntry
43965            (p_business_method_code    => l_bflow_method_code
43966            ,p_business_class_code     => l_bflow_class_code
43967            ,p_balance_type            => l_balance_type_code);
43968    ELSE
43969       NULL;
43970 -- No business flow processing for business flow method of NONE.
43971    END IF;
43972 
43973    --
43974    -- call analytical criteria
43975    --
43976    
43977    --
43978    -- call description
43979    --
43980    -- No description or it is inherited.
43981    --
43982    -- call ADRs
43983    -- Bug 4922099
43984    --
43985    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43986         (NVL(l_actual_upg_option, 'N') = 'O') OR
43987         (NVL(l_enc_upg_option, 'N') = 'O')
43988       )
43989    THEN
43990    NULL;
43991    --
43992    --
43993    
43994   l_ccid := AcctDerRule_15(
43995            p_application_id           => p_application_id
43996          , p_ae_header_id             => l_ae_header_id 
43997 , p_source_5 => p_source_5
43998 , p_source_8 => p_source_8
43999          , x_transaction_coa_id       => l_adr_transaction_coa_id
44000          , x_accounting_coa_id        => l_adr_accounting_coa_id
44001          , x_value_type_code          => l_adr_value_type_code
44002          , p_side                     => 'NA'
44003    );
44004 
44005    xla_ae_lines_pkg.set_ccid(
44006     p_code_combination_id          => l_ccid
44007   , p_value_type_code              => l_adr_value_type_code
44008   , p_transaction_coa_id           => l_adr_transaction_coa_id
44009   , p_accounting_coa_id            => l_adr_accounting_coa_id
44010   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
44011   , p_adr_type_code                => 'S'
44012   , p_component_type               => l_component_type
44013   , p_component_code               => l_component_code
44014   , p_component_type_code          => l_component_type_code
44015   , p_component_appl_id            => l_component_appl_id
44016   , p_amb_context_code             => l_amb_context_code
44017   , p_side                         => 'NA'
44018   );
44019 
44020 
44021    l_segment := AcctDerRule_5(
44022            p_application_id           => p_application_id
44023          , p_ae_header_id             => l_ae_header_id 
44024          , x_transaction_coa_id       => l_adr_transaction_coa_id
44025          , x_accounting_coa_id        => l_adr_accounting_coa_id
44026          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
44027          , x_flex_value_set_id        => l_adr_flex_value_set_id
44028          , x_value_type_code          => l_adr_value_type_code
44029          , x_value_combination_id     => l_adr_value_combination_id
44030          , x_value_segment_code       => l_adr_value_segment_code
44031          , p_side                     => 'NA'
44032          , p_override_seg_flag        => 'Y'
44033    );
44034 
44035    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
44036 
44037       xla_ae_lines_pkg.set_segment(
44038           p_to_segment_code         => 'GL_ACCOUNT'
44039         , p_segment_value           => l_segment
44040         , p_from_segment_code       => l_adr_value_segment_code
44041         , p_from_combination_id     => l_adr_value_combination_id
44042         , p_value_type_code         => l_adr_value_type_code
44043         , p_transaction_coa_id      => l_adr_transaction_coa_id
44044         , p_accounting_coa_id       => l_adr_accounting_coa_id
44045         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
44046         , p_flex_value_set_id       => l_adr_flex_value_set_id
44047         , p_adr_code                => 'FV_490201_PROJECTS'
44048         , p_adr_type_code           => 'S'
44049         , p_component_type          => l_component_type
44050         , p_component_code          => l_component_code
44051         , p_component_type_code     => l_component_type_code
44052         , p_component_appl_id       => l_component_appl_id
44053         , p_amb_context_code        => l_amb_context_code
44054         , p_entity_code             => 'EXPENDITURES'
44055         , p_event_class_code        => 'LABOR_COST_ADJ'
44056         , p_side                    => 'NA'
44057         );
44058 
44059   END IF;
44060 
44061    --
44062    --
44063    END IF;
44064    --
44065    -- Bug 4922099
44066    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44067           (NVL(l_enc_upg_option, 'N') = 'O')
44068         ) AND
44069         (l_bflow_method_code = 'PRIOR_ENTRY')
44070       )
44071    THEN
44072       IF
44073       --
44074       1 = 2
44075       --
44076       THEN
44077       xla_accounting_err_pkg.build_message
44078                                     (p_appli_s_name            => 'XLA'
44079                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44083                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44080                                     ,p_token_1                 => 'LINE_NUMBER'
44081                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44082                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44084                                                                              l_component_type
44085                                                                             ,l_component_code
44086                                                                             ,l_component_type_code
44087                                                                             ,l_component_appl_id
44088                                                                             ,l_amb_context_code
44089                                                                             ,l_entity_code
44090                                                                             ,l_event_class_code
44091                                                                            )
44092                                     ,p_token_3                 => 'OWNER'
44093                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44094                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44095                                                                           ,p_lookup_code    => l_component_type_code
44096                                                                          )
44097                                     ,p_token_4                 => 'PRODUCT_NAME'
44098                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44099                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44100                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44101                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44102                                     ,p_ae_header_id            =>  NULL
44103                                        );
44104 
44105         IF (C_LEVEL_ERROR>= g_log_level) THEN
44106                  trace
44107                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44108                       ,p_level    => C_LEVEL_ERROR
44109                       ,p_module   => l_log_module);
44110         END IF;
44111       END IF;
44112    END IF;
44113    --
44114    --
44115    ------------------------------------------------------------------------------------------------
44116    -- 4219869 Business Flow
44117    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44118    -- Prior Entry.  Currently, the following code is always generated.
44119    ------------------------------------------------------------------------------------------------
44120    XLA_AE_LINES_PKG.ValidateCurrentLine;
44121 
44122    ------------------------------------------------------------------------------------
44123    -- 4219869 Business Flow
44124    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44125    ------------------------------------------------------------------------------------
44126    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44127 
44128    ----------------------------------------------------------------------------------
44129    -- 4219869 Business Flow
44130    -- Update journal entry status -- Need to generate this within IF <condition>
44131    ----------------------------------------------------------------------------------
44132    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44133          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44134          ,p_balance_type_code => l_balance_type_code
44135          );
44136 
44137    -------------------------------------------------------------------------------------------
44138    -- 4262811 - Generate the Accrual Reversal lines
44139    -------------------------------------------------------------------------------------------
44140    BEGIN
44141       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44142                               (g_array_event(p_event_id).array_value_num('header_index'));
44143       IF l_acc_rev_flag IS NULL THEN
44144          l_acc_rev_flag := 'N';
44145       END IF;
44146    EXCEPTION
44147       WHEN OTHERS THEN
44148          l_acc_rev_flag := 'N';
44149    END;
44150    --
44151    IF (l_acc_rev_flag = 'Y') THEN
44152 
44153        -- 4645092  ------------------------------------------------------------------------------
44154        -- To allow MPA report to determine if it should generate report process
44155        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44156        ------------------------------------------------------------------------------------------
44157 
44158        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44159        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44160 
44161        --
44162        -- Update the line information that should be overwritten
44163        --
44164        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44165                                          p_header_num   => 1);
44166        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44167 
44168        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44169 
44170        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44171           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44172        END IF;
44173 
44174       --
44175       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44176       --
44180           ---------------------------------------------------------------------------------------------------
44177       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44178           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44179       ELSE
44181           -- 4262811a Switch Sign
44182           ---------------------------------------------------------------------------------------------------
44183           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44184           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44185                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44186           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44187                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44188           -- 5132302
44189           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44190                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44191 
44192       END IF;
44193 
44194       -- 4955764
44195       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44196       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44197 
44198 
44199       XLA_AE_LINES_PKG.ValidateCurrentLine;
44200       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44201 
44202       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44203                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44204                ,p_balance_type_code => l_balance_type_code);
44205 
44206    END IF;
44207 
44208    -----------------------------------------------------------------------------------------
44209    -- 4262811 Multiperiod Accounting
44210    -----------------------------------------------------------------------------------------
44211      -- No MPA option is assigned.
44212 
44213 
44214 END IF;
44215 --
44216 
44217 --
44218 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44219    trace
44220       (p_msg      => 'END of AcctLineType_97'
44221       ,p_level    => C_LEVEL_PROCEDURE
44222       ,p_module   => l_log_module);
44223 END IF;
44224 --
44225 EXCEPTION
44226   WHEN xla_exceptions_pkg.application_exception THEN
44227       RAISE;
44228   WHEN OTHERS THEN
44229        xla_exceptions_pkg.raise_message
44230            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_97');
44231 END AcctLineType_97;
44232 --
44233 
44234 ---------------------------------------
44235 --
44236 -- PRIVATE FUNCTION
44237 --         AcctLineType_98
44238 --
44239 ---------------------------------------
44240 PROCEDURE AcctLineType_98 (
44241   p_application_id        IN NUMBER
44242  ,p_event_id              IN NUMBER
44243  ,p_calculate_acctd_flag  IN VARCHAR2
44244  ,p_calculate_g_l_flag    IN VARCHAR2
44245  ,p_actual_flag           IN OUT VARCHAR2
44246  ,p_balance_type_code     OUT VARCHAR2
44247  ,p_gain_or_loss_ref      OUT VARCHAR2
44248  
44249 --Cost CCID
44250  , p_source_4            IN NUMBER
44251 --Allow Account Override Flag
44252  , p_source_5            IN VARCHAR2
44253 --Cost Clearing CCID
44254  , p_source_7            IN NUMBER
44255 --Adjustment Cost Clearing CCID
44256  , p_source_8            IN NUMBER
44257 --Reversing Line Flag
44258  , p_source_23            IN VARCHAR2
44259 --Actual Upgrade Credit Accounting Class
44260  , p_source_24            IN VARCHAR2
44261 --Entered Raw Cost
44262  , p_source_25            IN NUMBER
44263 --Entered Currency Code
44264  , p_source_26            IN VARCHAR2
44265 --Accounted Raw Cost
44266  , p_source_27            IN NUMBER
44267 --Exchange Rate Date
44268  , p_source_28            IN DATE
44269 --Exchange Rate
44270  , p_source_29            IN NUMBER
44271 --Exchange Rate Type
44272  , p_source_30            IN VARCHAR2
44273 --Actual Upgrade Debit Accounting Class
44274  , p_source_31            IN VARCHAR2
44275 --Use Actuals Upgrade Attributes Flag
44276  , p_source_32            IN VARCHAR2
44277 --Expenditure Item ID
44278  , p_source_33            IN NUMBER
44279 --Cost Distribution Line Number
44280  , p_source_34            IN NUMBER
44281 --Line Type
44282  , p_source_35            IN VARCHAR2
44283  , p_source_35_meaning    IN VARCHAR2
44284 --Reversed Line Number
44285  , p_source_36            IN NUMBER
44286 )
44287 IS
44288 
44289 l_component_type              VARCHAR2(80);
44290 l_component_code              VARCHAR2(30);
44291 l_component_type_code         VARCHAR2(1);
44292 l_component_appl_id           INTEGER;
44293 l_amb_context_code            VARCHAR2(30);
44294 l_entity_code                 VARCHAR2(30);
44295 l_event_class_code            VARCHAR2(30);
44296 l_ae_header_id                NUMBER;
44297 l_event_type_code             VARCHAR2(30);
44298 l_line_definition_code        VARCHAR2(30);
44299 l_line_definition_owner_code  VARCHAR2(1);
44300 --
44301 -- adr variables
44302 l_segment                     VARCHAR2(30);
44303 l_ccid                        NUMBER;
44304 l_adr_transaction_coa_id      NUMBER;
44305 l_adr_accounting_coa_id       NUMBER;
44306 l_adr_flexfield_segment_code  VARCHAR2(30);
44307 l_adr_flex_value_set_id       NUMBER;
44308 l_adr_value_type_code         VARCHAR2(30);
44309 l_adr_value_combination_id    NUMBER;
44310 l_adr_value_segment_code      VARCHAR2(30);
44311 
44312 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44313 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44317 -- 4262811 Variables ------------------------------------------------------------------------------------------
44314 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44315 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44316 
44318 l_entered_amt_idx             NUMBER;
44319 l_accted_amt_idx              NUMBER;
44320 l_acc_rev_flag                VARCHAR2(1);
44321 l_accrual_line_num            NUMBER;
44322 l_tmp_amt                     NUMBER;
44323 l_acc_rev_natural_side_code   VARCHAR2(1);
44324 
44325 l_num_entries                 NUMBER;
44326 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44327 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44328 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44329 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44330 l_recog_line_1                NUMBER;
44331 l_recog_line_2                NUMBER;
44332 
44333 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44334 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44335 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44336 
44337 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44338 
44339 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44340 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44341 
44342 ---------------------------------------------------------------------------------------------------------------
44343 
44344 
44345 --
44346 -- bulk performance
44347 --
44348 l_balance_type_code           VARCHAR2(1);
44349 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44350 l_log_module                  VARCHAR2(240);
44351 
44352 --
44353 -- Upgrade strategy
44354 --
44355 l_actual_upg_option           VARCHAR2(1);
44356 l_enc_upg_option           VARCHAR2(1);
44357 
44358 --
44359 BEGIN
44360 --
44361 IF g_log_enabled THEN
44362       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
44363 END IF;
44364 --
44365 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44366 
44367       trace
44368          (p_msg      => 'BEGIN of AcctLineType_98'
44369          ,p_level    => C_LEVEL_PROCEDURE
44370          ,p_module   => l_log_module);
44371 
44372 END IF;
44373 --
44374 l_component_type             := 'AMB_JLT';
44375 l_component_code             := 'PA_RAW_COST_CLEAR_ADJ_FED';
44376 l_component_type_code        := 'S';
44377 l_component_appl_id          :=  275;
44378 l_amb_context_code           := 'DEFAULT';
44379 l_entity_code                := 'EXPENDITURES';
44380 l_event_class_code           := 'INVENTORY_COST_ADJ';
44381 l_event_type_code            := 'INVENTORY_COST_ADJ_ALL';
44382 l_line_definition_owner_code := 'S';
44383 l_line_definition_code       := 'FV_PROJECTS_JLD';
44384 --
44385 l_balance_type_code          := 'A';
44386 l_segment                     := NULL;
44387 l_ccid                        := NULL;
44388 l_adr_transaction_coa_id      := NULL;
44389 l_adr_accounting_coa_id       := NULL;
44390 l_adr_flexfield_segment_code  := NULL;
44391 l_adr_flex_value_set_id       := NULL;
44392 l_adr_value_type_code         := NULL;
44393 l_adr_value_combination_id    := NULL;
44394 l_adr_value_segment_code      := NULL;
44395 
44396 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44397 l_bflow_class_code           := '';    -- 4219869 Business Flow
44398 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44399 l_budgetary_control_flag     := 'N';
44400 
44401 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44402 l_bflow_applied_to_amt       := NULL; -- 5132302
44403 l_entered_amt_idx            := NULL;          -- 4262811
44404 l_accted_amt_idx             := NULL;          -- 4262811
44405 l_acc_rev_flag               := NULL;          -- 4262811
44406 l_accrual_line_num           := NULL;          -- 4262811
44407 l_tmp_amt                    := NULL;          -- 4262811
44408 --
44409  
44410 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44411     l_balance_type_code <> 'B' THEN
44412 
44413    --
44414    XLA_AE_LINES_PKG.SetNewLine;
44415 
44416    p_balance_type_code          := l_balance_type_code;
44417    -- set the flag so later we will know whether the gain loss line needs to be created
44418    
44419    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44420      p_actual_flag :='A';
44421    END IF;
44422 
44423    --
44424    -- bulk performance
44425    --
44426    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44427                                       p_header_num   => 0); -- 4262811
44428    --
44429    -- set accounting line options
44430    --
44431    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44432            p_natural_side_code          => 'C'
44433          , p_gain_or_loss_flag          => 'N'
44434          , p_gl_transfer_mode_code      => 'S'
44435          , p_acct_entry_type_code       => 'A'
44436          , p_switch_side_flag           => 'Y'
44437          , p_merge_duplicate_code       => 'N'
44438          );
44439    --
44440    l_acc_rev_natural_side_code := 'D';  -- 4262811
44441    -- 
44442    --
44443    -- set accounting line type info
44444    --
44445    xla_ae_lines_pkg.SetAcctLineType
44446       (p_component_type             => l_component_type
44447       ,p_event_type_code            => l_event_type_code
44448       ,p_line_definition_owner_code => l_line_definition_owner_code
44449       ,p_line_definition_code       => l_line_definition_code
44450       ,p_accounting_line_code       => l_component_code
44454       ,p_entity_code                => l_entity_code
44451       ,p_accounting_line_type_code  => l_component_type_code
44452       ,p_accounting_line_appl_id    => l_component_appl_id
44453       ,p_amb_context_code           => l_amb_context_code
44455       ,p_event_class_code           => l_event_class_code);
44456    --
44457    -- set accounting class
44458    --
44459    xla_ae_lines_pkg.SetAcctClass(
44460            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
44461          , p_ae_header_id           => l_ae_header_id
44462          );
44463 
44464    --
44465    -- set rounding class
44466    --
44467    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44468                       'FEDERAL_PROJECT_COST_CLEARING';
44469 
44470    --
44471    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44472    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44473    --
44474    -- bulk performance
44475    --
44476    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44477 
44478    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44479       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44480 
44481    -- 4955764
44482    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44483       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44484 
44485    -- 4458381 Public Sector Enh
44486    
44487    --
44488    -- set accounting attributes for the line type
44489    --
44490    l_entered_amt_idx := 22;
44491    l_accted_amt_idx  := 27;
44492    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44493    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
44494    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
44495    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
44496    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
44497    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
44498    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
44499    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
44500    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
44501    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
44502    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
44503    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
44504    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
44505    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
44506    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
44507    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
44508    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
44509    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
44510    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
44511    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
44512    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
44513    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
44514    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
44515    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
44516    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
44517    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
44518    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
44519    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
44520    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
44521    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
44522    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
44523    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
44524    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
44525    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
44526    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
44527    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
44528    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
44529    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
44530    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
44531    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
44532    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
44533    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
44534    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
44535    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
44536    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
44537    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
44538    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
44539    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
44540    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
44541    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
44542    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
44543    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
44544    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
44545    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
44546    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
44547    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
44548    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
44549    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
44550    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
44551    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
44552    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
44553 
44557    ---------------------------------------------------------------------------------------------------------------
44554    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44555    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44556 
44558    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44559    ---------------------------------------------------------------------------------------------------------------
44560    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44561 
44562    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44563    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44564 
44565    IF xla_accounting_cache_pkg.GetValueChar
44566          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44567          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44568    AND l_bflow_method_code = 'PRIOR_ENTRY'
44569 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44570    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44571          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44572        )
44573    THEN
44574          xla_ae_lines_pkg.BflowUpgEntry
44575            (p_business_method_code    => l_bflow_method_code
44576            ,p_business_class_code     => l_bflow_class_code
44577            ,p_balance_type            => l_balance_type_code);
44578    ELSE
44579       NULL;
44580 -- No business flow processing for business flow method of NONE.
44581    END IF;
44582 
44583    --
44584    -- call analytical criteria
44585    --
44586    
44587    --
44588    -- call description
44589    --
44590    -- No description or it is inherited.
44591    --
44592    -- call ADRs
44593    -- Bug 4922099
44594    --
44595    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44596         (NVL(l_actual_upg_option, 'N') = 'O') OR
44597         (NVL(l_enc_upg_option, 'N') = 'O')
44598       )
44599    THEN
44600    NULL;
44601    --
44602    --
44603    
44604   l_ccid := AcctDerRule_15(
44605            p_application_id           => p_application_id
44606          , p_ae_header_id             => l_ae_header_id 
44607 , p_source_5 => p_source_5
44608 , p_source_8 => p_source_8
44609          , x_transaction_coa_id       => l_adr_transaction_coa_id
44610          , x_accounting_coa_id        => l_adr_accounting_coa_id
44611          , x_value_type_code          => l_adr_value_type_code
44612          , p_side                     => 'NA'
44613    );
44614 
44615    xla_ae_lines_pkg.set_ccid(
44616     p_code_combination_id          => l_ccid
44617   , p_value_type_code              => l_adr_value_type_code
44618   , p_transaction_coa_id           => l_adr_transaction_coa_id
44619   , p_accounting_coa_id            => l_adr_accounting_coa_id
44620   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
44621   , p_adr_type_code                => 'S'
44622   , p_component_type               => l_component_type
44623   , p_component_code               => l_component_code
44624   , p_component_type_code          => l_component_type_code
44625   , p_component_appl_id            => l_component_appl_id
44626   , p_amb_context_code             => l_amb_context_code
44627   , p_side                         => 'NA'
44628   );
44629 
44630 
44631    l_segment := AcctDerRule_5(
44632            p_application_id           => p_application_id
44633          , p_ae_header_id             => l_ae_header_id 
44634          , x_transaction_coa_id       => l_adr_transaction_coa_id
44635          , x_accounting_coa_id        => l_adr_accounting_coa_id
44636          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
44637          , x_flex_value_set_id        => l_adr_flex_value_set_id
44638          , x_value_type_code          => l_adr_value_type_code
44639          , x_value_combination_id     => l_adr_value_combination_id
44640          , x_value_segment_code       => l_adr_value_segment_code
44641          , p_side                     => 'NA'
44642          , p_override_seg_flag        => 'Y'
44643    );
44644 
44645    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
44646 
44647       xla_ae_lines_pkg.set_segment(
44648           p_to_segment_code         => 'GL_ACCOUNT'
44649         , p_segment_value           => l_segment
44650         , p_from_segment_code       => l_adr_value_segment_code
44651         , p_from_combination_id     => l_adr_value_combination_id
44652         , p_value_type_code         => l_adr_value_type_code
44653         , p_transaction_coa_id      => l_adr_transaction_coa_id
44654         , p_accounting_coa_id       => l_adr_accounting_coa_id
44655         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
44656         , p_flex_value_set_id       => l_adr_flex_value_set_id
44657         , p_adr_code                => 'FV_490201_PROJECTS'
44658         , p_adr_type_code           => 'S'
44659         , p_component_type          => l_component_type
44660         , p_component_code          => l_component_code
44661         , p_component_type_code     => l_component_type_code
44662         , p_component_appl_id       => l_component_appl_id
44663         , p_amb_context_code        => l_amb_context_code
44664         , p_entity_code             => 'EXPENDITURES'
44665         , p_event_class_code        => 'INVENTORY_COST_ADJ'
44666         , p_side                    => 'NA'
44667         );
44668 
44669   END IF;
44670 
44671    --
44672    --
44673    END IF;
44674    --
44675    -- Bug 4922099
44676    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44677           (NVL(l_enc_upg_option, 'N') = 'O')
44678         ) AND
44679         (l_bflow_method_code = 'PRIOR_ENTRY')
44680       )
44684       1 = 2
44681    THEN
44682       IF
44683       --
44685       --
44686       THEN
44687       xla_accounting_err_pkg.build_message
44688                                     (p_appli_s_name            => 'XLA'
44689                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44690                                     ,p_token_1                 => 'LINE_NUMBER'
44691                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44692                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44693                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44694                                                                              l_component_type
44695                                                                             ,l_component_code
44696                                                                             ,l_component_type_code
44697                                                                             ,l_component_appl_id
44698                                                                             ,l_amb_context_code
44699                                                                             ,l_entity_code
44700                                                                             ,l_event_class_code
44701                                                                            )
44702                                     ,p_token_3                 => 'OWNER'
44703                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44704                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44705                                                                           ,p_lookup_code    => l_component_type_code
44706                                                                          )
44707                                     ,p_token_4                 => 'PRODUCT_NAME'
44708                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44709                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44710                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44711                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44712                                     ,p_ae_header_id            =>  NULL
44713                                        );
44714 
44715         IF (C_LEVEL_ERROR>= g_log_level) THEN
44716                  trace
44717                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44718                       ,p_level    => C_LEVEL_ERROR
44719                       ,p_module   => l_log_module);
44720         END IF;
44721       END IF;
44722    END IF;
44723    --
44724    --
44725    ------------------------------------------------------------------------------------------------
44726    -- 4219869 Business Flow
44727    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44728    -- Prior Entry.  Currently, the following code is always generated.
44729    ------------------------------------------------------------------------------------------------
44730    XLA_AE_LINES_PKG.ValidateCurrentLine;
44731 
44732    ------------------------------------------------------------------------------------
44733    -- 4219869 Business Flow
44734    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44735    ------------------------------------------------------------------------------------
44736    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44737 
44738    ----------------------------------------------------------------------------------
44739    -- 4219869 Business Flow
44740    -- Update journal entry status -- Need to generate this within IF <condition>
44741    ----------------------------------------------------------------------------------
44742    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44743          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44744          ,p_balance_type_code => l_balance_type_code
44745          );
44746 
44747    -------------------------------------------------------------------------------------------
44748    -- 4262811 - Generate the Accrual Reversal lines
44749    -------------------------------------------------------------------------------------------
44750    BEGIN
44751       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44752                               (g_array_event(p_event_id).array_value_num('header_index'));
44753       IF l_acc_rev_flag IS NULL THEN
44754          l_acc_rev_flag := 'N';
44755       END IF;
44756    EXCEPTION
44757       WHEN OTHERS THEN
44758          l_acc_rev_flag := 'N';
44759    END;
44760    --
44761    IF (l_acc_rev_flag = 'Y') THEN
44762 
44763        -- 4645092  ------------------------------------------------------------------------------
44764        -- To allow MPA report to determine if it should generate report process
44765        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44766        ------------------------------------------------------------------------------------------
44767 
44768        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44769        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44770 
44771        --
44772        -- Update the line information that should be overwritten
44773        --
44774        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44775                                          p_header_num   => 1);
44776        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44777 
44778        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44779 
44780        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44784       --
44781           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44782        END IF;
44783 
44785       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44786       --
44787       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44788           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44789       ELSE
44790           ---------------------------------------------------------------------------------------------------
44791           -- 4262811a Switch Sign
44792           ---------------------------------------------------------------------------------------------------
44793           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44794           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44795                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44796           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44797                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44798           -- 5132302
44799           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44800                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44801 
44802       END IF;
44803 
44804       -- 4955764
44805       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44806       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44807 
44808 
44809       XLA_AE_LINES_PKG.ValidateCurrentLine;
44810       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44811 
44812       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44813                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44814                ,p_balance_type_code => l_balance_type_code);
44815 
44816    END IF;
44817 
44818    -----------------------------------------------------------------------------------------
44819    -- 4262811 Multiperiod Accounting
44820    -----------------------------------------------------------------------------------------
44821      -- No MPA option is assigned.
44822 
44823 
44824 END IF;
44825 --
44826 
44827 --
44828 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44829    trace
44830       (p_msg      => 'END of AcctLineType_98'
44831       ,p_level    => C_LEVEL_PROCEDURE
44832       ,p_module   => l_log_module);
44833 END IF;
44834 --
44835 EXCEPTION
44836   WHEN xla_exceptions_pkg.application_exception THEN
44837       RAISE;
44838   WHEN OTHERS THEN
44839        xla_exceptions_pkg.raise_message
44840            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_98');
44841 END AcctLineType_98;
44842 --
44843 
44844 ---------------------------------------
44845 --
44846 -- PRIVATE FUNCTION
44847 --         AcctLineType_99
44848 --
44849 ---------------------------------------
44850 PROCEDURE AcctLineType_99 (
44851   p_application_id        IN NUMBER
44852  ,p_event_id              IN NUMBER
44853  ,p_calculate_acctd_flag  IN VARCHAR2
44854  ,p_calculate_g_l_flag    IN VARCHAR2
44855  ,p_actual_flag           IN OUT VARCHAR2
44856  ,p_balance_type_code     OUT VARCHAR2
44857  ,p_gain_or_loss_ref      OUT VARCHAR2
44858  
44859 --Cost CCID
44860  , p_source_4            IN NUMBER
44861 --Allow Account Override Flag
44862  , p_source_5            IN VARCHAR2
44863 --Cost Clearing CCID
44864  , p_source_7            IN NUMBER
44865 --Adjustment Cost Clearing CCID
44866  , p_source_8            IN NUMBER
44867 --Reversing Line Flag
44868  , p_source_23            IN VARCHAR2
44869 --Actual Upgrade Credit Accounting Class
44870  , p_source_24            IN VARCHAR2
44871 --Entered Raw Cost
44872  , p_source_25            IN NUMBER
44873 --Entered Currency Code
44874  , p_source_26            IN VARCHAR2
44875 --Accounted Raw Cost
44876  , p_source_27            IN NUMBER
44877 --Exchange Rate Date
44878  , p_source_28            IN DATE
44879 --Exchange Rate
44880  , p_source_29            IN NUMBER
44881 --Exchange Rate Type
44882  , p_source_30            IN VARCHAR2
44883 --Actual Upgrade Debit Accounting Class
44884  , p_source_31            IN VARCHAR2
44885 --Use Actuals Upgrade Attributes Flag
44886  , p_source_32            IN VARCHAR2
44887 --Expenditure Item ID
44888  , p_source_33            IN NUMBER
44889 --Cost Distribution Line Number
44890  , p_source_34            IN NUMBER
44891 --Line Type
44892  , p_source_35            IN VARCHAR2
44893  , p_source_35_meaning    IN VARCHAR2
44894 --Reversed Line Number
44895  , p_source_36            IN NUMBER
44896 )
44897 IS
44898 
44899 l_component_type              VARCHAR2(80);
44900 l_component_code              VARCHAR2(30);
44901 l_component_type_code         VARCHAR2(1);
44902 l_component_appl_id           INTEGER;
44903 l_amb_context_code            VARCHAR2(30);
44904 l_entity_code                 VARCHAR2(30);
44905 l_event_class_code            VARCHAR2(30);
44906 l_ae_header_id                NUMBER;
44907 l_event_type_code             VARCHAR2(30);
44908 l_line_definition_code        VARCHAR2(30);
44909 l_line_definition_owner_code  VARCHAR2(1);
44910 --
44911 -- adr variables
44912 l_segment                     VARCHAR2(30);
44913 l_ccid                        NUMBER;
44914 l_adr_transaction_coa_id      NUMBER;
44915 l_adr_accounting_coa_id       NUMBER;
44916 l_adr_flexfield_segment_code  VARCHAR2(30);
44917 l_adr_flex_value_set_id       NUMBER;
44921 
44918 l_adr_value_type_code         VARCHAR2(30);
44919 l_adr_value_combination_id    NUMBER;
44920 l_adr_value_segment_code      VARCHAR2(30);
44922 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44923 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44924 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44925 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44926 
44927 -- 4262811 Variables ------------------------------------------------------------------------------------------
44928 l_entered_amt_idx             NUMBER;
44929 l_accted_amt_idx              NUMBER;
44930 l_acc_rev_flag                VARCHAR2(1);
44931 l_accrual_line_num            NUMBER;
44932 l_tmp_amt                     NUMBER;
44933 l_acc_rev_natural_side_code   VARCHAR2(1);
44934 
44935 l_num_entries                 NUMBER;
44936 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44937 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44938 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44939 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44940 l_recog_line_1                NUMBER;
44941 l_recog_line_2                NUMBER;
44942 
44943 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44944 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44945 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44946 
44947 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44948 
44949 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44950 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44951 
44952 ---------------------------------------------------------------------------------------------------------------
44953 
44954 
44955 --
44956 -- bulk performance
44957 --
44958 l_balance_type_code           VARCHAR2(1);
44959 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44960 l_log_module                  VARCHAR2(240);
44961 
44962 --
44963 -- Upgrade strategy
44964 --
44965 l_actual_upg_option           VARCHAR2(1);
44966 l_enc_upg_option           VARCHAR2(1);
44967 
44968 --
44969 BEGIN
44970 --
44971 IF g_log_enabled THEN
44972       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
44973 END IF;
44974 --
44975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44976 
44977       trace
44978          (p_msg      => 'BEGIN of AcctLineType_99'
44979          ,p_level    => C_LEVEL_PROCEDURE
44980          ,p_module   => l_log_module);
44981 
44982 END IF;
44983 --
44984 l_component_type             := 'AMB_JLT';
44985 l_component_code             := 'PA_RAW_COST_CLEAR_ADJ_FED';
44986 l_component_type_code        := 'S';
44987 l_component_appl_id          :=  275;
44988 l_amb_context_code           := 'DEFAULT';
44989 l_entity_code                := 'EXPENDITURES';
44990 l_event_class_code           := 'MISC_COST_ADJ';
44991 l_event_type_code            := 'MISC_COST_ADJ_ALL';
44992 l_line_definition_owner_code := 'S';
44993 l_line_definition_code       := 'FV_PROJECTS_JLD';
44994 --
44995 l_balance_type_code          := 'A';
44996 l_segment                     := NULL;
44997 l_ccid                        := NULL;
44998 l_adr_transaction_coa_id      := NULL;
44999 l_adr_accounting_coa_id       := NULL;
45000 l_adr_flexfield_segment_code  := NULL;
45001 l_adr_flex_value_set_id       := NULL;
45002 l_adr_value_type_code         := NULL;
45003 l_adr_value_combination_id    := NULL;
45004 l_adr_value_segment_code      := NULL;
45005 
45006 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45007 l_bflow_class_code           := '';    -- 4219869 Business Flow
45008 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45009 l_budgetary_control_flag     := 'N';
45010 
45011 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45012 l_bflow_applied_to_amt       := NULL; -- 5132302
45013 l_entered_amt_idx            := NULL;          -- 4262811
45014 l_accted_amt_idx             := NULL;          -- 4262811
45015 l_acc_rev_flag               := NULL;          -- 4262811
45016 l_accrual_line_num           := NULL;          -- 4262811
45017 l_tmp_amt                    := NULL;          -- 4262811
45018 --
45019  
45020 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45021     l_balance_type_code <> 'B' THEN
45022 
45023    --
45024    XLA_AE_LINES_PKG.SetNewLine;
45025 
45026    p_balance_type_code          := l_balance_type_code;
45027    -- set the flag so later we will know whether the gain loss line needs to be created
45028    
45029    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45030      p_actual_flag :='A';
45031    END IF;
45032 
45033    --
45034    -- bulk performance
45035    --
45036    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45037                                       p_header_num   => 0); -- 4262811
45038    --
45039    -- set accounting line options
45040    --
45041    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45042            p_natural_side_code          => 'C'
45043          , p_gain_or_loss_flag          => 'N'
45044          , p_gl_transfer_mode_code      => 'S'
45045          , p_acct_entry_type_code       => 'A'
45046          , p_switch_side_flag           => 'Y'
45047          , p_merge_duplicate_code       => 'N'
45048          );
45049    --
45050    l_acc_rev_natural_side_code := 'D';  -- 4262811
45051    -- 
45052    --
45053    -- set accounting line type info
45054    --
45055    xla_ae_lines_pkg.SetAcctLineType
45059       ,p_line_definition_code       => l_line_definition_code
45056       (p_component_type             => l_component_type
45057       ,p_event_type_code            => l_event_type_code
45058       ,p_line_definition_owner_code => l_line_definition_owner_code
45060       ,p_accounting_line_code       => l_component_code
45061       ,p_accounting_line_type_code  => l_component_type_code
45062       ,p_accounting_line_appl_id    => l_component_appl_id
45063       ,p_amb_context_code           => l_amb_context_code
45064       ,p_entity_code                => l_entity_code
45065       ,p_event_class_code           => l_event_class_code);
45066    --
45067    -- set accounting class
45068    --
45069    xla_ae_lines_pkg.SetAcctClass(
45070            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
45071          , p_ae_header_id           => l_ae_header_id
45072          );
45073 
45074    --
45075    -- set rounding class
45076    --
45077    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45078                       'FEDERAL_PROJECT_COST_CLEARING';
45079 
45080    --
45081    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45082    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45083    --
45084    -- bulk performance
45085    --
45086    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45087 
45088    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45089       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45090 
45091    -- 4955764
45092    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45093       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45094 
45095    -- 4458381 Public Sector Enh
45096    
45097    --
45098    -- set accounting attributes for the line type
45099    --
45100    l_entered_amt_idx := 22;
45101    l_accted_amt_idx  := 27;
45102    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45103    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
45104    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
45105    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
45106    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
45107    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
45108    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
45109    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
45110    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
45111    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
45112    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
45113    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
45114    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
45115    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
45116    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
45117    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
45118    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
45119    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
45120    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
45121    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
45122    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
45123    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
45124    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
45125    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
45126    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
45127    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
45128    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
45129    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
45130    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
45131    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
45132    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
45133    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
45134    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
45135    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
45136    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
45137    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
45138    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
45139    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
45140    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
45141    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
45142    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
45143    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
45144    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
45145    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
45146    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
45147    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
45148    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
45149    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
45150    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
45151    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
45152    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
45153    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
45154    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
45155    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
45156    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
45157    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
45158    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
45162    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
45159    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
45160    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
45161    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
45163 
45164    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45165    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45166 
45167    ---------------------------------------------------------------------------------------------------------------
45168    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45169    ---------------------------------------------------------------------------------------------------------------
45170    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45171 
45172    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45173    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45174 
45175    IF xla_accounting_cache_pkg.GetValueChar
45176          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45177          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45178    AND l_bflow_method_code = 'PRIOR_ENTRY'
45179 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45180    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45181          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45182        )
45183    THEN
45184          xla_ae_lines_pkg.BflowUpgEntry
45185            (p_business_method_code    => l_bflow_method_code
45186            ,p_business_class_code     => l_bflow_class_code
45187            ,p_balance_type            => l_balance_type_code);
45188    ELSE
45189       NULL;
45190 -- No business flow processing for business flow method of NONE.
45191    END IF;
45192 
45193    --
45194    -- call analytical criteria
45195    --
45196    
45197    --
45198    -- call description
45199    --
45200    -- No description or it is inherited.
45201    --
45202    -- call ADRs
45203    -- Bug 4922099
45204    --
45205    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45206         (NVL(l_actual_upg_option, 'N') = 'O') OR
45207         (NVL(l_enc_upg_option, 'N') = 'O')
45208       )
45209    THEN
45210    NULL;
45211    --
45212    --
45213    
45214   l_ccid := AcctDerRule_15(
45215            p_application_id           => p_application_id
45216          , p_ae_header_id             => l_ae_header_id 
45217 , p_source_5 => p_source_5
45218 , p_source_8 => p_source_8
45219          , x_transaction_coa_id       => l_adr_transaction_coa_id
45220          , x_accounting_coa_id        => l_adr_accounting_coa_id
45221          , x_value_type_code          => l_adr_value_type_code
45222          , p_side                     => 'NA'
45223    );
45224 
45225    xla_ae_lines_pkg.set_ccid(
45226     p_code_combination_id          => l_ccid
45227   , p_value_type_code              => l_adr_value_type_code
45228   , p_transaction_coa_id           => l_adr_transaction_coa_id
45229   , p_accounting_coa_id            => l_adr_accounting_coa_id
45230   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
45231   , p_adr_type_code                => 'S'
45232   , p_component_type               => l_component_type
45233   , p_component_code               => l_component_code
45234   , p_component_type_code          => l_component_type_code
45235   , p_component_appl_id            => l_component_appl_id
45236   , p_amb_context_code             => l_amb_context_code
45237   , p_side                         => 'NA'
45238   );
45239 
45240 
45241    l_segment := AcctDerRule_5(
45242            p_application_id           => p_application_id
45243          , p_ae_header_id             => l_ae_header_id 
45244          , x_transaction_coa_id       => l_adr_transaction_coa_id
45245          , x_accounting_coa_id        => l_adr_accounting_coa_id
45246          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
45247          , x_flex_value_set_id        => l_adr_flex_value_set_id
45248          , x_value_type_code          => l_adr_value_type_code
45249          , x_value_combination_id     => l_adr_value_combination_id
45250          , x_value_segment_code       => l_adr_value_segment_code
45251          , p_side                     => 'NA'
45252          , p_override_seg_flag        => 'Y'
45253    );
45254 
45255    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
45256 
45257       xla_ae_lines_pkg.set_segment(
45258           p_to_segment_code         => 'GL_ACCOUNT'
45259         , p_segment_value           => l_segment
45260         , p_from_segment_code       => l_adr_value_segment_code
45261         , p_from_combination_id     => l_adr_value_combination_id
45262         , p_value_type_code         => l_adr_value_type_code
45263         , p_transaction_coa_id      => l_adr_transaction_coa_id
45264         , p_accounting_coa_id       => l_adr_accounting_coa_id
45265         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
45266         , p_flex_value_set_id       => l_adr_flex_value_set_id
45267         , p_adr_code                => 'FV_490201_PROJECTS'
45268         , p_adr_type_code           => 'S'
45269         , p_component_type          => l_component_type
45270         , p_component_code          => l_component_code
45271         , p_component_type_code     => l_component_type_code
45272         , p_component_appl_id       => l_component_appl_id
45273         , p_amb_context_code        => l_amb_context_code
45274         , p_entity_code             => 'EXPENDITURES'
45275         , p_event_class_code        => 'MISC_COST_ADJ'
45276         , p_side                    => 'NA'
45277         );
45278 
45279   END IF;
45280 
45284    --
45281    --
45282    --
45283    END IF;
45285    -- Bug 4922099
45286    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45287           (NVL(l_enc_upg_option, 'N') = 'O')
45288         ) AND
45289         (l_bflow_method_code = 'PRIOR_ENTRY')
45290       )
45291    THEN
45292       IF
45293       --
45294       1 = 2
45295       --
45296       THEN
45297       xla_accounting_err_pkg.build_message
45298                                     (p_appli_s_name            => 'XLA'
45299                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45300                                     ,p_token_1                 => 'LINE_NUMBER'
45301                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45302                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45303                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45304                                                                              l_component_type
45305                                                                             ,l_component_code
45306                                                                             ,l_component_type_code
45307                                                                             ,l_component_appl_id
45308                                                                             ,l_amb_context_code
45309                                                                             ,l_entity_code
45310                                                                             ,l_event_class_code
45311                                                                            )
45312                                     ,p_token_3                 => 'OWNER'
45313                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45314                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45315                                                                           ,p_lookup_code    => l_component_type_code
45316                                                                          )
45317                                     ,p_token_4                 => 'PRODUCT_NAME'
45318                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45319                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45320                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45321                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45322                                     ,p_ae_header_id            =>  NULL
45323                                        );
45324 
45325         IF (C_LEVEL_ERROR>= g_log_level) THEN
45326                  trace
45327                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45328                       ,p_level    => C_LEVEL_ERROR
45329                       ,p_module   => l_log_module);
45330         END IF;
45331       END IF;
45332    END IF;
45333    --
45334    --
45335    ------------------------------------------------------------------------------------------------
45336    -- 4219869 Business Flow
45337    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45338    -- Prior Entry.  Currently, the following code is always generated.
45339    ------------------------------------------------------------------------------------------------
45340    XLA_AE_LINES_PKG.ValidateCurrentLine;
45341 
45342    ------------------------------------------------------------------------------------
45343    -- 4219869 Business Flow
45344    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45345    ------------------------------------------------------------------------------------
45346    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45347 
45348    ----------------------------------------------------------------------------------
45349    -- 4219869 Business Flow
45350    -- Update journal entry status -- Need to generate this within IF <condition>
45351    ----------------------------------------------------------------------------------
45352    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45353          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45354          ,p_balance_type_code => l_balance_type_code
45355          );
45356 
45357    -------------------------------------------------------------------------------------------
45358    -- 4262811 - Generate the Accrual Reversal lines
45359    -------------------------------------------------------------------------------------------
45360    BEGIN
45361       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45362                               (g_array_event(p_event_id).array_value_num('header_index'));
45363       IF l_acc_rev_flag IS NULL THEN
45364          l_acc_rev_flag := 'N';
45365       END IF;
45366    EXCEPTION
45367       WHEN OTHERS THEN
45368          l_acc_rev_flag := 'N';
45369    END;
45370    --
45371    IF (l_acc_rev_flag = 'Y') THEN
45372 
45373        -- 4645092  ------------------------------------------------------------------------------
45374        -- To allow MPA report to determine if it should generate report process
45375        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45376        ------------------------------------------------------------------------------------------
45377 
45378        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45379        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45380 
45381        --
45382        -- Update the line information that should be overwritten
45383        --
45384        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45385                                          p_header_num   => 1);
45389 
45386        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45387 
45388        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45390        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45391           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45392        END IF;
45393 
45394       --
45395       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45396       --
45397       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45398           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45399       ELSE
45400           ---------------------------------------------------------------------------------------------------
45401           -- 4262811a Switch Sign
45402           ---------------------------------------------------------------------------------------------------
45403           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45404           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45405                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45406           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45407                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45408           -- 5132302
45409           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45410                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45411 
45412       END IF;
45413 
45414       -- 4955764
45415       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45416       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45417 
45418 
45419       XLA_AE_LINES_PKG.ValidateCurrentLine;
45420       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45421 
45422       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45423                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45424                ,p_balance_type_code => l_balance_type_code);
45425 
45426    END IF;
45427 
45428    -----------------------------------------------------------------------------------------
45429    -- 4262811 Multiperiod Accounting
45430    -----------------------------------------------------------------------------------------
45431      -- No MPA option is assigned.
45432 
45433 
45434 END IF;
45435 --
45436 
45437 --
45438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45439    trace
45440       (p_msg      => 'END of AcctLineType_99'
45441       ,p_level    => C_LEVEL_PROCEDURE
45442       ,p_module   => l_log_module);
45443 END IF;
45444 --
45445 EXCEPTION
45446   WHEN xla_exceptions_pkg.application_exception THEN
45447       RAISE;
45448   WHEN OTHERS THEN
45449        xla_exceptions_pkg.raise_message
45450            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_99');
45451 END AcctLineType_99;
45452 --
45453 
45454 ---------------------------------------
45455 --
45456 -- PRIVATE FUNCTION
45457 --         AcctLineType_100
45458 --
45459 ---------------------------------------
45460 PROCEDURE AcctLineType_100 (
45461   p_application_id        IN NUMBER
45462  ,p_event_id              IN NUMBER
45463  ,p_calculate_acctd_flag  IN VARCHAR2
45464  ,p_calculate_g_l_flag    IN VARCHAR2
45465  ,p_actual_flag           IN OUT VARCHAR2
45466  ,p_balance_type_code     OUT VARCHAR2
45467  ,p_gain_or_loss_ref      OUT VARCHAR2
45468  
45469 --Cost CCID
45470  , p_source_4            IN NUMBER
45471 --Allow Account Override Flag
45472  , p_source_5            IN VARCHAR2
45473 --Cost Clearing CCID
45474  , p_source_7            IN NUMBER
45475 --Adjustment Cost Clearing CCID
45476  , p_source_8            IN NUMBER
45477 --Reversing Line Flag
45478  , p_source_23            IN VARCHAR2
45479 --Actual Upgrade Credit Accounting Class
45480  , p_source_24            IN VARCHAR2
45481 --Entered Raw Cost
45482  , p_source_25            IN NUMBER
45483 --Entered Currency Code
45484  , p_source_26            IN VARCHAR2
45485 --Accounted Raw Cost
45486  , p_source_27            IN NUMBER
45487 --Exchange Rate Date
45488  , p_source_28            IN DATE
45489 --Exchange Rate
45490  , p_source_29            IN NUMBER
45491 --Exchange Rate Type
45492  , p_source_30            IN VARCHAR2
45493 --Actual Upgrade Debit Accounting Class
45494  , p_source_31            IN VARCHAR2
45495 --Use Actuals Upgrade Attributes Flag
45496  , p_source_32            IN VARCHAR2
45497 --Expenditure Item ID
45498  , p_source_33            IN NUMBER
45499 --Cost Distribution Line Number
45500  , p_source_34            IN NUMBER
45501 --Line Type
45502  , p_source_35            IN VARCHAR2
45503  , p_source_35_meaning    IN VARCHAR2
45504 --Reversed Line Number
45505  , p_source_36            IN NUMBER
45506 )
45507 IS
45508 
45509 l_component_type              VARCHAR2(80);
45510 l_component_code              VARCHAR2(30);
45511 l_component_type_code         VARCHAR2(1);
45512 l_component_appl_id           INTEGER;
45513 l_amb_context_code            VARCHAR2(30);
45514 l_entity_code                 VARCHAR2(30);
45515 l_event_class_code            VARCHAR2(30);
45516 l_ae_header_id                NUMBER;
45517 l_event_type_code             VARCHAR2(30);
45518 l_line_definition_code        VARCHAR2(30);
45519 l_line_definition_owner_code  VARCHAR2(1);
45520 --
45521 -- adr variables
45525 l_adr_accounting_coa_id       NUMBER;
45522 l_segment                     VARCHAR2(30);
45523 l_ccid                        NUMBER;
45524 l_adr_transaction_coa_id      NUMBER;
45526 l_adr_flexfield_segment_code  VARCHAR2(30);
45527 l_adr_flex_value_set_id       NUMBER;
45528 l_adr_value_type_code         VARCHAR2(30);
45529 l_adr_value_combination_id    NUMBER;
45530 l_adr_value_segment_code      VARCHAR2(30);
45531 
45532 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45533 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45534 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45535 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45536 
45537 -- 4262811 Variables ------------------------------------------------------------------------------------------
45538 l_entered_amt_idx             NUMBER;
45539 l_accted_amt_idx              NUMBER;
45540 l_acc_rev_flag                VARCHAR2(1);
45541 l_accrual_line_num            NUMBER;
45542 l_tmp_amt                     NUMBER;
45543 l_acc_rev_natural_side_code   VARCHAR2(1);
45544 
45545 l_num_entries                 NUMBER;
45546 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45547 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45548 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45549 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45550 l_recog_line_1                NUMBER;
45551 l_recog_line_2                NUMBER;
45552 
45553 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45554 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45555 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45556 
45557 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45558 
45559 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45560 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45561 
45562 ---------------------------------------------------------------------------------------------------------------
45563 
45564 
45565 --
45566 -- bulk performance
45567 --
45568 l_balance_type_code           VARCHAR2(1);
45569 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45570 l_log_module                  VARCHAR2(240);
45571 
45572 --
45573 -- Upgrade strategy
45574 --
45575 l_actual_upg_option           VARCHAR2(1);
45576 l_enc_upg_option           VARCHAR2(1);
45577 
45578 --
45579 BEGIN
45580 --
45581 IF g_log_enabled THEN
45582       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
45583 END IF;
45584 --
45585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45586 
45587       trace
45588          (p_msg      => 'BEGIN of AcctLineType_100'
45589          ,p_level    => C_LEVEL_PROCEDURE
45590          ,p_module   => l_log_module);
45591 
45592 END IF;
45593 --
45594 l_component_type             := 'AMB_JLT';
45595 l_component_code             := 'PA_RAW_COST_CLEAR_ADJ_FED';
45596 l_component_type_code        := 'S';
45597 l_component_appl_id          :=  275;
45598 l_amb_context_code           := 'DEFAULT';
45599 l_entity_code                := 'EXPENDITURES';
45600 l_event_class_code           := 'WIP_COST_ADJ';
45601 l_event_type_code            := 'WIP_COST_ADJ_ALL';
45602 l_line_definition_owner_code := 'S';
45603 l_line_definition_code       := 'FV_PROJECTS_JLD';
45604 --
45605 l_balance_type_code          := 'A';
45606 l_segment                     := NULL;
45607 l_ccid                        := NULL;
45608 l_adr_transaction_coa_id      := NULL;
45609 l_adr_accounting_coa_id       := NULL;
45610 l_adr_flexfield_segment_code  := NULL;
45611 l_adr_flex_value_set_id       := NULL;
45612 l_adr_value_type_code         := NULL;
45613 l_adr_value_combination_id    := NULL;
45614 l_adr_value_segment_code      := NULL;
45615 
45616 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45617 l_bflow_class_code           := '';    -- 4219869 Business Flow
45618 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45619 l_budgetary_control_flag     := 'N';
45620 
45621 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45622 l_bflow_applied_to_amt       := NULL; -- 5132302
45623 l_entered_amt_idx            := NULL;          -- 4262811
45624 l_accted_amt_idx             := NULL;          -- 4262811
45625 l_acc_rev_flag               := NULL;          -- 4262811
45626 l_accrual_line_num           := NULL;          -- 4262811
45627 l_tmp_amt                    := NULL;          -- 4262811
45628 --
45629  
45630 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45631     l_balance_type_code <> 'B' THEN
45632 
45633    --
45634    XLA_AE_LINES_PKG.SetNewLine;
45635 
45636    p_balance_type_code          := l_balance_type_code;
45637    -- set the flag so later we will know whether the gain loss line needs to be created
45638    
45639    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45640      p_actual_flag :='A';
45641    END IF;
45642 
45643    --
45644    -- bulk performance
45645    --
45646    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45647                                       p_header_num   => 0); -- 4262811
45648    --
45649    -- set accounting line options
45650    --
45651    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45652            p_natural_side_code          => 'C'
45653          , p_gain_or_loss_flag          => 'N'
45654          , p_gl_transfer_mode_code      => 'S'
45655          , p_acct_entry_type_code       => 'A'
45656          , p_switch_side_flag           => 'Y'
45657          , p_merge_duplicate_code       => 'N'
45661    -- 
45658          );
45659    --
45660    l_acc_rev_natural_side_code := 'D';  -- 4262811
45662    --
45663    -- set accounting line type info
45664    --
45665    xla_ae_lines_pkg.SetAcctLineType
45666       (p_component_type             => l_component_type
45667       ,p_event_type_code            => l_event_type_code
45668       ,p_line_definition_owner_code => l_line_definition_owner_code
45669       ,p_line_definition_code       => l_line_definition_code
45670       ,p_accounting_line_code       => l_component_code
45671       ,p_accounting_line_type_code  => l_component_type_code
45672       ,p_accounting_line_appl_id    => l_component_appl_id
45673       ,p_amb_context_code           => l_amb_context_code
45674       ,p_entity_code                => l_entity_code
45675       ,p_event_class_code           => l_event_class_code);
45676    --
45677    -- set accounting class
45678    --
45679    xla_ae_lines_pkg.SetAcctClass(
45680            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
45681          , p_ae_header_id           => l_ae_header_id
45682          );
45683 
45684    --
45685    -- set rounding class
45686    --
45687    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45688                       'FEDERAL_PROJECT_COST_CLEARING';
45689 
45690    --
45691    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45692    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45693    --
45694    -- bulk performance
45695    --
45696    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45697 
45698    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45699       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45700 
45701    -- 4955764
45702    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45703       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45704 
45705    -- 4458381 Public Sector Enh
45706    
45707    --
45708    -- set accounting attributes for the line type
45709    --
45710    l_entered_amt_idx := 22;
45711    l_accted_amt_idx  := 27;
45712    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45713    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
45714    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
45715    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
45716    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
45717    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
45718    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
45719    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
45720    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
45721    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
45722    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
45723    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
45724    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
45725    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
45726    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
45727    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
45728    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
45729    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
45730    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
45731    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
45732    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
45733    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
45734    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
45735    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
45736    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
45737    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
45738    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
45739    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
45740    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
45741    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
45742    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
45743    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
45744    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
45745    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
45746    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
45747    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
45748    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
45749    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
45750    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
45751    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
45752    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
45753    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
45754    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
45755    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
45756    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
45757    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
45758    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
45759    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
45760    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
45761    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
45762    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
45763    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
45764    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
45768    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
45765    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
45766    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
45767    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
45769    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
45770    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
45771    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
45772    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
45773 
45774    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45775    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45776 
45777    ---------------------------------------------------------------------------------------------------------------
45778    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45779    ---------------------------------------------------------------------------------------------------------------
45780    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45781 
45782    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45783    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45784 
45785    IF xla_accounting_cache_pkg.GetValueChar
45786          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45787          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45788    AND l_bflow_method_code = 'PRIOR_ENTRY'
45789 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45790    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45791          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45792        )
45793    THEN
45794          xla_ae_lines_pkg.BflowUpgEntry
45795            (p_business_method_code    => l_bflow_method_code
45796            ,p_business_class_code     => l_bflow_class_code
45797            ,p_balance_type            => l_balance_type_code);
45798    ELSE
45799       NULL;
45800 -- No business flow processing for business flow method of NONE.
45801    END IF;
45802 
45803    --
45804    -- call analytical criteria
45805    --
45806    
45807    --
45808    -- call description
45809    --
45810    -- No description or it is inherited.
45811    --
45812    -- call ADRs
45813    -- Bug 4922099
45814    --
45815    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45816         (NVL(l_actual_upg_option, 'N') = 'O') OR
45817         (NVL(l_enc_upg_option, 'N') = 'O')
45818       )
45819    THEN
45820    NULL;
45821    --
45822    --
45823    
45824   l_ccid := AcctDerRule_15(
45825            p_application_id           => p_application_id
45826          , p_ae_header_id             => l_ae_header_id 
45827 , p_source_5 => p_source_5
45828 , p_source_8 => p_source_8
45829          , x_transaction_coa_id       => l_adr_transaction_coa_id
45830          , x_accounting_coa_id        => l_adr_accounting_coa_id
45831          , x_value_type_code          => l_adr_value_type_code
45832          , p_side                     => 'NA'
45833    );
45834 
45835    xla_ae_lines_pkg.set_ccid(
45836     p_code_combination_id          => l_ccid
45837   , p_value_type_code              => l_adr_value_type_code
45838   , p_transaction_coa_id           => l_adr_transaction_coa_id
45839   , p_accounting_coa_id            => l_adr_accounting_coa_id
45840   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
45841   , p_adr_type_code                => 'S'
45842   , p_component_type               => l_component_type
45843   , p_component_code               => l_component_code
45844   , p_component_type_code          => l_component_type_code
45845   , p_component_appl_id            => l_component_appl_id
45846   , p_amb_context_code             => l_amb_context_code
45847   , p_side                         => 'NA'
45848   );
45849 
45850 
45851    l_segment := AcctDerRule_5(
45852            p_application_id           => p_application_id
45853          , p_ae_header_id             => l_ae_header_id 
45854          , x_transaction_coa_id       => l_adr_transaction_coa_id
45855          , x_accounting_coa_id        => l_adr_accounting_coa_id
45856          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
45857          , x_flex_value_set_id        => l_adr_flex_value_set_id
45858          , x_value_type_code          => l_adr_value_type_code
45859          , x_value_combination_id     => l_adr_value_combination_id
45860          , x_value_segment_code       => l_adr_value_segment_code
45861          , p_side                     => 'NA'
45862          , p_override_seg_flag        => 'Y'
45863    );
45864 
45865    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
45866 
45867       xla_ae_lines_pkg.set_segment(
45868           p_to_segment_code         => 'GL_ACCOUNT'
45869         , p_segment_value           => l_segment
45870         , p_from_segment_code       => l_adr_value_segment_code
45871         , p_from_combination_id     => l_adr_value_combination_id
45872         , p_value_type_code         => l_adr_value_type_code
45873         , p_transaction_coa_id      => l_adr_transaction_coa_id
45874         , p_accounting_coa_id       => l_adr_accounting_coa_id
45875         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
45876         , p_flex_value_set_id       => l_adr_flex_value_set_id
45877         , p_adr_code                => 'FV_490201_PROJECTS'
45878         , p_adr_type_code           => 'S'
45879         , p_component_type          => l_component_type
45880         , p_component_code          => l_component_code
45881         , p_component_type_code     => l_component_type_code
45882         , p_component_appl_id       => l_component_appl_id
45886         , p_side                    => 'NA'
45883         , p_amb_context_code        => l_amb_context_code
45884         , p_entity_code             => 'EXPENDITURES'
45885         , p_event_class_code        => 'WIP_COST_ADJ'
45887         );
45888 
45889   END IF;
45890 
45891    --
45892    --
45893    END IF;
45894    --
45895    -- Bug 4922099
45896    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45897           (NVL(l_enc_upg_option, 'N') = 'O')
45898         ) AND
45899         (l_bflow_method_code = 'PRIOR_ENTRY')
45900       )
45901    THEN
45902       IF
45903       --
45904       1 = 2
45905       --
45906       THEN
45907       xla_accounting_err_pkg.build_message
45908                                     (p_appli_s_name            => 'XLA'
45909                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45910                                     ,p_token_1                 => 'LINE_NUMBER'
45911                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45912                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45913                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45914                                                                              l_component_type
45915                                                                             ,l_component_code
45916                                                                             ,l_component_type_code
45917                                                                             ,l_component_appl_id
45918                                                                             ,l_amb_context_code
45919                                                                             ,l_entity_code
45920                                                                             ,l_event_class_code
45921                                                                            )
45922                                     ,p_token_3                 => 'OWNER'
45923                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45924                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45925                                                                           ,p_lookup_code    => l_component_type_code
45926                                                                          )
45927                                     ,p_token_4                 => 'PRODUCT_NAME'
45928                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45929                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45930                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45931                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45932                                     ,p_ae_header_id            =>  NULL
45933                                        );
45934 
45935         IF (C_LEVEL_ERROR>= g_log_level) THEN
45936                  trace
45937                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45938                       ,p_level    => C_LEVEL_ERROR
45939                       ,p_module   => l_log_module);
45940         END IF;
45941       END IF;
45942    END IF;
45943    --
45944    --
45945    ------------------------------------------------------------------------------------------------
45946    -- 4219869 Business Flow
45947    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45948    -- Prior Entry.  Currently, the following code is always generated.
45949    ------------------------------------------------------------------------------------------------
45950    XLA_AE_LINES_PKG.ValidateCurrentLine;
45951 
45952    ------------------------------------------------------------------------------------
45953    -- 4219869 Business Flow
45954    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45955    ------------------------------------------------------------------------------------
45956    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45957 
45958    ----------------------------------------------------------------------------------
45959    -- 4219869 Business Flow
45960    -- Update journal entry status -- Need to generate this within IF <condition>
45961    ----------------------------------------------------------------------------------
45962    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45963          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45964          ,p_balance_type_code => l_balance_type_code
45965          );
45966 
45967    -------------------------------------------------------------------------------------------
45968    -- 4262811 - Generate the Accrual Reversal lines
45969    -------------------------------------------------------------------------------------------
45970    BEGIN
45971       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45972                               (g_array_event(p_event_id).array_value_num('header_index'));
45973       IF l_acc_rev_flag IS NULL THEN
45974          l_acc_rev_flag := 'N';
45975       END IF;
45976    EXCEPTION
45977       WHEN OTHERS THEN
45978          l_acc_rev_flag := 'N';
45979    END;
45980    --
45981    IF (l_acc_rev_flag = 'Y') THEN
45982 
45983        -- 4645092  ------------------------------------------------------------------------------
45984        -- To allow MPA report to determine if it should generate report process
45985        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45986        ------------------------------------------------------------------------------------------
45987 
45988        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45992        -- Update the line information that should be overwritten
45989        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45990 
45991        --
45993        --
45994        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45995                                          p_header_num   => 1);
45996        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45997 
45998        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45999 
46000        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46001           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46002        END IF;
46003 
46004       --
46005       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46006       --
46007       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46008           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46009       ELSE
46010           ---------------------------------------------------------------------------------------------------
46011           -- 4262811a Switch Sign
46012           ---------------------------------------------------------------------------------------------------
46013           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46014           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46015                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46016           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46017                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46018           -- 5132302
46019           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46020                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46021 
46022       END IF;
46023 
46024       -- 4955764
46025       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46026       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46027 
46028 
46029       XLA_AE_LINES_PKG.ValidateCurrentLine;
46030       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46031 
46032       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46033                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46034                ,p_balance_type_code => l_balance_type_code);
46035 
46036    END IF;
46037 
46038    -----------------------------------------------------------------------------------------
46039    -- 4262811 Multiperiod Accounting
46040    -----------------------------------------------------------------------------------------
46041      -- No MPA option is assigned.
46042 
46043 
46044 END IF;
46045 --
46046 
46047 --
46048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46049    trace
46050       (p_msg      => 'END of AcctLineType_100'
46051       ,p_level    => C_LEVEL_PROCEDURE
46052       ,p_module   => l_log_module);
46053 END IF;
46054 --
46055 EXCEPTION
46056   WHEN xla_exceptions_pkg.application_exception THEN
46057       RAISE;
46058   WHEN OTHERS THEN
46059        xla_exceptions_pkg.raise_message
46060            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_100');
46061 END AcctLineType_100;
46062 --
46063 
46064 ---------------------------------------
46065 --
46066 -- PRIVATE FUNCTION
46067 --         AcctLineType_101
46068 --
46069 ---------------------------------------
46070 PROCEDURE AcctLineType_101 (
46071   p_application_id        IN NUMBER
46072  ,p_event_id              IN NUMBER
46073  ,p_calculate_acctd_flag  IN VARCHAR2
46074  ,p_calculate_g_l_flag    IN VARCHAR2
46075  ,p_actual_flag           IN OUT VARCHAR2
46076  ,p_balance_type_code     OUT VARCHAR2
46077  ,p_gain_or_loss_ref      OUT VARCHAR2
46078  
46079 --Cost CCID
46080  , p_source_4            IN NUMBER
46081 --Allow Account Override Flag
46082  , p_source_5            IN VARCHAR2
46083 --Cost Clearing CCID
46084  , p_source_7            IN NUMBER
46085 --Adjustment Cost Clearing CCID
46086  , p_source_8            IN NUMBER
46087 --Reversing Line Flag
46088  , p_source_23            IN VARCHAR2
46089 --Actual Upgrade Credit Accounting Class
46090  , p_source_24            IN VARCHAR2
46091 --Entered Raw Cost
46092  , p_source_25            IN NUMBER
46093 --Entered Currency Code
46094  , p_source_26            IN VARCHAR2
46095 --Accounted Raw Cost
46096  , p_source_27            IN NUMBER
46097 --Exchange Rate Date
46098  , p_source_28            IN DATE
46099 --Exchange Rate
46100  , p_source_29            IN NUMBER
46101 --Exchange Rate Type
46102  , p_source_30            IN VARCHAR2
46103 --Actual Upgrade Debit Accounting Class
46104  , p_source_31            IN VARCHAR2
46105 --Use Actuals Upgrade Attributes Flag
46106  , p_source_32            IN VARCHAR2
46107 --Expenditure Item ID
46108  , p_source_33            IN NUMBER
46109 --Cost Distribution Line Number
46110  , p_source_34            IN NUMBER
46111 --Line Type
46112  , p_source_35            IN VARCHAR2
46113  , p_source_35_meaning    IN VARCHAR2
46114 --Reversed Line Number
46115  , p_source_36            IN NUMBER
46116 )
46117 IS
46118 
46119 l_component_type              VARCHAR2(80);
46120 l_component_code              VARCHAR2(30);
46121 l_component_type_code         VARCHAR2(1);
46122 l_component_appl_id           INTEGER;
46123 l_amb_context_code            VARCHAR2(30);
46127 l_event_type_code             VARCHAR2(30);
46124 l_entity_code                 VARCHAR2(30);
46125 l_event_class_code            VARCHAR2(30);
46126 l_ae_header_id                NUMBER;
46128 l_line_definition_code        VARCHAR2(30);
46129 l_line_definition_owner_code  VARCHAR2(1);
46130 --
46131 -- adr variables
46132 l_segment                     VARCHAR2(30);
46133 l_ccid                        NUMBER;
46134 l_adr_transaction_coa_id      NUMBER;
46135 l_adr_accounting_coa_id       NUMBER;
46136 l_adr_flexfield_segment_code  VARCHAR2(30);
46137 l_adr_flex_value_set_id       NUMBER;
46138 l_adr_value_type_code         VARCHAR2(30);
46139 l_adr_value_combination_id    NUMBER;
46140 l_adr_value_segment_code      VARCHAR2(30);
46141 
46142 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46143 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46144 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46145 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46146 
46147 -- 4262811 Variables ------------------------------------------------------------------------------------------
46148 l_entered_amt_idx             NUMBER;
46149 l_accted_amt_idx              NUMBER;
46150 l_acc_rev_flag                VARCHAR2(1);
46151 l_accrual_line_num            NUMBER;
46152 l_tmp_amt                     NUMBER;
46153 l_acc_rev_natural_side_code   VARCHAR2(1);
46154 
46155 l_num_entries                 NUMBER;
46156 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46157 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46158 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46159 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46160 l_recog_line_1                NUMBER;
46161 l_recog_line_2                NUMBER;
46162 
46163 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46164 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46165 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46166 
46167 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46168 
46169 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46170 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46171 
46172 ---------------------------------------------------------------------------------------------------------------
46173 
46174 
46175 --
46176 -- bulk performance
46177 --
46178 l_balance_type_code           VARCHAR2(1);
46179 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46180 l_log_module                  VARCHAR2(240);
46181 
46182 --
46183 -- Upgrade strategy
46184 --
46185 l_actual_upg_option           VARCHAR2(1);
46186 l_enc_upg_option           VARCHAR2(1);
46187 
46188 --
46189 BEGIN
46190 --
46191 IF g_log_enabled THEN
46192       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
46193 END IF;
46194 --
46195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46196 
46197       trace
46198          (p_msg      => 'BEGIN of AcctLineType_101'
46199          ,p_level    => C_LEVEL_PROCEDURE
46200          ,p_module   => l_log_module);
46201 
46202 END IF;
46203 --
46204 l_component_type             := 'AMB_JLT';
46205 l_component_code             := 'PA_RAW_COST_CLEAR_ADJ_FED';
46206 l_component_type_code        := 'S';
46207 l_component_appl_id          :=  275;
46208 l_amb_context_code           := 'DEFAULT';
46209 l_entity_code                := 'EXPENDITURES';
46210 l_event_class_code           := 'USG_COST_ADJ';
46211 l_event_type_code            := 'USG_COST_ADJ_ALL';
46212 l_line_definition_owner_code := 'S';
46213 l_line_definition_code       := 'FV_PROJECTS_JLD';
46214 --
46215 l_balance_type_code          := 'A';
46216 l_segment                     := NULL;
46217 l_ccid                        := NULL;
46218 l_adr_transaction_coa_id      := NULL;
46219 l_adr_accounting_coa_id       := NULL;
46220 l_adr_flexfield_segment_code  := NULL;
46221 l_adr_flex_value_set_id       := NULL;
46222 l_adr_value_type_code         := NULL;
46223 l_adr_value_combination_id    := NULL;
46224 l_adr_value_segment_code      := NULL;
46225 
46226 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46227 l_bflow_class_code           := '';    -- 4219869 Business Flow
46228 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46229 l_budgetary_control_flag     := 'N';
46230 
46231 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46232 l_bflow_applied_to_amt       := NULL; -- 5132302
46233 l_entered_amt_idx            := NULL;          -- 4262811
46234 l_accted_amt_idx             := NULL;          -- 4262811
46235 l_acc_rev_flag               := NULL;          -- 4262811
46236 l_accrual_line_num           := NULL;          -- 4262811
46237 l_tmp_amt                    := NULL;          -- 4262811
46238 --
46239  
46240 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46241     l_balance_type_code <> 'B' THEN
46242 
46243    --
46244    XLA_AE_LINES_PKG.SetNewLine;
46245 
46246    p_balance_type_code          := l_balance_type_code;
46247    -- set the flag so later we will know whether the gain loss line needs to be created
46248    
46249    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46250      p_actual_flag :='A';
46251    END IF;
46252 
46253    --
46254    -- bulk performance
46255    --
46256    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46257                                       p_header_num   => 0); -- 4262811
46258    --
46259    -- set accounting line options
46260    --
46264          , p_gl_transfer_mode_code      => 'S'
46261    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46262            p_natural_side_code          => 'C'
46263          , p_gain_or_loss_flag          => 'N'
46265          , p_acct_entry_type_code       => 'A'
46266          , p_switch_side_flag           => 'Y'
46267          , p_merge_duplicate_code       => 'N'
46268          );
46269    --
46270    l_acc_rev_natural_side_code := 'D';  -- 4262811
46271    -- 
46272    --
46273    -- set accounting line type info
46274    --
46275    xla_ae_lines_pkg.SetAcctLineType
46276       (p_component_type             => l_component_type
46277       ,p_event_type_code            => l_event_type_code
46278       ,p_line_definition_owner_code => l_line_definition_owner_code
46279       ,p_line_definition_code       => l_line_definition_code
46280       ,p_accounting_line_code       => l_component_code
46281       ,p_accounting_line_type_code  => l_component_type_code
46282       ,p_accounting_line_appl_id    => l_component_appl_id
46283       ,p_amb_context_code           => l_amb_context_code
46284       ,p_entity_code                => l_entity_code
46285       ,p_event_class_code           => l_event_class_code);
46286    --
46287    -- set accounting class
46288    --
46289    xla_ae_lines_pkg.SetAcctClass(
46290            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
46291          , p_ae_header_id           => l_ae_header_id
46292          );
46293 
46294    --
46295    -- set rounding class
46296    --
46297    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46298                       'FEDERAL_PROJECT_COST_CLEARING';
46299 
46300    --
46301    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46302    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46303    --
46304    -- bulk performance
46305    --
46306    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46307 
46308    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46309       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46310 
46311    -- 4955764
46312    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46313       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46314 
46315    -- 4458381 Public Sector Enh
46316    
46317    --
46318    -- set accounting attributes for the line type
46319    --
46320    l_entered_amt_idx := 22;
46321    l_accted_amt_idx  := 27;
46322    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46323    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46324    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
46325    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
46326    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
46327    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
46328    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
46329    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
46330    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
46331    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
46332    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
46333    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
46334    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
46335    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
46336    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
46337    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
46338    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
46339    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
46340    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
46341    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
46342    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
46343    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
46344    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
46345    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
46346    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
46347    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
46348    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
46349    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
46350    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
46351    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
46352    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
46353    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
46354    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
46355    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
46356    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
46357    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
46358    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
46359    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
46360    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
46361    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
46362    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
46363    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
46364    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
46365    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
46366    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
46367    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
46368    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
46369    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
46373    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
46370    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
46371    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
46372    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
46374    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
46375    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
46376    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
46377    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
46378    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
46379    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
46380    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
46381    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
46382    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
46383 
46384    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46385    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46386 
46387    ---------------------------------------------------------------------------------------------------------------
46388    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46389    ---------------------------------------------------------------------------------------------------------------
46390    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46391 
46392    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46393    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46394 
46395    IF xla_accounting_cache_pkg.GetValueChar
46396          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46397          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46398    AND l_bflow_method_code = 'PRIOR_ENTRY'
46399 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46400    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46401          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46402        )
46403    THEN
46404          xla_ae_lines_pkg.BflowUpgEntry
46405            (p_business_method_code    => l_bflow_method_code
46406            ,p_business_class_code     => l_bflow_class_code
46407            ,p_balance_type            => l_balance_type_code);
46408    ELSE
46409       NULL;
46410 -- No business flow processing for business flow method of NONE.
46411    END IF;
46412 
46413    --
46414    -- call analytical criteria
46415    --
46416    
46417    --
46418    -- call description
46419    --
46420    -- No description or it is inherited.
46421    --
46422    -- call ADRs
46423    -- Bug 4922099
46424    --
46425    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46426         (NVL(l_actual_upg_option, 'N') = 'O') OR
46427         (NVL(l_enc_upg_option, 'N') = 'O')
46428       )
46429    THEN
46430    NULL;
46431    --
46432    --
46433    
46434   l_ccid := AcctDerRule_15(
46435            p_application_id           => p_application_id
46436          , p_ae_header_id             => l_ae_header_id 
46437 , p_source_5 => p_source_5
46438 , p_source_8 => p_source_8
46439          , x_transaction_coa_id       => l_adr_transaction_coa_id
46440          , x_accounting_coa_id        => l_adr_accounting_coa_id
46441          , x_value_type_code          => l_adr_value_type_code
46442          , p_side                     => 'NA'
46443    );
46444 
46445    xla_ae_lines_pkg.set_ccid(
46446     p_code_combination_id          => l_ccid
46447   , p_value_type_code              => l_adr_value_type_code
46448   , p_transaction_coa_id           => l_adr_transaction_coa_id
46449   , p_accounting_coa_id            => l_adr_accounting_coa_id
46450   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
46451   , p_adr_type_code                => 'S'
46452   , p_component_type               => l_component_type
46453   , p_component_code               => l_component_code
46454   , p_component_type_code          => l_component_type_code
46455   , p_component_appl_id            => l_component_appl_id
46456   , p_amb_context_code             => l_amb_context_code
46457   , p_side                         => 'NA'
46458   );
46459 
46460 
46461    l_segment := AcctDerRule_5(
46462            p_application_id           => p_application_id
46463          , p_ae_header_id             => l_ae_header_id 
46464          , x_transaction_coa_id       => l_adr_transaction_coa_id
46465          , x_accounting_coa_id        => l_adr_accounting_coa_id
46466          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
46467          , x_flex_value_set_id        => l_adr_flex_value_set_id
46468          , x_value_type_code          => l_adr_value_type_code
46469          , x_value_combination_id     => l_adr_value_combination_id
46470          , x_value_segment_code       => l_adr_value_segment_code
46471          , p_side                     => 'NA'
46472          , p_override_seg_flag        => 'Y'
46473    );
46474 
46475    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
46476 
46477       xla_ae_lines_pkg.set_segment(
46478           p_to_segment_code         => 'GL_ACCOUNT'
46479         , p_segment_value           => l_segment
46480         , p_from_segment_code       => l_adr_value_segment_code
46481         , p_from_combination_id     => l_adr_value_combination_id
46482         , p_value_type_code         => l_adr_value_type_code
46483         , p_transaction_coa_id      => l_adr_transaction_coa_id
46484         , p_accounting_coa_id       => l_adr_accounting_coa_id
46485         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
46486         , p_flex_value_set_id       => l_adr_flex_value_set_id
46487         , p_adr_code                => 'FV_490201_PROJECTS'
46491         , p_component_type_code     => l_component_type_code
46488         , p_adr_type_code           => 'S'
46489         , p_component_type          => l_component_type
46490         , p_component_code          => l_component_code
46492         , p_component_appl_id       => l_component_appl_id
46493         , p_amb_context_code        => l_amb_context_code
46494         , p_entity_code             => 'EXPENDITURES'
46495         , p_event_class_code        => 'USG_COST_ADJ'
46496         , p_side                    => 'NA'
46497         );
46498 
46499   END IF;
46500 
46501    --
46502    --
46503    END IF;
46504    --
46505    -- Bug 4922099
46506    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46507           (NVL(l_enc_upg_option, 'N') = 'O')
46508         ) AND
46509         (l_bflow_method_code = 'PRIOR_ENTRY')
46510       )
46511    THEN
46512       IF
46513       --
46514       1 = 2
46515       --
46516       THEN
46517       xla_accounting_err_pkg.build_message
46518                                     (p_appli_s_name            => 'XLA'
46519                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46520                                     ,p_token_1                 => 'LINE_NUMBER'
46521                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46522                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46523                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46524                                                                              l_component_type
46525                                                                             ,l_component_code
46526                                                                             ,l_component_type_code
46527                                                                             ,l_component_appl_id
46528                                                                             ,l_amb_context_code
46529                                                                             ,l_entity_code
46530                                                                             ,l_event_class_code
46531                                                                            )
46532                                     ,p_token_3                 => 'OWNER'
46533                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46534                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46535                                                                           ,p_lookup_code    => l_component_type_code
46536                                                                          )
46537                                     ,p_token_4                 => 'PRODUCT_NAME'
46538                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46539                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46540                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46541                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46542                                     ,p_ae_header_id            =>  NULL
46543                                        );
46544 
46545         IF (C_LEVEL_ERROR>= g_log_level) THEN
46546                  trace
46547                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46548                       ,p_level    => C_LEVEL_ERROR
46549                       ,p_module   => l_log_module);
46550         END IF;
46551       END IF;
46552    END IF;
46553    --
46554    --
46555    ------------------------------------------------------------------------------------------------
46556    -- 4219869 Business Flow
46557    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46558    -- Prior Entry.  Currently, the following code is always generated.
46559    ------------------------------------------------------------------------------------------------
46560    XLA_AE_LINES_PKG.ValidateCurrentLine;
46561 
46562    ------------------------------------------------------------------------------------
46563    -- 4219869 Business Flow
46564    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46565    ------------------------------------------------------------------------------------
46566    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46567 
46568    ----------------------------------------------------------------------------------
46569    -- 4219869 Business Flow
46570    -- Update journal entry status -- Need to generate this within IF <condition>
46571    ----------------------------------------------------------------------------------
46572    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46573          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46574          ,p_balance_type_code => l_balance_type_code
46575          );
46576 
46577    -------------------------------------------------------------------------------------------
46578    -- 4262811 - Generate the Accrual Reversal lines
46579    -------------------------------------------------------------------------------------------
46580    BEGIN
46581       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46582                               (g_array_event(p_event_id).array_value_num('header_index'));
46583       IF l_acc_rev_flag IS NULL THEN
46584          l_acc_rev_flag := 'N';
46585       END IF;
46586    EXCEPTION
46587       WHEN OTHERS THEN
46588          l_acc_rev_flag := 'N';
46589    END;
46590    --
46591    IF (l_acc_rev_flag = 'Y') THEN
46592 
46593        -- 4645092  ------------------------------------------------------------------------------
46597 
46594        -- To allow MPA report to determine if it should generate report process
46595        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46596        ------------------------------------------------------------------------------------------
46598        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46599        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46600 
46601        --
46602        -- Update the line information that should be overwritten
46603        --
46604        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46605                                          p_header_num   => 1);
46606        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46607 
46608        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46609 
46610        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46611           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46612        END IF;
46613 
46614       --
46615       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46616       --
46617       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46618           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46619       ELSE
46620           ---------------------------------------------------------------------------------------------------
46621           -- 4262811a Switch Sign
46622           ---------------------------------------------------------------------------------------------------
46623           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46624           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46625                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46626           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46627                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46628           -- 5132302
46629           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46630                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46631 
46632       END IF;
46633 
46634       -- 4955764
46635       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46636       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46637 
46638 
46639       XLA_AE_LINES_PKG.ValidateCurrentLine;
46640       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46641 
46642       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46643                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46644                ,p_balance_type_code => l_balance_type_code);
46645 
46646    END IF;
46647 
46648    -----------------------------------------------------------------------------------------
46649    -- 4262811 Multiperiod Accounting
46650    -----------------------------------------------------------------------------------------
46651      -- No MPA option is assigned.
46652 
46653 
46654 END IF;
46655 --
46656 
46657 --
46658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46659    trace
46660       (p_msg      => 'END of AcctLineType_101'
46661       ,p_level    => C_LEVEL_PROCEDURE
46662       ,p_module   => l_log_module);
46663 END IF;
46664 --
46665 EXCEPTION
46666   WHEN xla_exceptions_pkg.application_exception THEN
46667       RAISE;
46668   WHEN OTHERS THEN
46669        xla_exceptions_pkg.raise_message
46670            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_101');
46671 END AcctLineType_101;
46672 --
46673 
46674 ---------------------------------------
46675 --
46676 -- PRIVATE FUNCTION
46677 --         AcctLineType_102
46678 --
46679 ---------------------------------------
46680 PROCEDURE AcctLineType_102 (
46681   p_application_id        IN NUMBER
46682  ,p_event_id              IN NUMBER
46683  ,p_calculate_acctd_flag  IN VARCHAR2
46684  ,p_calculate_g_l_flag    IN VARCHAR2
46685  ,p_actual_flag           IN OUT VARCHAR2
46686  ,p_balance_type_code     OUT VARCHAR2
46687  ,p_gain_or_loss_ref      OUT VARCHAR2
46688  
46689 --Cost CCID
46690  , p_source_4            IN NUMBER
46691 --Allow Account Override Flag
46692  , p_source_5            IN VARCHAR2
46693 --Cost Clearing CCID
46694  , p_source_7            IN NUMBER
46695 --Adjustment Cost Clearing CCID
46696  , p_source_8            IN NUMBER
46697 --Reversing Line Flag
46698  , p_source_23            IN VARCHAR2
46699 --Actual Upgrade Credit Accounting Class
46700  , p_source_24            IN VARCHAR2
46701 --Entered Raw Cost
46702  , p_source_25            IN NUMBER
46703 --Entered Currency Code
46704  , p_source_26            IN VARCHAR2
46705 --Accounted Raw Cost
46706  , p_source_27            IN NUMBER
46707 --Exchange Rate Date
46708  , p_source_28            IN DATE
46709 --Exchange Rate
46710  , p_source_29            IN NUMBER
46711 --Exchange Rate Type
46712  , p_source_30            IN VARCHAR2
46713 --Actual Upgrade Debit Accounting Class
46714  , p_source_31            IN VARCHAR2
46715 --Use Actuals Upgrade Attributes Flag
46716  , p_source_32            IN VARCHAR2
46717 --Expenditure Item ID
46718  , p_source_33            IN NUMBER
46719 --Cost Distribution Line Number
46720  , p_source_34            IN NUMBER
46721 --Line Type
46722  , p_source_35            IN VARCHAR2
46723  , p_source_35_meaning    IN VARCHAR2
46724 --Reversed Line Number
46725  , p_source_36            IN NUMBER
46729 l_component_type              VARCHAR2(80);
46726 )
46727 IS
46728 
46730 l_component_code              VARCHAR2(30);
46731 l_component_type_code         VARCHAR2(1);
46732 l_component_appl_id           INTEGER;
46733 l_amb_context_code            VARCHAR2(30);
46734 l_entity_code                 VARCHAR2(30);
46735 l_event_class_code            VARCHAR2(30);
46736 l_ae_header_id                NUMBER;
46737 l_event_type_code             VARCHAR2(30);
46738 l_line_definition_code        VARCHAR2(30);
46739 l_line_definition_owner_code  VARCHAR2(1);
46740 --
46741 -- adr variables
46742 l_segment                     VARCHAR2(30);
46743 l_ccid                        NUMBER;
46744 l_adr_transaction_coa_id      NUMBER;
46745 l_adr_accounting_coa_id       NUMBER;
46746 l_adr_flexfield_segment_code  VARCHAR2(30);
46747 l_adr_flex_value_set_id       NUMBER;
46748 l_adr_value_type_code         VARCHAR2(30);
46749 l_adr_value_combination_id    NUMBER;
46750 l_adr_value_segment_code      VARCHAR2(30);
46751 
46752 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46753 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46754 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46755 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46756 
46757 -- 4262811 Variables ------------------------------------------------------------------------------------------
46758 l_entered_amt_idx             NUMBER;
46759 l_accted_amt_idx              NUMBER;
46760 l_acc_rev_flag                VARCHAR2(1);
46761 l_accrual_line_num            NUMBER;
46762 l_tmp_amt                     NUMBER;
46763 l_acc_rev_natural_side_code   VARCHAR2(1);
46764 
46765 l_num_entries                 NUMBER;
46766 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46767 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46768 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46769 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46770 l_recog_line_1                NUMBER;
46771 l_recog_line_2                NUMBER;
46772 
46773 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46774 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46775 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46776 
46777 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46778 
46779 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46780 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46781 
46782 ---------------------------------------------------------------------------------------------------------------
46783 
46784 
46785 --
46786 -- bulk performance
46787 --
46788 l_balance_type_code           VARCHAR2(1);
46789 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46790 l_log_module                  VARCHAR2(240);
46791 
46792 --
46793 -- Upgrade strategy
46794 --
46795 l_actual_upg_option           VARCHAR2(1);
46796 l_enc_upg_option           VARCHAR2(1);
46797 
46798 --
46799 BEGIN
46800 --
46801 IF g_log_enabled THEN
46802       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
46803 END IF;
46804 --
46805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46806 
46807       trace
46808          (p_msg      => 'BEGIN of AcctLineType_102'
46809          ,p_level    => C_LEVEL_PROCEDURE
46810          ,p_module   => l_log_module);
46811 
46812 END IF;
46813 --
46814 l_component_type             := 'AMB_JLT';
46815 l_component_code             := 'PA_RAW_COST_CLEAR_FED';
46816 l_component_type_code        := 'S';
46817 l_component_appl_id          :=  275;
46818 l_amb_context_code           := 'DEFAULT';
46819 l_entity_code                := 'EXPENDITURES';
46820 l_event_class_code           := 'INVENTORY_COST';
46821 l_event_type_code            := 'INVENTORY_COST_ALL';
46822 l_line_definition_owner_code := 'S';
46823 l_line_definition_code       := 'FV_PROJECTS_JLD';
46824 --
46825 l_balance_type_code          := 'A';
46826 l_segment                     := NULL;
46827 l_ccid                        := NULL;
46828 l_adr_transaction_coa_id      := NULL;
46829 l_adr_accounting_coa_id       := NULL;
46830 l_adr_flexfield_segment_code  := NULL;
46831 l_adr_flex_value_set_id       := NULL;
46832 l_adr_value_type_code         := NULL;
46833 l_adr_value_combination_id    := NULL;
46834 l_adr_value_segment_code      := NULL;
46835 
46836 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46837 l_bflow_class_code           := '';    -- 4219869 Business Flow
46838 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46839 l_budgetary_control_flag     := 'N';
46840 
46841 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46842 l_bflow_applied_to_amt       := NULL; -- 5132302
46843 l_entered_amt_idx            := NULL;          -- 4262811
46844 l_accted_amt_idx             := NULL;          -- 4262811
46845 l_acc_rev_flag               := NULL;          -- 4262811
46846 l_accrual_line_num           := NULL;          -- 4262811
46847 l_tmp_amt                    := NULL;          -- 4262811
46848 --
46849  
46850 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46851     l_balance_type_code <> 'B' THEN
46852 
46853    --
46854    XLA_AE_LINES_PKG.SetNewLine;
46855 
46856    p_balance_type_code          := l_balance_type_code;
46857    -- set the flag so later we will know whether the gain loss line needs to be created
46858    
46859    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46860      p_actual_flag :='A';
46861    END IF;
46862 
46863    --
46864    -- bulk performance
46868    --
46865    --
46866    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46867                                       p_header_num   => 0); -- 4262811
46869    -- set accounting line options
46870    --
46871    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46872            p_natural_side_code          => 'C'
46873          , p_gain_or_loss_flag          => 'N'
46874          , p_gl_transfer_mode_code      => 'S'
46875          , p_acct_entry_type_code       => 'A'
46876          , p_switch_side_flag           => 'Y'
46877          , p_merge_duplicate_code       => 'N'
46878          );
46879    --
46880    l_acc_rev_natural_side_code := 'D';  -- 4262811
46881    -- 
46882    --
46883    -- set accounting line type info
46884    --
46885    xla_ae_lines_pkg.SetAcctLineType
46886       (p_component_type             => l_component_type
46887       ,p_event_type_code            => l_event_type_code
46888       ,p_line_definition_owner_code => l_line_definition_owner_code
46889       ,p_line_definition_code       => l_line_definition_code
46890       ,p_accounting_line_code       => l_component_code
46891       ,p_accounting_line_type_code  => l_component_type_code
46892       ,p_accounting_line_appl_id    => l_component_appl_id
46893       ,p_amb_context_code           => l_amb_context_code
46894       ,p_entity_code                => l_entity_code
46895       ,p_event_class_code           => l_event_class_code);
46896    --
46897    -- set accounting class
46898    --
46899    xla_ae_lines_pkg.SetAcctClass(
46900            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
46901          , p_ae_header_id           => l_ae_header_id
46902          );
46903 
46904    --
46905    -- set rounding class
46906    --
46907    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46908                       'FEDERAL_PROJECT_COST_CLEARING';
46909 
46910    --
46911    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46912    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46913    --
46914    -- bulk performance
46915    --
46916    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46917 
46918    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46919       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46920 
46921    -- 4955764
46922    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46923       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46924 
46925    -- 4458381 Public Sector Enh
46926    
46927    --
46928    -- set accounting attributes for the line type
46929    --
46930    l_entered_amt_idx := 22;
46931    l_accted_amt_idx  := 27;
46932    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46933    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
46934    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
46935    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
46936    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
46937    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
46938    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
46939    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
46940    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
46941    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
46942    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
46943    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
46944    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
46945    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
46946    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
46947    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
46948    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
46949    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
46950    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
46951    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
46952    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
46953    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
46954    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
46955    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
46956    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
46957    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
46958    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
46959    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
46960    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
46961    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
46962    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
46963    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
46964    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
46965    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
46966    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
46967    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
46968    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
46969    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
46970    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
46971    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
46972    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
46973    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
46974    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
46975    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
46979    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
46976    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
46977    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
46978    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
46980    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
46981    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
46982    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
46983    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
46984    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
46985    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
46986    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
46987    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
46988    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
46989    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
46990    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
46991    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
46992    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
46993 
46994    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46995    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46996 
46997    ---------------------------------------------------------------------------------------------------------------
46998    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46999    ---------------------------------------------------------------------------------------------------------------
47000    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47001 
47002    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47003    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47004 
47005    IF xla_accounting_cache_pkg.GetValueChar
47006          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47007          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47008    AND l_bflow_method_code = 'PRIOR_ENTRY'
47009 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47010    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47011          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47012        )
47013    THEN
47014          xla_ae_lines_pkg.BflowUpgEntry
47015            (p_business_method_code    => l_bflow_method_code
47016            ,p_business_class_code     => l_bflow_class_code
47017            ,p_balance_type            => l_balance_type_code);
47018    ELSE
47019       NULL;
47020 -- No business flow processing for business flow method of NONE.
47021    END IF;
47022 
47023    --
47024    -- call analytical criteria
47025    --
47026    
47027    --
47028    -- call description
47029    --
47030    -- No description or it is inherited.
47031    --
47032    -- call ADRs
47033    -- Bug 4922099
47034    --
47035    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47036         (NVL(l_actual_upg_option, 'N') = 'O') OR
47037         (NVL(l_enc_upg_option, 'N') = 'O')
47038       )
47039    THEN
47040    NULL;
47041    --
47042    --
47043    
47044   l_ccid := AcctDerRule_14(
47045            p_application_id           => p_application_id
47046          , p_ae_header_id             => l_ae_header_id 
47047 , p_source_5 => p_source_5
47048 , p_source_7 => p_source_7
47049 , p_source_8 => p_source_8
47050          , x_transaction_coa_id       => l_adr_transaction_coa_id
47051          , x_accounting_coa_id        => l_adr_accounting_coa_id
47052          , x_value_type_code          => l_adr_value_type_code
47053          , p_side                     => 'NA'
47054    );
47055 
47056    xla_ae_lines_pkg.set_ccid(
47057     p_code_combination_id          => l_ccid
47058   , p_value_type_code              => l_adr_value_type_code
47059   , p_transaction_coa_id           => l_adr_transaction_coa_id
47060   , p_accounting_coa_id            => l_adr_accounting_coa_id
47061   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
47062   , p_adr_type_code                => 'S'
47063   , p_component_type               => l_component_type
47064   , p_component_code               => l_component_code
47065   , p_component_type_code          => l_component_type_code
47066   , p_component_appl_id            => l_component_appl_id
47067   , p_amb_context_code             => l_amb_context_code
47068   , p_side                         => 'NA'
47069   );
47070 
47071 
47072    l_segment := AcctDerRule_5(
47073            p_application_id           => p_application_id
47074          , p_ae_header_id             => l_ae_header_id 
47075          , x_transaction_coa_id       => l_adr_transaction_coa_id
47076          , x_accounting_coa_id        => l_adr_accounting_coa_id
47077          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
47078          , x_flex_value_set_id        => l_adr_flex_value_set_id
47079          , x_value_type_code          => l_adr_value_type_code
47080          , x_value_combination_id     => l_adr_value_combination_id
47081          , x_value_segment_code       => l_adr_value_segment_code
47082          , p_side                     => 'NA'
47083          , p_override_seg_flag        => 'Y'
47084    );
47085 
47086    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
47087 
47088       xla_ae_lines_pkg.set_segment(
47089           p_to_segment_code         => 'GL_ACCOUNT'
47090         , p_segment_value           => l_segment
47091         , p_from_segment_code       => l_adr_value_segment_code
47092         , p_from_combination_id     => l_adr_value_combination_id
47093         , p_value_type_code         => l_adr_value_type_code
47097         , p_flex_value_set_id       => l_adr_flex_value_set_id
47094         , p_transaction_coa_id      => l_adr_transaction_coa_id
47095         , p_accounting_coa_id       => l_adr_accounting_coa_id
47096         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
47098         , p_adr_code                => 'FV_490201_PROJECTS'
47099         , p_adr_type_code           => 'S'
47100         , p_component_type          => l_component_type
47101         , p_component_code          => l_component_code
47102         , p_component_type_code     => l_component_type_code
47103         , p_component_appl_id       => l_component_appl_id
47104         , p_amb_context_code        => l_amb_context_code
47105         , p_entity_code             => 'EXPENDITURES'
47106         , p_event_class_code        => 'INVENTORY_COST'
47107         , p_side                    => 'NA'
47108         );
47109 
47110   END IF;
47111 
47112    --
47113    --
47114    END IF;
47115    --
47116    -- Bug 4922099
47117    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47118           (NVL(l_enc_upg_option, 'N') = 'O')
47119         ) AND
47120         (l_bflow_method_code = 'PRIOR_ENTRY')
47121       )
47122    THEN
47123       IF
47124       --
47125       1 = 2
47126       --
47127       THEN
47128       xla_accounting_err_pkg.build_message
47129                                     (p_appli_s_name            => 'XLA'
47130                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47131                                     ,p_token_1                 => 'LINE_NUMBER'
47132                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47133                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47134                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47135                                                                              l_component_type
47136                                                                             ,l_component_code
47137                                                                             ,l_component_type_code
47138                                                                             ,l_component_appl_id
47139                                                                             ,l_amb_context_code
47140                                                                             ,l_entity_code
47141                                                                             ,l_event_class_code
47142                                                                            )
47143                                     ,p_token_3                 => 'OWNER'
47144                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47145                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47146                                                                           ,p_lookup_code    => l_component_type_code
47147                                                                          )
47148                                     ,p_token_4                 => 'PRODUCT_NAME'
47149                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47150                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47151                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47152                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47153                                     ,p_ae_header_id            =>  NULL
47154                                        );
47155 
47156         IF (C_LEVEL_ERROR>= g_log_level) THEN
47157                  trace
47158                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47159                       ,p_level    => C_LEVEL_ERROR
47160                       ,p_module   => l_log_module);
47161         END IF;
47162       END IF;
47163    END IF;
47164    --
47165    --
47166    ------------------------------------------------------------------------------------------------
47167    -- 4219869 Business Flow
47168    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47169    -- Prior Entry.  Currently, the following code is always generated.
47170    ------------------------------------------------------------------------------------------------
47171    XLA_AE_LINES_PKG.ValidateCurrentLine;
47172 
47173    ------------------------------------------------------------------------------------
47174    -- 4219869 Business Flow
47175    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47176    ------------------------------------------------------------------------------------
47177    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47178 
47179    ----------------------------------------------------------------------------------
47180    -- 4219869 Business Flow
47181    -- Update journal entry status -- Need to generate this within IF <condition>
47182    ----------------------------------------------------------------------------------
47183    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47184          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47185          ,p_balance_type_code => l_balance_type_code
47186          );
47187 
47188    -------------------------------------------------------------------------------------------
47189    -- 4262811 - Generate the Accrual Reversal lines
47190    -------------------------------------------------------------------------------------------
47191    BEGIN
47192       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47193                               (g_array_event(p_event_id).array_value_num('header_index'));
47194       IF l_acc_rev_flag IS NULL THEN
47195          l_acc_rev_flag := 'N';
47196       END IF;
47200    END;
47197    EXCEPTION
47198       WHEN OTHERS THEN
47199          l_acc_rev_flag := 'N';
47201    --
47202    IF (l_acc_rev_flag = 'Y') THEN
47203 
47204        -- 4645092  ------------------------------------------------------------------------------
47205        -- To allow MPA report to determine if it should generate report process
47206        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47207        ------------------------------------------------------------------------------------------
47208 
47209        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47210        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47211 
47212        --
47213        -- Update the line information that should be overwritten
47214        --
47215        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47216                                          p_header_num   => 1);
47217        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47218 
47219        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47220 
47221        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47222           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47223        END IF;
47224 
47225       --
47226       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47227       --
47228       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47229           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47230       ELSE
47231           ---------------------------------------------------------------------------------------------------
47232           -- 4262811a Switch Sign
47233           ---------------------------------------------------------------------------------------------------
47234           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47235           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47236                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47237           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47238                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47239           -- 5132302
47240           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47241                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47242 
47243       END IF;
47244 
47245       -- 4955764
47246       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47247       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47248 
47249 
47250       XLA_AE_LINES_PKG.ValidateCurrentLine;
47251       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47252 
47253       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47254                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47255                ,p_balance_type_code => l_balance_type_code);
47256 
47257    END IF;
47258 
47259    -----------------------------------------------------------------------------------------
47260    -- 4262811 Multiperiod Accounting
47261    -----------------------------------------------------------------------------------------
47262      -- No MPA option is assigned.
47263 
47264 
47265 END IF;
47266 --
47267 
47268 --
47269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47270    trace
47271       (p_msg      => 'END of AcctLineType_102'
47272       ,p_level    => C_LEVEL_PROCEDURE
47273       ,p_module   => l_log_module);
47274 END IF;
47275 --
47276 EXCEPTION
47277   WHEN xla_exceptions_pkg.application_exception THEN
47278       RAISE;
47279   WHEN OTHERS THEN
47280        xla_exceptions_pkg.raise_message
47281            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_102');
47282 END AcctLineType_102;
47283 --
47284 
47285 ---------------------------------------
47286 --
47287 -- PRIVATE FUNCTION
47288 --         AcctLineType_103
47289 --
47290 ---------------------------------------
47291 PROCEDURE AcctLineType_103 (
47292   p_application_id        IN NUMBER
47293  ,p_event_id              IN NUMBER
47294  ,p_calculate_acctd_flag  IN VARCHAR2
47295  ,p_calculate_g_l_flag    IN VARCHAR2
47296  ,p_actual_flag           IN OUT VARCHAR2
47297  ,p_balance_type_code     OUT VARCHAR2
47298  ,p_gain_or_loss_ref      OUT VARCHAR2
47299  
47300 --Cost CCID
47301  , p_source_4            IN NUMBER
47302 --Allow Account Override Flag
47303  , p_source_5            IN VARCHAR2
47304 --Cost Clearing CCID
47305  , p_source_7            IN NUMBER
47306 --Adjustment Cost Clearing CCID
47307  , p_source_8            IN NUMBER
47308 --Reversing Line Flag
47309  , p_source_23            IN VARCHAR2
47310 --Actual Upgrade Credit Accounting Class
47311  , p_source_24            IN VARCHAR2
47312 --Entered Raw Cost
47313  , p_source_25            IN NUMBER
47314 --Entered Currency Code
47315  , p_source_26            IN VARCHAR2
47316 --Accounted Raw Cost
47317  , p_source_27            IN NUMBER
47318 --Exchange Rate Date
47319  , p_source_28            IN DATE
47320 --Exchange Rate
47321  , p_source_29            IN NUMBER
47322 --Exchange Rate Type
47323  , p_source_30            IN VARCHAR2
47324 --Actual Upgrade Debit Accounting Class
47325  , p_source_31            IN VARCHAR2
47326 --Use Actuals Upgrade Attributes Flag
47327  , p_source_32            IN VARCHAR2
47328 --Expenditure Item ID
47332 --Line Type
47329  , p_source_33            IN NUMBER
47330 --Cost Distribution Line Number
47331  , p_source_34            IN NUMBER
47333  , p_source_35            IN VARCHAR2
47334  , p_source_35_meaning    IN VARCHAR2
47335 --Reversed Line Number
47336  , p_source_36            IN NUMBER
47337 )
47338 IS
47339 
47340 l_component_type              VARCHAR2(80);
47341 l_component_code              VARCHAR2(30);
47342 l_component_type_code         VARCHAR2(1);
47343 l_component_appl_id           INTEGER;
47344 l_amb_context_code            VARCHAR2(30);
47345 l_entity_code                 VARCHAR2(30);
47346 l_event_class_code            VARCHAR2(30);
47347 l_ae_header_id                NUMBER;
47348 l_event_type_code             VARCHAR2(30);
47349 l_line_definition_code        VARCHAR2(30);
47350 l_line_definition_owner_code  VARCHAR2(1);
47351 --
47352 -- adr variables
47353 l_segment                     VARCHAR2(30);
47354 l_ccid                        NUMBER;
47355 l_adr_transaction_coa_id      NUMBER;
47356 l_adr_accounting_coa_id       NUMBER;
47357 l_adr_flexfield_segment_code  VARCHAR2(30);
47358 l_adr_flex_value_set_id       NUMBER;
47359 l_adr_value_type_code         VARCHAR2(30);
47360 l_adr_value_combination_id    NUMBER;
47361 l_adr_value_segment_code      VARCHAR2(30);
47362 
47363 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47364 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47365 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47366 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47367 
47368 -- 4262811 Variables ------------------------------------------------------------------------------------------
47369 l_entered_amt_idx             NUMBER;
47370 l_accted_amt_idx              NUMBER;
47371 l_acc_rev_flag                VARCHAR2(1);
47372 l_accrual_line_num            NUMBER;
47373 l_tmp_amt                     NUMBER;
47374 l_acc_rev_natural_side_code   VARCHAR2(1);
47375 
47376 l_num_entries                 NUMBER;
47377 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47378 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47379 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47380 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47381 l_recog_line_1                NUMBER;
47382 l_recog_line_2                NUMBER;
47383 
47384 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47385 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47386 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47387 
47388 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47389 
47390 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47391 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47392 
47393 ---------------------------------------------------------------------------------------------------------------
47394 
47395 
47396 --
47397 -- bulk performance
47398 --
47399 l_balance_type_code           VARCHAR2(1);
47400 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47401 l_log_module                  VARCHAR2(240);
47402 
47403 --
47404 -- Upgrade strategy
47405 --
47406 l_actual_upg_option           VARCHAR2(1);
47407 l_enc_upg_option           VARCHAR2(1);
47408 
47409 --
47410 BEGIN
47411 --
47412 IF g_log_enabled THEN
47413       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
47414 END IF;
47415 --
47416 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47417 
47418       trace
47419          (p_msg      => 'BEGIN of AcctLineType_103'
47420          ,p_level    => C_LEVEL_PROCEDURE
47421          ,p_module   => l_log_module);
47422 
47423 END IF;
47424 --
47425 l_component_type             := 'AMB_JLT';
47426 l_component_code             := 'PA_RAW_COST_CLEAR_FED';
47427 l_component_type_code        := 'S';
47428 l_component_appl_id          :=  275;
47429 l_amb_context_code           := 'DEFAULT';
47430 l_entity_code                := 'EXPENDITURES';
47431 l_event_class_code           := 'LABOR_COST';
47432 l_event_type_code            := 'LABOR_COST_ALL';
47433 l_line_definition_owner_code := 'S';
47434 l_line_definition_code       := 'FV_PROJECTS_JLD';
47435 --
47436 l_balance_type_code          := 'A';
47437 l_segment                     := NULL;
47438 l_ccid                        := NULL;
47439 l_adr_transaction_coa_id      := NULL;
47440 l_adr_accounting_coa_id       := NULL;
47441 l_adr_flexfield_segment_code  := NULL;
47442 l_adr_flex_value_set_id       := NULL;
47443 l_adr_value_type_code         := NULL;
47444 l_adr_value_combination_id    := NULL;
47445 l_adr_value_segment_code      := NULL;
47446 
47447 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47448 l_bflow_class_code           := '';    -- 4219869 Business Flow
47449 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47450 l_budgetary_control_flag     := 'N';
47451 
47452 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47453 l_bflow_applied_to_amt       := NULL; -- 5132302
47454 l_entered_amt_idx            := NULL;          -- 4262811
47455 l_accted_amt_idx             := NULL;          -- 4262811
47456 l_acc_rev_flag               := NULL;          -- 4262811
47457 l_accrual_line_num           := NULL;          -- 4262811
47458 l_tmp_amt                    := NULL;          -- 4262811
47459 --
47460  
47461 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47462     l_balance_type_code <> 'B' THEN
47463 
47464    --
47465    XLA_AE_LINES_PKG.SetNewLine;
47466 
47470    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47467    p_balance_type_code          := l_balance_type_code;
47468    -- set the flag so later we will know whether the gain loss line needs to be created
47469    
47471      p_actual_flag :='A';
47472    END IF;
47473 
47474    --
47475    -- bulk performance
47476    --
47477    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47478                                       p_header_num   => 0); -- 4262811
47479    --
47480    -- set accounting line options
47481    --
47482    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47483            p_natural_side_code          => 'C'
47484          , p_gain_or_loss_flag          => 'N'
47485          , p_gl_transfer_mode_code      => 'S'
47486          , p_acct_entry_type_code       => 'A'
47487          , p_switch_side_flag           => 'Y'
47488          , p_merge_duplicate_code       => 'N'
47489          );
47490    --
47491    l_acc_rev_natural_side_code := 'D';  -- 4262811
47492    -- 
47493    --
47494    -- set accounting line type info
47495    --
47496    xla_ae_lines_pkg.SetAcctLineType
47497       (p_component_type             => l_component_type
47498       ,p_event_type_code            => l_event_type_code
47499       ,p_line_definition_owner_code => l_line_definition_owner_code
47500       ,p_line_definition_code       => l_line_definition_code
47501       ,p_accounting_line_code       => l_component_code
47502       ,p_accounting_line_type_code  => l_component_type_code
47503       ,p_accounting_line_appl_id    => l_component_appl_id
47504       ,p_amb_context_code           => l_amb_context_code
47505       ,p_entity_code                => l_entity_code
47506       ,p_event_class_code           => l_event_class_code);
47507    --
47508    -- set accounting class
47509    --
47510    xla_ae_lines_pkg.SetAcctClass(
47511            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
47512          , p_ae_header_id           => l_ae_header_id
47513          );
47514 
47515    --
47516    -- set rounding class
47517    --
47518    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47519                       'FEDERAL_PROJECT_COST_CLEARING';
47520 
47521    --
47522    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47523    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47524    --
47525    -- bulk performance
47526    --
47527    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47528 
47529    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47530       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47531 
47532    -- 4955764
47533    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47534       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47535 
47536    -- 4458381 Public Sector Enh
47537    
47538    --
47539    -- set accounting attributes for the line type
47540    --
47541    l_entered_amt_idx := 22;
47542    l_accted_amt_idx  := 27;
47543    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47544    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
47545    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
47546    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
47547    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
47548    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
47549    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
47550    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
47551    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
47552    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
47553    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
47554    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
47555    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
47556    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
47557    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
47558    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
47559    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
47560    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
47561    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
47562    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
47563    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
47564    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
47565    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
47566    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
47567    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
47568    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
47569    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
47570    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
47571    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
47572    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
47573    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
47574    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
47575    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
47576    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
47577    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
47578    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
47579    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
47580    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
47581    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
47585    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
47582    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
47583    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
47584    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
47586    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
47587    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
47588    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
47589    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
47590    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
47591    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
47592    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
47593    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
47594    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
47595    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
47596    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
47597    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
47598    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
47599    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
47600    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
47601    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
47602    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
47603    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
47604 
47605    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47606    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47607 
47608    ---------------------------------------------------------------------------------------------------------------
47609    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47610    ---------------------------------------------------------------------------------------------------------------
47611    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47612 
47613    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47614    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47615 
47616    IF xla_accounting_cache_pkg.GetValueChar
47617          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47618          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47619    AND l_bflow_method_code = 'PRIOR_ENTRY'
47620 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47621    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47622          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47623        )
47624    THEN
47625          xla_ae_lines_pkg.BflowUpgEntry
47626            (p_business_method_code    => l_bflow_method_code
47627            ,p_business_class_code     => l_bflow_class_code
47628            ,p_balance_type            => l_balance_type_code);
47629    ELSE
47630       NULL;
47631 -- No business flow processing for business flow method of NONE.
47632    END IF;
47633 
47634    --
47635    -- call analytical criteria
47636    --
47637    
47638    --
47639    -- call description
47640    --
47641    -- No description or it is inherited.
47642    --
47643    -- call ADRs
47644    -- Bug 4922099
47645    --
47646    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47647         (NVL(l_actual_upg_option, 'N') = 'O') OR
47648         (NVL(l_enc_upg_option, 'N') = 'O')
47649       )
47650    THEN
47651    NULL;
47652    --
47653    --
47654    
47655   l_ccid := AcctDerRule_14(
47656            p_application_id           => p_application_id
47657          , p_ae_header_id             => l_ae_header_id 
47658 , p_source_5 => p_source_5
47659 , p_source_7 => p_source_7
47660 , p_source_8 => p_source_8
47661          , x_transaction_coa_id       => l_adr_transaction_coa_id
47662          , x_accounting_coa_id        => l_adr_accounting_coa_id
47663          , x_value_type_code          => l_adr_value_type_code
47664          , p_side                     => 'NA'
47665    );
47666 
47667    xla_ae_lines_pkg.set_ccid(
47668     p_code_combination_id          => l_ccid
47669   , p_value_type_code              => l_adr_value_type_code
47670   , p_transaction_coa_id           => l_adr_transaction_coa_id
47671   , p_accounting_coa_id            => l_adr_accounting_coa_id
47672   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
47673   , p_adr_type_code                => 'S'
47674   , p_component_type               => l_component_type
47675   , p_component_code               => l_component_code
47676   , p_component_type_code          => l_component_type_code
47677   , p_component_appl_id            => l_component_appl_id
47678   , p_amb_context_code             => l_amb_context_code
47679   , p_side                         => 'NA'
47680   );
47681 
47682 
47683    l_segment := AcctDerRule_5(
47684            p_application_id           => p_application_id
47685          , p_ae_header_id             => l_ae_header_id 
47686          , x_transaction_coa_id       => l_adr_transaction_coa_id
47687          , x_accounting_coa_id        => l_adr_accounting_coa_id
47688          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
47689          , x_flex_value_set_id        => l_adr_flex_value_set_id
47690          , x_value_type_code          => l_adr_value_type_code
47691          , x_value_combination_id     => l_adr_value_combination_id
47692          , x_value_segment_code       => l_adr_value_segment_code
47693          , p_side                     => 'NA'
47694          , p_override_seg_flag        => 'Y'
47695    );
47696 
47697    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
47698 
47702         , p_from_segment_code       => l_adr_value_segment_code
47699       xla_ae_lines_pkg.set_segment(
47700           p_to_segment_code         => 'GL_ACCOUNT'
47701         , p_segment_value           => l_segment
47703         , p_from_combination_id     => l_adr_value_combination_id
47704         , p_value_type_code         => l_adr_value_type_code
47705         , p_transaction_coa_id      => l_adr_transaction_coa_id
47706         , p_accounting_coa_id       => l_adr_accounting_coa_id
47707         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
47708         , p_flex_value_set_id       => l_adr_flex_value_set_id
47709         , p_adr_code                => 'FV_490201_PROJECTS'
47710         , p_adr_type_code           => 'S'
47711         , p_component_type          => l_component_type
47712         , p_component_code          => l_component_code
47713         , p_component_type_code     => l_component_type_code
47714         , p_component_appl_id       => l_component_appl_id
47715         , p_amb_context_code        => l_amb_context_code
47716         , p_entity_code             => 'EXPENDITURES'
47717         , p_event_class_code        => 'LABOR_COST'
47718         , p_side                    => 'NA'
47719         );
47720 
47721   END IF;
47722 
47723    --
47724    --
47725    END IF;
47726    --
47727    -- Bug 4922099
47728    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47729           (NVL(l_enc_upg_option, 'N') = 'O')
47730         ) AND
47731         (l_bflow_method_code = 'PRIOR_ENTRY')
47732       )
47733    THEN
47734       IF
47735       --
47736       1 = 2
47737       --
47738       THEN
47739       xla_accounting_err_pkg.build_message
47740                                     (p_appli_s_name            => 'XLA'
47741                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47742                                     ,p_token_1                 => 'LINE_NUMBER'
47743                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47744                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47745                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47746                                                                              l_component_type
47747                                                                             ,l_component_code
47748                                                                             ,l_component_type_code
47749                                                                             ,l_component_appl_id
47750                                                                             ,l_amb_context_code
47751                                                                             ,l_entity_code
47752                                                                             ,l_event_class_code
47753                                                                            )
47754                                     ,p_token_3                 => 'OWNER'
47755                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47756                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47757                                                                           ,p_lookup_code    => l_component_type_code
47758                                                                          )
47759                                     ,p_token_4                 => 'PRODUCT_NAME'
47760                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47761                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47762                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47763                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47764                                     ,p_ae_header_id            =>  NULL
47765                                        );
47766 
47767         IF (C_LEVEL_ERROR>= g_log_level) THEN
47768                  trace
47769                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47770                       ,p_level    => C_LEVEL_ERROR
47771                       ,p_module   => l_log_module);
47772         END IF;
47773       END IF;
47774    END IF;
47775    --
47776    --
47777    ------------------------------------------------------------------------------------------------
47778    -- 4219869 Business Flow
47779    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47780    -- Prior Entry.  Currently, the following code is always generated.
47781    ------------------------------------------------------------------------------------------------
47782    XLA_AE_LINES_PKG.ValidateCurrentLine;
47783 
47784    ------------------------------------------------------------------------------------
47785    -- 4219869 Business Flow
47786    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47787    ------------------------------------------------------------------------------------
47788    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47789 
47790    ----------------------------------------------------------------------------------
47791    -- 4219869 Business Flow
47792    -- Update journal entry status -- Need to generate this within IF <condition>
47793    ----------------------------------------------------------------------------------
47794    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47795          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47796          ,p_balance_type_code => l_balance_type_code
47797          );
47798 
47799    -------------------------------------------------------------------------------------------
47800    -- 4262811 - Generate the Accrual Reversal lines
47804                               (g_array_event(p_event_id).array_value_num('header_index'));
47801    -------------------------------------------------------------------------------------------
47802    BEGIN
47803       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47805       IF l_acc_rev_flag IS NULL THEN
47806          l_acc_rev_flag := 'N';
47807       END IF;
47808    EXCEPTION
47809       WHEN OTHERS THEN
47810          l_acc_rev_flag := 'N';
47811    END;
47812    --
47813    IF (l_acc_rev_flag = 'Y') THEN
47814 
47815        -- 4645092  ------------------------------------------------------------------------------
47816        -- To allow MPA report to determine if it should generate report process
47817        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47818        ------------------------------------------------------------------------------------------
47819 
47820        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47821        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47822 
47823        --
47824        -- Update the line information that should be overwritten
47825        --
47826        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47827                                          p_header_num   => 1);
47828        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47829 
47830        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47831 
47832        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47833           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47834        END IF;
47835 
47836       --
47837       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47838       --
47839       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47840           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47841       ELSE
47842           ---------------------------------------------------------------------------------------------------
47843           -- 4262811a Switch Sign
47844           ---------------------------------------------------------------------------------------------------
47845           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47846           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47847                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47848           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47849                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47850           -- 5132302
47851           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47852                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47853 
47854       END IF;
47855 
47856       -- 4955764
47857       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47858       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47859 
47860 
47861       XLA_AE_LINES_PKG.ValidateCurrentLine;
47862       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47863 
47864       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47865                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47866                ,p_balance_type_code => l_balance_type_code);
47867 
47868    END IF;
47869 
47870    -----------------------------------------------------------------------------------------
47871    -- 4262811 Multiperiod Accounting
47872    -----------------------------------------------------------------------------------------
47873      -- No MPA option is assigned.
47874 
47875 
47876 END IF;
47877 --
47878 
47879 --
47880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47881    trace
47882       (p_msg      => 'END of AcctLineType_103'
47883       ,p_level    => C_LEVEL_PROCEDURE
47884       ,p_module   => l_log_module);
47885 END IF;
47886 --
47887 EXCEPTION
47888   WHEN xla_exceptions_pkg.application_exception THEN
47889       RAISE;
47890   WHEN OTHERS THEN
47891        xla_exceptions_pkg.raise_message
47892            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_103');
47893 END AcctLineType_103;
47894 --
47895 
47896 ---------------------------------------
47897 --
47898 -- PRIVATE FUNCTION
47899 --         AcctLineType_104
47900 --
47901 ---------------------------------------
47902 PROCEDURE AcctLineType_104 (
47903   p_application_id        IN NUMBER
47904  ,p_event_id              IN NUMBER
47905  ,p_calculate_acctd_flag  IN VARCHAR2
47906  ,p_calculate_g_l_flag    IN VARCHAR2
47907  ,p_actual_flag           IN OUT VARCHAR2
47908  ,p_balance_type_code     OUT VARCHAR2
47909  ,p_gain_or_loss_ref      OUT VARCHAR2
47910  
47911 --Cost CCID
47912  , p_source_4            IN NUMBER
47913 --Allow Account Override Flag
47914  , p_source_5            IN VARCHAR2
47915 --Cost Clearing CCID
47916  , p_source_7            IN NUMBER
47917 --Adjustment Cost Clearing CCID
47918  , p_source_8            IN NUMBER
47919 --Reversing Line Flag
47920  , p_source_23            IN VARCHAR2
47921 --Actual Upgrade Credit Accounting Class
47922  , p_source_24            IN VARCHAR2
47923 --Entered Raw Cost
47924  , p_source_25            IN NUMBER
47925 --Entered Currency Code
47926  , p_source_26            IN VARCHAR2
47927 --Accounted Raw Cost
47928  , p_source_27            IN NUMBER
47929 --Exchange Rate Date
47933 --Exchange Rate Type
47930  , p_source_28            IN DATE
47931 --Exchange Rate
47932  , p_source_29            IN NUMBER
47934  , p_source_30            IN VARCHAR2
47935 --Actual Upgrade Debit Accounting Class
47936  , p_source_31            IN VARCHAR2
47937 --Use Actuals Upgrade Attributes Flag
47938  , p_source_32            IN VARCHAR2
47939 --Expenditure Item ID
47940  , p_source_33            IN NUMBER
47941 --Cost Distribution Line Number
47942  , p_source_34            IN NUMBER
47943 --Line Type
47944  , p_source_35            IN VARCHAR2
47945  , p_source_35_meaning    IN VARCHAR2
47946 --Reversed Line Number
47947  , p_source_36            IN NUMBER
47948 )
47949 IS
47950 
47951 l_component_type              VARCHAR2(80);
47952 l_component_code              VARCHAR2(30);
47953 l_component_type_code         VARCHAR2(1);
47954 l_component_appl_id           INTEGER;
47955 l_amb_context_code            VARCHAR2(30);
47956 l_entity_code                 VARCHAR2(30);
47957 l_event_class_code            VARCHAR2(30);
47958 l_ae_header_id                NUMBER;
47959 l_event_type_code             VARCHAR2(30);
47960 l_line_definition_code        VARCHAR2(30);
47961 l_line_definition_owner_code  VARCHAR2(1);
47962 --
47963 -- adr variables
47964 l_segment                     VARCHAR2(30);
47965 l_ccid                        NUMBER;
47966 l_adr_transaction_coa_id      NUMBER;
47967 l_adr_accounting_coa_id       NUMBER;
47968 l_adr_flexfield_segment_code  VARCHAR2(30);
47969 l_adr_flex_value_set_id       NUMBER;
47970 l_adr_value_type_code         VARCHAR2(30);
47971 l_adr_value_combination_id    NUMBER;
47972 l_adr_value_segment_code      VARCHAR2(30);
47973 
47974 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47975 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47976 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47977 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47978 
47979 -- 4262811 Variables ------------------------------------------------------------------------------------------
47980 l_entered_amt_idx             NUMBER;
47981 l_accted_amt_idx              NUMBER;
47982 l_acc_rev_flag                VARCHAR2(1);
47983 l_accrual_line_num            NUMBER;
47984 l_tmp_amt                     NUMBER;
47985 l_acc_rev_natural_side_code   VARCHAR2(1);
47986 
47987 l_num_entries                 NUMBER;
47988 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47989 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47990 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47991 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47992 l_recog_line_1                NUMBER;
47993 l_recog_line_2                NUMBER;
47994 
47995 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47996 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47997 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47998 
47999 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48000 
48001 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48002 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48003 
48004 ---------------------------------------------------------------------------------------------------------------
48005 
48006 
48007 --
48008 -- bulk performance
48009 --
48010 l_balance_type_code           VARCHAR2(1);
48011 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48012 l_log_module                  VARCHAR2(240);
48013 
48014 --
48015 -- Upgrade strategy
48016 --
48017 l_actual_upg_option           VARCHAR2(1);
48018 l_enc_upg_option           VARCHAR2(1);
48019 
48020 --
48021 BEGIN
48022 --
48023 IF g_log_enabled THEN
48024       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
48025 END IF;
48026 --
48027 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48028 
48029       trace
48030          (p_msg      => 'BEGIN of AcctLineType_104'
48031          ,p_level    => C_LEVEL_PROCEDURE
48032          ,p_module   => l_log_module);
48033 
48034 END IF;
48035 --
48036 l_component_type             := 'AMB_JLT';
48037 l_component_code             := 'PA_RAW_COST_CLEAR_FED';
48038 l_component_type_code        := 'S';
48039 l_component_appl_id          :=  275;
48040 l_amb_context_code           := 'DEFAULT';
48041 l_entity_code                := 'EXPENDITURES';
48042 l_event_class_code           := 'MISC_COST';
48043 l_event_type_code            := 'MISC_COST_ALL';
48044 l_line_definition_owner_code := 'S';
48045 l_line_definition_code       := 'FV_PROJECTS_JLD';
48046 --
48047 l_balance_type_code          := 'A';
48048 l_segment                     := NULL;
48049 l_ccid                        := NULL;
48050 l_adr_transaction_coa_id      := NULL;
48051 l_adr_accounting_coa_id       := NULL;
48052 l_adr_flexfield_segment_code  := NULL;
48053 l_adr_flex_value_set_id       := NULL;
48054 l_adr_value_type_code         := NULL;
48055 l_adr_value_combination_id    := NULL;
48056 l_adr_value_segment_code      := NULL;
48057 
48058 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48059 l_bflow_class_code           := '';    -- 4219869 Business Flow
48060 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48061 l_budgetary_control_flag     := 'N';
48062 
48063 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48064 l_bflow_applied_to_amt       := NULL; -- 5132302
48065 l_entered_amt_idx            := NULL;          -- 4262811
48066 l_accted_amt_idx             := NULL;          -- 4262811
48067 l_acc_rev_flag               := NULL;          -- 4262811
48071  
48068 l_accrual_line_num           := NULL;          -- 4262811
48069 l_tmp_amt                    := NULL;          -- 4262811
48070 --
48072 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48073     l_balance_type_code <> 'B' THEN
48074 
48075    --
48076    XLA_AE_LINES_PKG.SetNewLine;
48077 
48078    p_balance_type_code          := l_balance_type_code;
48079    -- set the flag so later we will know whether the gain loss line needs to be created
48080    
48081    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48082      p_actual_flag :='A';
48083    END IF;
48084 
48085    --
48086    -- bulk performance
48087    --
48088    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48089                                       p_header_num   => 0); -- 4262811
48090    --
48091    -- set accounting line options
48092    --
48093    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48094            p_natural_side_code          => 'C'
48095          , p_gain_or_loss_flag          => 'N'
48096          , p_gl_transfer_mode_code      => 'S'
48097          , p_acct_entry_type_code       => 'A'
48098          , p_switch_side_flag           => 'Y'
48099          , p_merge_duplicate_code       => 'N'
48100          );
48101    --
48102    l_acc_rev_natural_side_code := 'D';  -- 4262811
48103    -- 
48104    --
48105    -- set accounting line type info
48106    --
48107    xla_ae_lines_pkg.SetAcctLineType
48108       (p_component_type             => l_component_type
48109       ,p_event_type_code            => l_event_type_code
48110       ,p_line_definition_owner_code => l_line_definition_owner_code
48111       ,p_line_definition_code       => l_line_definition_code
48112       ,p_accounting_line_code       => l_component_code
48113       ,p_accounting_line_type_code  => l_component_type_code
48114       ,p_accounting_line_appl_id    => l_component_appl_id
48115       ,p_amb_context_code           => l_amb_context_code
48116       ,p_entity_code                => l_entity_code
48117       ,p_event_class_code           => l_event_class_code);
48118    --
48119    -- set accounting class
48120    --
48121    xla_ae_lines_pkg.SetAcctClass(
48122            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
48123          , p_ae_header_id           => l_ae_header_id
48124          );
48125 
48126    --
48127    -- set rounding class
48128    --
48129    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48130                       'FEDERAL_PROJECT_COST_CLEARING';
48131 
48132    --
48133    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48134    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48135    --
48136    -- bulk performance
48137    --
48138    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48139 
48140    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48141       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48142 
48143    -- 4955764
48144    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48145       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48146 
48147    -- 4458381 Public Sector Enh
48148    
48149    --
48150    -- set accounting attributes for the line type
48151    --
48152    l_entered_amt_idx := 22;
48153    l_accted_amt_idx  := 27;
48154    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48155    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
48156    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
48157    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
48158    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
48159    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
48160    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
48161    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
48162    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
48163    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
48164    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
48165    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
48166    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
48167    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
48168    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
48169    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
48170    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
48171    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
48172    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
48173    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
48174    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
48175    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
48176    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
48177    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
48178    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
48179    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
48180    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
48181    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
48182    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
48183    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
48184    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
48185    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
48186    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
48190    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
48187    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
48188    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
48189    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
48191    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
48192    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
48193    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
48194    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
48195    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
48196    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
48197    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
48198    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
48199    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
48200    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
48201    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
48202    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
48203    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
48204    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
48205    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
48206    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
48207    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
48208    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
48209    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
48210    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
48211    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
48212    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
48213    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
48214    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
48215 
48216    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48217    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48218 
48219    ---------------------------------------------------------------------------------------------------------------
48220    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48221    ---------------------------------------------------------------------------------------------------------------
48222    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48223 
48224    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48225    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48226 
48227    IF xla_accounting_cache_pkg.GetValueChar
48228          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48229          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48230    AND l_bflow_method_code = 'PRIOR_ENTRY'
48231 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48232    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48233          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48234        )
48235    THEN
48236          xla_ae_lines_pkg.BflowUpgEntry
48237            (p_business_method_code    => l_bflow_method_code
48238            ,p_business_class_code     => l_bflow_class_code
48239            ,p_balance_type            => l_balance_type_code);
48240    ELSE
48241       NULL;
48242 -- No business flow processing for business flow method of NONE.
48243    END IF;
48244 
48245    --
48246    -- call analytical criteria
48247    --
48248    
48249    --
48250    -- call description
48251    --
48252    -- No description or it is inherited.
48253    --
48254    -- call ADRs
48255    -- Bug 4922099
48256    --
48257    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48258         (NVL(l_actual_upg_option, 'N') = 'O') OR
48259         (NVL(l_enc_upg_option, 'N') = 'O')
48260       )
48261    THEN
48262    NULL;
48263    --
48264    --
48265    
48266   l_ccid := AcctDerRule_14(
48267            p_application_id           => p_application_id
48268          , p_ae_header_id             => l_ae_header_id 
48269 , p_source_5 => p_source_5
48270 , p_source_7 => p_source_7
48271 , p_source_8 => p_source_8
48272          , x_transaction_coa_id       => l_adr_transaction_coa_id
48273          , x_accounting_coa_id        => l_adr_accounting_coa_id
48274          , x_value_type_code          => l_adr_value_type_code
48275          , p_side                     => 'NA'
48276    );
48277 
48278    xla_ae_lines_pkg.set_ccid(
48279     p_code_combination_id          => l_ccid
48280   , p_value_type_code              => l_adr_value_type_code
48281   , p_transaction_coa_id           => l_adr_transaction_coa_id
48282   , p_accounting_coa_id            => l_adr_accounting_coa_id
48283   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
48284   , p_adr_type_code                => 'S'
48285   , p_component_type               => l_component_type
48286   , p_component_code               => l_component_code
48287   , p_component_type_code          => l_component_type_code
48288   , p_component_appl_id            => l_component_appl_id
48289   , p_amb_context_code             => l_amb_context_code
48290   , p_side                         => 'NA'
48291   );
48292 
48293 
48294    l_segment := AcctDerRule_5(
48295            p_application_id           => p_application_id
48296          , p_ae_header_id             => l_ae_header_id 
48297          , x_transaction_coa_id       => l_adr_transaction_coa_id
48298          , x_accounting_coa_id        => l_adr_accounting_coa_id
48299          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
48300          , x_flex_value_set_id        => l_adr_flex_value_set_id
48304          , p_side                     => 'NA'
48301          , x_value_type_code          => l_adr_value_type_code
48302          , x_value_combination_id     => l_adr_value_combination_id
48303          , x_value_segment_code       => l_adr_value_segment_code
48305          , p_override_seg_flag        => 'Y'
48306    );
48307 
48308    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
48309 
48310       xla_ae_lines_pkg.set_segment(
48311           p_to_segment_code         => 'GL_ACCOUNT'
48312         , p_segment_value           => l_segment
48313         , p_from_segment_code       => l_adr_value_segment_code
48314         , p_from_combination_id     => l_adr_value_combination_id
48315         , p_value_type_code         => l_adr_value_type_code
48316         , p_transaction_coa_id      => l_adr_transaction_coa_id
48317         , p_accounting_coa_id       => l_adr_accounting_coa_id
48318         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
48319         , p_flex_value_set_id       => l_adr_flex_value_set_id
48320         , p_adr_code                => 'FV_490201_PROJECTS'
48321         , p_adr_type_code           => 'S'
48322         , p_component_type          => l_component_type
48323         , p_component_code          => l_component_code
48324         , p_component_type_code     => l_component_type_code
48325         , p_component_appl_id       => l_component_appl_id
48326         , p_amb_context_code        => l_amb_context_code
48327         , p_entity_code             => 'EXPENDITURES'
48328         , p_event_class_code        => 'MISC_COST'
48329         , p_side                    => 'NA'
48330         );
48331 
48332   END IF;
48333 
48334    --
48335    --
48336    END IF;
48337    --
48338    -- Bug 4922099
48339    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48340           (NVL(l_enc_upg_option, 'N') = 'O')
48341         ) AND
48342         (l_bflow_method_code = 'PRIOR_ENTRY')
48343       )
48344    THEN
48345       IF
48346       --
48347       1 = 2
48348       --
48349       THEN
48350       xla_accounting_err_pkg.build_message
48351                                     (p_appli_s_name            => 'XLA'
48352                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48353                                     ,p_token_1                 => 'LINE_NUMBER'
48354                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48355                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48356                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48357                                                                              l_component_type
48358                                                                             ,l_component_code
48359                                                                             ,l_component_type_code
48360                                                                             ,l_component_appl_id
48361                                                                             ,l_amb_context_code
48362                                                                             ,l_entity_code
48363                                                                             ,l_event_class_code
48364                                                                            )
48365                                     ,p_token_3                 => 'OWNER'
48366                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48367                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48368                                                                           ,p_lookup_code    => l_component_type_code
48369                                                                          )
48370                                     ,p_token_4                 => 'PRODUCT_NAME'
48371                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48372                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48373                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48374                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48375                                     ,p_ae_header_id            =>  NULL
48376                                        );
48377 
48378         IF (C_LEVEL_ERROR>= g_log_level) THEN
48379                  trace
48380                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48381                       ,p_level    => C_LEVEL_ERROR
48382                       ,p_module   => l_log_module);
48383         END IF;
48384       END IF;
48385    END IF;
48386    --
48387    --
48388    ------------------------------------------------------------------------------------------------
48389    -- 4219869 Business Flow
48390    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48391    -- Prior Entry.  Currently, the following code is always generated.
48392    ------------------------------------------------------------------------------------------------
48393    XLA_AE_LINES_PKG.ValidateCurrentLine;
48394 
48395    ------------------------------------------------------------------------------------
48396    -- 4219869 Business Flow
48397    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48398    ------------------------------------------------------------------------------------
48399    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48400 
48401    ----------------------------------------------------------------------------------
48402    -- 4219869 Business Flow
48403    -- Update journal entry status -- Need to generate this within IF <condition>
48404    ----------------------------------------------------------------------------------
48408          );
48405    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48406          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48407          ,p_balance_type_code => l_balance_type_code
48409 
48410    -------------------------------------------------------------------------------------------
48411    -- 4262811 - Generate the Accrual Reversal lines
48412    -------------------------------------------------------------------------------------------
48413    BEGIN
48414       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48415                               (g_array_event(p_event_id).array_value_num('header_index'));
48416       IF l_acc_rev_flag IS NULL THEN
48417          l_acc_rev_flag := 'N';
48418       END IF;
48419    EXCEPTION
48420       WHEN OTHERS THEN
48421          l_acc_rev_flag := 'N';
48422    END;
48423    --
48424    IF (l_acc_rev_flag = 'Y') THEN
48425 
48426        -- 4645092  ------------------------------------------------------------------------------
48427        -- To allow MPA report to determine if it should generate report process
48428        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48429        ------------------------------------------------------------------------------------------
48430 
48431        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48432        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48433 
48434        --
48435        -- Update the line information that should be overwritten
48436        --
48437        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48438                                          p_header_num   => 1);
48439        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48440 
48441        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48442 
48443        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48444           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48445        END IF;
48446 
48447       --
48448       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48449       --
48450       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48451           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48452       ELSE
48453           ---------------------------------------------------------------------------------------------------
48454           -- 4262811a Switch Sign
48455           ---------------------------------------------------------------------------------------------------
48456           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48457           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48458                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48459           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48460                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48461           -- 5132302
48462           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48463                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48464 
48465       END IF;
48466 
48467       -- 4955764
48468       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48469       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48470 
48471 
48472       XLA_AE_LINES_PKG.ValidateCurrentLine;
48473       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48474 
48475       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48476                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48477                ,p_balance_type_code => l_balance_type_code);
48478 
48479    END IF;
48480 
48481    -----------------------------------------------------------------------------------------
48482    -- 4262811 Multiperiod Accounting
48483    -----------------------------------------------------------------------------------------
48484      -- No MPA option is assigned.
48485 
48486 
48487 END IF;
48488 --
48489 
48490 --
48491 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48492    trace
48493       (p_msg      => 'END of AcctLineType_104'
48494       ,p_level    => C_LEVEL_PROCEDURE
48495       ,p_module   => l_log_module);
48496 END IF;
48497 --
48498 EXCEPTION
48499   WHEN xla_exceptions_pkg.application_exception THEN
48500       RAISE;
48501   WHEN OTHERS THEN
48502        xla_exceptions_pkg.raise_message
48503            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_104');
48504 END AcctLineType_104;
48505 --
48506 
48507 ---------------------------------------
48508 --
48509 -- PRIVATE FUNCTION
48510 --         AcctLineType_105
48511 --
48512 ---------------------------------------
48513 PROCEDURE AcctLineType_105 (
48514   p_application_id        IN NUMBER
48515  ,p_event_id              IN NUMBER
48516  ,p_calculate_acctd_flag  IN VARCHAR2
48517  ,p_calculate_g_l_flag    IN VARCHAR2
48518  ,p_actual_flag           IN OUT VARCHAR2
48519  ,p_balance_type_code     OUT VARCHAR2
48520  ,p_gain_or_loss_ref      OUT VARCHAR2
48521  
48522 --Cost CCID
48523  , p_source_4            IN NUMBER
48524 --Allow Account Override Flag
48525  , p_source_5            IN VARCHAR2
48526 --Cost Clearing CCID
48527  , p_source_7            IN NUMBER
48528 --Adjustment Cost Clearing CCID
48529  , p_source_8            IN NUMBER
48530 --Reversing Line Flag
48531  , p_source_23            IN VARCHAR2
48535  , p_source_25            IN NUMBER
48532 --Actual Upgrade Credit Accounting Class
48533  , p_source_24            IN VARCHAR2
48534 --Entered Raw Cost
48536 --Entered Currency Code
48537  , p_source_26            IN VARCHAR2
48538 --Accounted Raw Cost
48539  , p_source_27            IN NUMBER
48540 --Exchange Rate Date
48541  , p_source_28            IN DATE
48542 --Exchange Rate
48543  , p_source_29            IN NUMBER
48544 --Exchange Rate Type
48545  , p_source_30            IN VARCHAR2
48546 --Actual Upgrade Debit Accounting Class
48547  , p_source_31            IN VARCHAR2
48548 --Use Actuals Upgrade Attributes Flag
48549  , p_source_32            IN VARCHAR2
48550 --Expenditure Item ID
48551  , p_source_33            IN NUMBER
48552 --Cost Distribution Line Number
48553  , p_source_34            IN NUMBER
48554 --Line Type
48555  , p_source_35            IN VARCHAR2
48556  , p_source_35_meaning    IN VARCHAR2
48557 --Reversed Line Number
48558  , p_source_36            IN NUMBER
48559 )
48560 IS
48561 
48562 l_component_type              VARCHAR2(80);
48563 l_component_code              VARCHAR2(30);
48564 l_component_type_code         VARCHAR2(1);
48565 l_component_appl_id           INTEGER;
48566 l_amb_context_code            VARCHAR2(30);
48567 l_entity_code                 VARCHAR2(30);
48568 l_event_class_code            VARCHAR2(30);
48569 l_ae_header_id                NUMBER;
48570 l_event_type_code             VARCHAR2(30);
48571 l_line_definition_code        VARCHAR2(30);
48572 l_line_definition_owner_code  VARCHAR2(1);
48573 --
48574 -- adr variables
48575 l_segment                     VARCHAR2(30);
48576 l_ccid                        NUMBER;
48577 l_adr_transaction_coa_id      NUMBER;
48578 l_adr_accounting_coa_id       NUMBER;
48579 l_adr_flexfield_segment_code  VARCHAR2(30);
48580 l_adr_flex_value_set_id       NUMBER;
48581 l_adr_value_type_code         VARCHAR2(30);
48582 l_adr_value_combination_id    NUMBER;
48583 l_adr_value_segment_code      VARCHAR2(30);
48584 
48585 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48586 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48587 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48588 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48589 
48590 -- 4262811 Variables ------------------------------------------------------------------------------------------
48591 l_entered_amt_idx             NUMBER;
48592 l_accted_amt_idx              NUMBER;
48593 l_acc_rev_flag                VARCHAR2(1);
48594 l_accrual_line_num            NUMBER;
48595 l_tmp_amt                     NUMBER;
48596 l_acc_rev_natural_side_code   VARCHAR2(1);
48597 
48598 l_num_entries                 NUMBER;
48599 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48600 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48601 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48602 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48603 l_recog_line_1                NUMBER;
48604 l_recog_line_2                NUMBER;
48605 
48606 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48607 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48608 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48609 
48610 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48611 
48612 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48613 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48614 
48615 ---------------------------------------------------------------------------------------------------------------
48616 
48617 
48618 --
48619 -- bulk performance
48620 --
48621 l_balance_type_code           VARCHAR2(1);
48622 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48623 l_log_module                  VARCHAR2(240);
48624 
48625 --
48626 -- Upgrade strategy
48627 --
48628 l_actual_upg_option           VARCHAR2(1);
48629 l_enc_upg_option           VARCHAR2(1);
48630 
48631 --
48632 BEGIN
48633 --
48634 IF g_log_enabled THEN
48635       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
48636 END IF;
48637 --
48638 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48639 
48640       trace
48641          (p_msg      => 'BEGIN of AcctLineType_105'
48642          ,p_level    => C_LEVEL_PROCEDURE
48643          ,p_module   => l_log_module);
48644 
48645 END IF;
48646 --
48647 l_component_type             := 'AMB_JLT';
48648 l_component_code             := 'PA_RAW_COST_CLEAR_FED';
48649 l_component_type_code        := 'S';
48650 l_component_appl_id          :=  275;
48651 l_amb_context_code           := 'DEFAULT';
48652 l_entity_code                := 'EXPENDITURES';
48653 l_event_class_code           := 'WIP_COST';
48654 l_event_type_code            := 'WIP_COST_ALL';
48655 l_line_definition_owner_code := 'S';
48656 l_line_definition_code       := 'FV_PROJECTS_JLD';
48657 --
48658 l_balance_type_code          := 'A';
48659 l_segment                     := NULL;
48660 l_ccid                        := NULL;
48661 l_adr_transaction_coa_id      := NULL;
48662 l_adr_accounting_coa_id       := NULL;
48663 l_adr_flexfield_segment_code  := NULL;
48664 l_adr_flex_value_set_id       := NULL;
48665 l_adr_value_type_code         := NULL;
48666 l_adr_value_combination_id    := NULL;
48667 l_adr_value_segment_code      := NULL;
48668 
48669 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48670 l_bflow_class_code           := '';    -- 4219869 Business Flow
48671 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48672 l_budgetary_control_flag     := 'N';
48676 l_entered_amt_idx            := NULL;          -- 4262811
48673 
48674 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48675 l_bflow_applied_to_amt       := NULL; -- 5132302
48677 l_accted_amt_idx             := NULL;          -- 4262811
48678 l_acc_rev_flag               := NULL;          -- 4262811
48679 l_accrual_line_num           := NULL;          -- 4262811
48680 l_tmp_amt                    := NULL;          -- 4262811
48681 --
48682  
48683 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48684     l_balance_type_code <> 'B' THEN
48685 
48686    --
48687    XLA_AE_LINES_PKG.SetNewLine;
48688 
48689    p_balance_type_code          := l_balance_type_code;
48690    -- set the flag so later we will know whether the gain loss line needs to be created
48691    
48692    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48693      p_actual_flag :='A';
48694    END IF;
48695 
48696    --
48697    -- bulk performance
48698    --
48699    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48700                                       p_header_num   => 0); -- 4262811
48701    --
48702    -- set accounting line options
48703    --
48704    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48705            p_natural_side_code          => 'C'
48706          , p_gain_or_loss_flag          => 'N'
48707          , p_gl_transfer_mode_code      => 'S'
48708          , p_acct_entry_type_code       => 'A'
48709          , p_switch_side_flag           => 'Y'
48710          , p_merge_duplicate_code       => 'N'
48711          );
48712    --
48713    l_acc_rev_natural_side_code := 'D';  -- 4262811
48714    -- 
48715    --
48716    -- set accounting line type info
48717    --
48718    xla_ae_lines_pkg.SetAcctLineType
48719       (p_component_type             => l_component_type
48720       ,p_event_type_code            => l_event_type_code
48721       ,p_line_definition_owner_code => l_line_definition_owner_code
48722       ,p_line_definition_code       => l_line_definition_code
48723       ,p_accounting_line_code       => l_component_code
48724       ,p_accounting_line_type_code  => l_component_type_code
48725       ,p_accounting_line_appl_id    => l_component_appl_id
48726       ,p_amb_context_code           => l_amb_context_code
48727       ,p_entity_code                => l_entity_code
48728       ,p_event_class_code           => l_event_class_code);
48729    --
48730    -- set accounting class
48731    --
48732    xla_ae_lines_pkg.SetAcctClass(
48733            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
48734          , p_ae_header_id           => l_ae_header_id
48735          );
48736 
48737    --
48738    -- set rounding class
48739    --
48740    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48741                       'FEDERAL_PROJECT_COST_CLEARING';
48742 
48743    --
48744    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48745    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48746    --
48747    -- bulk performance
48748    --
48749    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48750 
48751    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48752       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48753 
48754    -- 4955764
48755    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48756       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48757 
48758    -- 4458381 Public Sector Enh
48759    
48760    --
48761    -- set accounting attributes for the line type
48762    --
48763    l_entered_amt_idx := 22;
48764    l_accted_amt_idx  := 27;
48765    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48766    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
48767    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
48768    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
48769    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
48770    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
48771    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
48772    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
48773    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
48774    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
48775    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
48776    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
48777    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
48778    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
48779    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
48780    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
48781    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
48782    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
48783    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
48784    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
48785    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
48786    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
48787    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
48788    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
48789    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
48790    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
48791    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
48792    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
48793    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
48797    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
48794    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
48795    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
48796    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
48798    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
48799    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
48800    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
48801    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
48802    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
48803    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
48804    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
48805    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
48806    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
48807    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
48808    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
48809    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
48810    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
48811    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
48812    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
48813    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
48814    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
48815    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
48816    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
48817    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
48818    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
48819    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
48820    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
48821    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
48822    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
48823    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
48824    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
48825    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
48826 
48827    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48828    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48829 
48830    ---------------------------------------------------------------------------------------------------------------
48831    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48832    ---------------------------------------------------------------------------------------------------------------
48833    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48834 
48835    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48836    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48837 
48838    IF xla_accounting_cache_pkg.GetValueChar
48839          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48840          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48841    AND l_bflow_method_code = 'PRIOR_ENTRY'
48842 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48843    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48844          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48845        )
48846    THEN
48847          xla_ae_lines_pkg.BflowUpgEntry
48848            (p_business_method_code    => l_bflow_method_code
48849            ,p_business_class_code     => l_bflow_class_code
48850            ,p_balance_type            => l_balance_type_code);
48851    ELSE
48852       NULL;
48853 -- No business flow processing for business flow method of NONE.
48854    END IF;
48855 
48856    --
48857    -- call analytical criteria
48858    --
48859    
48860    --
48861    -- call description
48862    --
48863    -- No description or it is inherited.
48864    --
48865    -- call ADRs
48866    -- Bug 4922099
48867    --
48868    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48869         (NVL(l_actual_upg_option, 'N') = 'O') OR
48870         (NVL(l_enc_upg_option, 'N') = 'O')
48871       )
48872    THEN
48873    NULL;
48874    --
48875    --
48876    
48877   l_ccid := AcctDerRule_14(
48878            p_application_id           => p_application_id
48879          , p_ae_header_id             => l_ae_header_id 
48880 , p_source_5 => p_source_5
48881 , p_source_7 => p_source_7
48882 , p_source_8 => p_source_8
48883          , x_transaction_coa_id       => l_adr_transaction_coa_id
48884          , x_accounting_coa_id        => l_adr_accounting_coa_id
48885          , x_value_type_code          => l_adr_value_type_code
48886          , p_side                     => 'NA'
48887    );
48888 
48889    xla_ae_lines_pkg.set_ccid(
48890     p_code_combination_id          => l_ccid
48891   , p_value_type_code              => l_adr_value_type_code
48892   , p_transaction_coa_id           => l_adr_transaction_coa_id
48893   , p_accounting_coa_id            => l_adr_accounting_coa_id
48894   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
48895   , p_adr_type_code                => 'S'
48896   , p_component_type               => l_component_type
48897   , p_component_code               => l_component_code
48898   , p_component_type_code          => l_component_type_code
48899   , p_component_appl_id            => l_component_appl_id
48900   , p_amb_context_code             => l_amb_context_code
48901   , p_side                         => 'NA'
48902   );
48903 
48904 
48905    l_segment := AcctDerRule_5(
48906            p_application_id           => p_application_id
48907          , p_ae_header_id             => l_ae_header_id 
48911          , x_flex_value_set_id        => l_adr_flex_value_set_id
48908          , x_transaction_coa_id       => l_adr_transaction_coa_id
48909          , x_accounting_coa_id        => l_adr_accounting_coa_id
48910          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
48912          , x_value_type_code          => l_adr_value_type_code
48913          , x_value_combination_id     => l_adr_value_combination_id
48914          , x_value_segment_code       => l_adr_value_segment_code
48915          , p_side                     => 'NA'
48916          , p_override_seg_flag        => 'Y'
48917    );
48918 
48919    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
48920 
48921       xla_ae_lines_pkg.set_segment(
48922           p_to_segment_code         => 'GL_ACCOUNT'
48923         , p_segment_value           => l_segment
48924         , p_from_segment_code       => l_adr_value_segment_code
48925         , p_from_combination_id     => l_adr_value_combination_id
48926         , p_value_type_code         => l_adr_value_type_code
48927         , p_transaction_coa_id      => l_adr_transaction_coa_id
48928         , p_accounting_coa_id       => l_adr_accounting_coa_id
48929         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
48930         , p_flex_value_set_id       => l_adr_flex_value_set_id
48931         , p_adr_code                => 'FV_490201_PROJECTS'
48932         , p_adr_type_code           => 'S'
48933         , p_component_type          => l_component_type
48934         , p_component_code          => l_component_code
48935         , p_component_type_code     => l_component_type_code
48936         , p_component_appl_id       => l_component_appl_id
48937         , p_amb_context_code        => l_amb_context_code
48938         , p_entity_code             => 'EXPENDITURES'
48939         , p_event_class_code        => 'WIP_COST'
48940         , p_side                    => 'NA'
48941         );
48942 
48943   END IF;
48944 
48945    --
48946    --
48947    END IF;
48948    --
48949    -- Bug 4922099
48950    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48951           (NVL(l_enc_upg_option, 'N') = 'O')
48952         ) AND
48953         (l_bflow_method_code = 'PRIOR_ENTRY')
48954       )
48955    THEN
48956       IF
48957       --
48958       1 = 2
48959       --
48960       THEN
48961       xla_accounting_err_pkg.build_message
48962                                     (p_appli_s_name            => 'XLA'
48963                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48964                                     ,p_token_1                 => 'LINE_NUMBER'
48965                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48966                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48967                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48968                                                                              l_component_type
48969                                                                             ,l_component_code
48970                                                                             ,l_component_type_code
48971                                                                             ,l_component_appl_id
48972                                                                             ,l_amb_context_code
48973                                                                             ,l_entity_code
48974                                                                             ,l_event_class_code
48975                                                                            )
48976                                     ,p_token_3                 => 'OWNER'
48977                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48978                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48979                                                                           ,p_lookup_code    => l_component_type_code
48980                                                                          )
48981                                     ,p_token_4                 => 'PRODUCT_NAME'
48982                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48983                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48984                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48985                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48986                                     ,p_ae_header_id            =>  NULL
48987                                        );
48988 
48989         IF (C_LEVEL_ERROR>= g_log_level) THEN
48990                  trace
48991                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48992                       ,p_level    => C_LEVEL_ERROR
48993                       ,p_module   => l_log_module);
48994         END IF;
48995       END IF;
48996    END IF;
48997    --
48998    --
48999    ------------------------------------------------------------------------------------------------
49000    -- 4219869 Business Flow
49001    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49002    -- Prior Entry.  Currently, the following code is always generated.
49003    ------------------------------------------------------------------------------------------------
49004    XLA_AE_LINES_PKG.ValidateCurrentLine;
49005 
49006    ------------------------------------------------------------------------------------
49007    -- 4219869 Business Flow
49008    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49009    ------------------------------------------------------------------------------------
49010    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49011 
49015    ----------------------------------------------------------------------------------
49012    ----------------------------------------------------------------------------------
49013    -- 4219869 Business Flow
49014    -- Update journal entry status -- Need to generate this within IF <condition>
49016    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49017          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49018          ,p_balance_type_code => l_balance_type_code
49019          );
49020 
49021    -------------------------------------------------------------------------------------------
49022    -- 4262811 - Generate the Accrual Reversal lines
49023    -------------------------------------------------------------------------------------------
49024    BEGIN
49025       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49026                               (g_array_event(p_event_id).array_value_num('header_index'));
49027       IF l_acc_rev_flag IS NULL THEN
49028          l_acc_rev_flag := 'N';
49029       END IF;
49030    EXCEPTION
49031       WHEN OTHERS THEN
49032          l_acc_rev_flag := 'N';
49033    END;
49034    --
49035    IF (l_acc_rev_flag = 'Y') THEN
49036 
49037        -- 4645092  ------------------------------------------------------------------------------
49038        -- To allow MPA report to determine if it should generate report process
49039        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49040        ------------------------------------------------------------------------------------------
49041 
49042        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49043        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49044 
49045        --
49046        -- Update the line information that should be overwritten
49047        --
49048        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49049                                          p_header_num   => 1);
49050        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49051 
49052        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49053 
49054        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49055           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49056        END IF;
49057 
49058       --
49059       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49060       --
49061       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49062           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49063       ELSE
49064           ---------------------------------------------------------------------------------------------------
49065           -- 4262811a Switch Sign
49066           ---------------------------------------------------------------------------------------------------
49067           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49068           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49069                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49070           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49071                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49072           -- 5132302
49073           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49074                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49075 
49076       END IF;
49077 
49078       -- 4955764
49079       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49080       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49081 
49082 
49083       XLA_AE_LINES_PKG.ValidateCurrentLine;
49084       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49085 
49086       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49087                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49088                ,p_balance_type_code => l_balance_type_code);
49089 
49090    END IF;
49091 
49092    -----------------------------------------------------------------------------------------
49093    -- 4262811 Multiperiod Accounting
49094    -----------------------------------------------------------------------------------------
49095      -- No MPA option is assigned.
49096 
49097 
49098 END IF;
49099 --
49100 
49101 --
49102 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49103    trace
49104       (p_msg      => 'END of AcctLineType_105'
49105       ,p_level    => C_LEVEL_PROCEDURE
49106       ,p_module   => l_log_module);
49107 END IF;
49108 --
49109 EXCEPTION
49110   WHEN xla_exceptions_pkg.application_exception THEN
49111       RAISE;
49112   WHEN OTHERS THEN
49113        xla_exceptions_pkg.raise_message
49114            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_105');
49115 END AcctLineType_105;
49116 --
49117 
49118 ---------------------------------------
49119 --
49120 -- PRIVATE FUNCTION
49121 --         AcctLineType_106
49122 --
49123 ---------------------------------------
49124 PROCEDURE AcctLineType_106 (
49125   p_application_id        IN NUMBER
49126  ,p_event_id              IN NUMBER
49127  ,p_calculate_acctd_flag  IN VARCHAR2
49128  ,p_calculate_g_l_flag    IN VARCHAR2
49129  ,p_actual_flag           IN OUT VARCHAR2
49130  ,p_balance_type_code     OUT VARCHAR2
49131  ,p_gain_or_loss_ref      OUT VARCHAR2
49132  
49133 --Cost CCID
49134  , p_source_4            IN NUMBER
49138  , p_source_7            IN NUMBER
49135 --Allow Account Override Flag
49136  , p_source_5            IN VARCHAR2
49137 --Cost Clearing CCID
49139 --Adjustment Cost Clearing CCID
49140  , p_source_8            IN NUMBER
49141 --Exchange Rate Variance Flag
49142  , p_source_22            IN VARCHAR2
49143 --Reversing Line Flag
49144  , p_source_23            IN VARCHAR2
49145 --Actual Upgrade Credit Accounting Class
49146  , p_source_24            IN VARCHAR2
49147 --Entered Raw Cost
49148  , p_source_25            IN NUMBER
49149 --Entered Currency Code
49150  , p_source_26            IN VARCHAR2
49151 --Accounted Raw Cost
49152  , p_source_27            IN NUMBER
49153 --Exchange Rate Date
49154  , p_source_28            IN DATE
49155 --Exchange Rate
49156  , p_source_29            IN NUMBER
49157 --Exchange Rate Type
49158  , p_source_30            IN VARCHAR2
49159 --Actual Upgrade Debit Accounting Class
49160  , p_source_31            IN VARCHAR2
49161 --Use Actuals Upgrade Attributes Flag
49162  , p_source_32            IN VARCHAR2
49163 --Expenditure Item ID
49164  , p_source_33            IN NUMBER
49165 --Cost Distribution Line Number
49166  , p_source_34            IN NUMBER
49167 --Line Type
49168  , p_source_35            IN VARCHAR2
49169  , p_source_35_meaning    IN VARCHAR2
49170 --Reversed Line Number
49171  , p_source_36            IN NUMBER
49172 )
49173 IS
49174 
49175 l_component_type              VARCHAR2(80);
49176 l_component_code              VARCHAR2(30);
49177 l_component_type_code         VARCHAR2(1);
49178 l_component_appl_id           INTEGER;
49179 l_amb_context_code            VARCHAR2(30);
49180 l_entity_code                 VARCHAR2(30);
49181 l_event_class_code            VARCHAR2(30);
49182 l_ae_header_id                NUMBER;
49183 l_event_type_code             VARCHAR2(30);
49184 l_line_definition_code        VARCHAR2(30);
49185 l_line_definition_owner_code  VARCHAR2(1);
49186 --
49187 -- adr variables
49188 l_segment                     VARCHAR2(30);
49189 l_ccid                        NUMBER;
49190 l_adr_transaction_coa_id      NUMBER;
49191 l_adr_accounting_coa_id       NUMBER;
49192 l_adr_flexfield_segment_code  VARCHAR2(30);
49193 l_adr_flex_value_set_id       NUMBER;
49194 l_adr_value_type_code         VARCHAR2(30);
49195 l_adr_value_combination_id    NUMBER;
49196 l_adr_value_segment_code      VARCHAR2(30);
49197 
49198 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49199 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49200 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49201 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49202 
49203 -- 4262811 Variables ------------------------------------------------------------------------------------------
49204 l_entered_amt_idx             NUMBER;
49205 l_accted_amt_idx              NUMBER;
49206 l_acc_rev_flag                VARCHAR2(1);
49207 l_accrual_line_num            NUMBER;
49208 l_tmp_amt                     NUMBER;
49209 l_acc_rev_natural_side_code   VARCHAR2(1);
49210 
49211 l_num_entries                 NUMBER;
49212 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49213 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49214 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49215 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49216 l_recog_line_1                NUMBER;
49217 l_recog_line_2                NUMBER;
49218 
49219 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49220 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49221 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49222 
49223 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49224 
49225 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49226 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49227 
49228 ---------------------------------------------------------------------------------------------------------------
49229 
49230 
49231 --
49232 -- bulk performance
49233 --
49234 l_balance_type_code           VARCHAR2(1);
49235 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49236 l_log_module                  VARCHAR2(240);
49237 
49238 --
49239 -- Upgrade strategy
49240 --
49241 l_actual_upg_option           VARCHAR2(1);
49242 l_enc_upg_option           VARCHAR2(1);
49243 
49244 --
49245 BEGIN
49246 --
49247 IF g_log_enabled THEN
49248       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
49249 END IF;
49250 --
49251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49252 
49253       trace
49254          (p_msg      => 'BEGIN of AcctLineType_106'
49255          ,p_level    => C_LEVEL_PROCEDURE
49256          ,p_module   => l_log_module);
49257 
49258 END IF;
49259 --
49260 l_component_type             := 'AMB_JLT';
49261 l_component_code             := 'PA_RAW_COST_CLEAR_FED';
49262 l_component_type_code        := 'S';
49263 l_component_appl_id          :=  275;
49264 l_amb_context_code           := 'DEFAULT';
49265 l_entity_code                := 'EXPENDITURES';
49266 l_event_class_code           := 'SUPPLIER_COST';
49267 l_event_type_code            := 'SUPPLIER_COST_ALL';
49268 l_line_definition_owner_code := 'S';
49269 l_line_definition_code       := 'FV_PROJECTS_JLD';
49270 --
49271 l_balance_type_code          := 'A';
49272 l_segment                     := NULL;
49273 l_ccid                        := NULL;
49274 l_adr_transaction_coa_id      := NULL;
49275 l_adr_accounting_coa_id       := NULL;
49276 l_adr_flexfield_segment_code  := NULL;
49280 l_adr_value_segment_code      := NULL;
49277 l_adr_flex_value_set_id       := NULL;
49278 l_adr_value_type_code         := NULL;
49279 l_adr_value_combination_id    := NULL;
49281 
49282 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49283 l_bflow_class_code           := '';    -- 4219869 Business Flow
49284 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49285 l_budgetary_control_flag     := 'N';
49286 
49287 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49288 l_bflow_applied_to_amt       := NULL; -- 5132302
49289 l_entered_amt_idx            := NULL;          -- 4262811
49290 l_accted_amt_idx             := NULL;          -- 4262811
49291 l_acc_rev_flag               := NULL;          -- 4262811
49292 l_accrual_line_num           := NULL;          -- 4262811
49293 l_tmp_amt                    := NULL;          -- 4262811
49294 --
49295  
49296 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49297     l_balance_type_code <> 'B' THEN
49298 IF NVL(p_source_22,'
49299 ') =  'N'
49300  THEN 
49301 
49302    --
49303    XLA_AE_LINES_PKG.SetNewLine;
49304 
49305    p_balance_type_code          := l_balance_type_code;
49306    -- set the flag so later we will know whether the gain loss line needs to be created
49307    
49308    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49309      p_actual_flag :='A';
49310    END IF;
49311 
49312    --
49313    -- bulk performance
49314    --
49315    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49316                                       p_header_num   => 0); -- 4262811
49317    --
49318    -- set accounting line options
49319    --
49320    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49321            p_natural_side_code          => 'C'
49322          , p_gain_or_loss_flag          => 'N'
49323          , p_gl_transfer_mode_code      => 'S'
49324          , p_acct_entry_type_code       => 'A'
49325          , p_switch_side_flag           => 'Y'
49326          , p_merge_duplicate_code       => 'N'
49327          );
49328    --
49329    l_acc_rev_natural_side_code := 'D';  -- 4262811
49330    -- 
49331    --
49332    -- set accounting line type info
49333    --
49334    xla_ae_lines_pkg.SetAcctLineType
49335       (p_component_type             => l_component_type
49336       ,p_event_type_code            => l_event_type_code
49337       ,p_line_definition_owner_code => l_line_definition_owner_code
49338       ,p_line_definition_code       => l_line_definition_code
49339       ,p_accounting_line_code       => l_component_code
49340       ,p_accounting_line_type_code  => l_component_type_code
49341       ,p_accounting_line_appl_id    => l_component_appl_id
49342       ,p_amb_context_code           => l_amb_context_code
49343       ,p_entity_code                => l_entity_code
49344       ,p_event_class_code           => l_event_class_code);
49345    --
49346    -- set accounting class
49347    --
49348    xla_ae_lines_pkg.SetAcctClass(
49349            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
49350          , p_ae_header_id           => l_ae_header_id
49351          );
49352 
49353    --
49354    -- set rounding class
49355    --
49356    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49357                       'FEDERAL_PROJECT_COST_CLEARING';
49358 
49359    --
49360    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49361    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49362    --
49363    -- bulk performance
49364    --
49365    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49366 
49367    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49368       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49369 
49370    -- 4955764
49371    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49373 
49374    -- 4458381 Public Sector Enh
49375    
49376    --
49377    -- set accounting attributes for the line type
49378    --
49379    l_entered_amt_idx := 22;
49380    l_accted_amt_idx  := 27;
49381    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49382    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
49383    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
49384    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
49385    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
49386    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
49387    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
49388    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
49389    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
49390    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
49391    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
49392    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
49393    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
49394    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
49395    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
49396    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
49397    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
49398    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
49399    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
49400    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
49401    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
49405    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
49402    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
49403    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
49404    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
49406    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
49407    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
49408    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
49409    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
49410    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
49411    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
49412    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
49413    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
49414    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
49415    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
49416    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
49417    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
49418    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
49419    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
49420    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
49421    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
49422    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
49423    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
49424    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
49425    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
49426    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
49427    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
49428    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
49429    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
49430    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
49431    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
49432    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
49433    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
49434    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
49435    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
49436    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
49437    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
49438    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
49439    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
49440    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
49441    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
49442 
49443    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49444    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49445 
49446    ---------------------------------------------------------------------------------------------------------------
49447    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49448    ---------------------------------------------------------------------------------------------------------------
49449    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49450 
49451    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49452    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49453 
49454    IF xla_accounting_cache_pkg.GetValueChar
49455          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49456          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49457    AND l_bflow_method_code = 'PRIOR_ENTRY'
49458 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49459    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49460          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49461        )
49462    THEN
49463          xla_ae_lines_pkg.BflowUpgEntry
49464            (p_business_method_code    => l_bflow_method_code
49465            ,p_business_class_code     => l_bflow_class_code
49466            ,p_balance_type            => l_balance_type_code);
49467    ELSE
49468       NULL;
49469 -- No business flow processing for business flow method of NONE.
49470    END IF;
49471 
49472    --
49473    -- call analytical criteria
49474    --
49475    
49476    --
49477    -- call description
49478    --
49479    -- No description or it is inherited.
49480    --
49481    -- call ADRs
49482    -- Bug 4922099
49483    --
49484    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49485         (NVL(l_actual_upg_option, 'N') = 'O') OR
49486         (NVL(l_enc_upg_option, 'N') = 'O')
49487       )
49488    THEN
49489    NULL;
49490    --
49491    --
49492    
49493   l_ccid := AcctDerRule_14(
49494            p_application_id           => p_application_id
49495          , p_ae_header_id             => l_ae_header_id 
49496 , p_source_5 => p_source_5
49497 , p_source_7 => p_source_7
49498 , p_source_8 => p_source_8
49499          , x_transaction_coa_id       => l_adr_transaction_coa_id
49500          , x_accounting_coa_id        => l_adr_accounting_coa_id
49501          , x_value_type_code          => l_adr_value_type_code
49502          , p_side                     => 'NA'
49503    );
49504 
49505    xla_ae_lines_pkg.set_ccid(
49506     p_code_combination_id          => l_ccid
49507   , p_value_type_code              => l_adr_value_type_code
49508   , p_transaction_coa_id           => l_adr_transaction_coa_id
49509   , p_accounting_coa_id            => l_adr_accounting_coa_id
49510   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
49511   , p_adr_type_code                => 'S'
49515   , p_component_appl_id            => l_component_appl_id
49512   , p_component_type               => l_component_type
49513   , p_component_code               => l_component_code
49514   , p_component_type_code          => l_component_type_code
49516   , p_amb_context_code             => l_amb_context_code
49517   , p_side                         => 'NA'
49518   );
49519 
49520 
49521    l_segment := AcctDerRule_5(
49522            p_application_id           => p_application_id
49523          , p_ae_header_id             => l_ae_header_id 
49524          , x_transaction_coa_id       => l_adr_transaction_coa_id
49525          , x_accounting_coa_id        => l_adr_accounting_coa_id
49526          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
49527          , x_flex_value_set_id        => l_adr_flex_value_set_id
49528          , x_value_type_code          => l_adr_value_type_code
49529          , x_value_combination_id     => l_adr_value_combination_id
49530          , x_value_segment_code       => l_adr_value_segment_code
49531          , p_side                     => 'NA'
49532          , p_override_seg_flag        => 'Y'
49533    );
49534 
49535    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
49536 
49537       xla_ae_lines_pkg.set_segment(
49538           p_to_segment_code         => 'GL_ACCOUNT'
49539         , p_segment_value           => l_segment
49540         , p_from_segment_code       => l_adr_value_segment_code
49541         , p_from_combination_id     => l_adr_value_combination_id
49542         , p_value_type_code         => l_adr_value_type_code
49543         , p_transaction_coa_id      => l_adr_transaction_coa_id
49544         , p_accounting_coa_id       => l_adr_accounting_coa_id
49545         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
49546         , p_flex_value_set_id       => l_adr_flex_value_set_id
49547         , p_adr_code                => 'FV_490201_PROJECTS'
49548         , p_adr_type_code           => 'S'
49549         , p_component_type          => l_component_type
49550         , p_component_code          => l_component_code
49551         , p_component_type_code     => l_component_type_code
49552         , p_component_appl_id       => l_component_appl_id
49553         , p_amb_context_code        => l_amb_context_code
49554         , p_entity_code             => 'EXPENDITURES'
49555         , p_event_class_code        => 'SUPPLIER_COST'
49556         , p_side                    => 'NA'
49557         );
49558 
49559   END IF;
49560 
49561    --
49562    --
49563    END IF;
49564    --
49565    -- Bug 4922099
49566    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49567           (NVL(l_enc_upg_option, 'N') = 'O')
49568         ) AND
49569         (l_bflow_method_code = 'PRIOR_ENTRY')
49570       )
49571    THEN
49572       IF
49573       --
49574       1 = 2
49575       --
49576       THEN
49577       xla_accounting_err_pkg.build_message
49578                                     (p_appli_s_name            => 'XLA'
49579                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49580                                     ,p_token_1                 => 'LINE_NUMBER'
49581                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49582                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49583                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49584                                                                              l_component_type
49585                                                                             ,l_component_code
49586                                                                             ,l_component_type_code
49587                                                                             ,l_component_appl_id
49588                                                                             ,l_amb_context_code
49589                                                                             ,l_entity_code
49590                                                                             ,l_event_class_code
49591                                                                            )
49592                                     ,p_token_3                 => 'OWNER'
49593                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49594                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49595                                                                           ,p_lookup_code    => l_component_type_code
49596                                                                          )
49597                                     ,p_token_4                 => 'PRODUCT_NAME'
49598                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49599                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49600                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49601                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49602                                     ,p_ae_header_id            =>  NULL
49603                                        );
49604 
49605         IF (C_LEVEL_ERROR>= g_log_level) THEN
49606                  trace
49607                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49608                       ,p_level    => C_LEVEL_ERROR
49609                       ,p_module   => l_log_module);
49610         END IF;
49611       END IF;
49612    END IF;
49613    --
49614    --
49615    ------------------------------------------------------------------------------------------------
49616    -- 4219869 Business Flow
49617    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49621 
49618    -- Prior Entry.  Currently, the following code is always generated.
49619    ------------------------------------------------------------------------------------------------
49620    XLA_AE_LINES_PKG.ValidateCurrentLine;
49622    ------------------------------------------------------------------------------------
49623    -- 4219869 Business Flow
49624    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49625    ------------------------------------------------------------------------------------
49626    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49627 
49628    ----------------------------------------------------------------------------------
49629    -- 4219869 Business Flow
49630    -- Update journal entry status -- Need to generate this within IF <condition>
49631    ----------------------------------------------------------------------------------
49632    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49633          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49634          ,p_balance_type_code => l_balance_type_code
49635          );
49636 
49637    -------------------------------------------------------------------------------------------
49638    -- 4262811 - Generate the Accrual Reversal lines
49639    -------------------------------------------------------------------------------------------
49640    BEGIN
49641       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49642                               (g_array_event(p_event_id).array_value_num('header_index'));
49643       IF l_acc_rev_flag IS NULL THEN
49644          l_acc_rev_flag := 'N';
49645       END IF;
49646    EXCEPTION
49647       WHEN OTHERS THEN
49648          l_acc_rev_flag := 'N';
49649    END;
49650    --
49651    IF (l_acc_rev_flag = 'Y') THEN
49652 
49653        -- 4645092  ------------------------------------------------------------------------------
49654        -- To allow MPA report to determine if it should generate report process
49655        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49656        ------------------------------------------------------------------------------------------
49657 
49658        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49659        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49660 
49661        --
49662        -- Update the line information that should be overwritten
49663        --
49664        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49665                                          p_header_num   => 1);
49666        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49667 
49668        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49669 
49670        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49671           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49672        END IF;
49673 
49674       --
49675       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49676       --
49677       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49678           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49679       ELSE
49680           ---------------------------------------------------------------------------------------------------
49681           -- 4262811a Switch Sign
49682           ---------------------------------------------------------------------------------------------------
49683           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49684           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49685                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49686           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49687                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49688           -- 5132302
49689           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49690                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49691 
49692       END IF;
49693 
49694       -- 4955764
49695       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49697 
49698 
49699       XLA_AE_LINES_PKG.ValidateCurrentLine;
49700       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49701 
49702       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49703                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49704                ,p_balance_type_code => l_balance_type_code);
49705 
49706    END IF;
49707 
49708    -----------------------------------------------------------------------------------------
49709    -- 4262811 Multiperiod Accounting
49710    -----------------------------------------------------------------------------------------
49711      -- No MPA option is assigned.
49712 
49713 
49714 END IF;
49715 END IF;
49716 --
49717 
49718 --
49719 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49720    trace
49721       (p_msg      => 'END of AcctLineType_106'
49722       ,p_level    => C_LEVEL_PROCEDURE
49723       ,p_module   => l_log_module);
49724 END IF;
49725 --
49726 EXCEPTION
49727   WHEN xla_exceptions_pkg.application_exception THEN
49728       RAISE;
49729   WHEN OTHERS THEN
49730        xla_exceptions_pkg.raise_message
49731            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_106');
49732 END AcctLineType_106;
49733 --
49734 
49735 ---------------------------------------
49739 --
49736 --
49737 -- PRIVATE FUNCTION
49738 --         AcctLineType_107
49740 ---------------------------------------
49741 PROCEDURE AcctLineType_107 (
49742   p_application_id        IN NUMBER
49743  ,p_event_id              IN NUMBER
49744  ,p_calculate_acctd_flag  IN VARCHAR2
49745  ,p_calculate_g_l_flag    IN VARCHAR2
49746  ,p_actual_flag           IN OUT VARCHAR2
49747  ,p_balance_type_code     OUT VARCHAR2
49748  ,p_gain_or_loss_ref      OUT VARCHAR2
49749  
49750 --Cost CCID
49751  , p_source_4            IN NUMBER
49752 --Allow Account Override Flag
49753  , p_source_5            IN VARCHAR2
49754 --Cost Clearing CCID
49755  , p_source_7            IN NUMBER
49756 --Adjustment Cost Clearing CCID
49757  , p_source_8            IN NUMBER
49758 --Reversing Line Flag
49759  , p_source_23            IN VARCHAR2
49760 --Actual Upgrade Credit Accounting Class
49761  , p_source_24            IN VARCHAR2
49762 --Entered Raw Cost
49763  , p_source_25            IN NUMBER
49764 --Entered Currency Code
49765  , p_source_26            IN VARCHAR2
49766 --Accounted Raw Cost
49767  , p_source_27            IN NUMBER
49768 --Exchange Rate Date
49769  , p_source_28            IN DATE
49770 --Exchange Rate
49771  , p_source_29            IN NUMBER
49772 --Exchange Rate Type
49773  , p_source_30            IN VARCHAR2
49774 --Actual Upgrade Debit Accounting Class
49775  , p_source_31            IN VARCHAR2
49776 --Use Actuals Upgrade Attributes Flag
49777  , p_source_32            IN VARCHAR2
49778 --Expenditure Item ID
49779  , p_source_33            IN NUMBER
49780 --Cost Distribution Line Number
49781  , p_source_34            IN NUMBER
49782 --Line Type
49783  , p_source_35            IN VARCHAR2
49784  , p_source_35_meaning    IN VARCHAR2
49785 --Reversed Line Number
49786  , p_source_36            IN NUMBER
49787 )
49788 IS
49789 
49790 l_component_type              VARCHAR2(80);
49791 l_component_code              VARCHAR2(30);
49792 l_component_type_code         VARCHAR2(1);
49793 l_component_appl_id           INTEGER;
49794 l_amb_context_code            VARCHAR2(30);
49795 l_entity_code                 VARCHAR2(30);
49796 l_event_class_code            VARCHAR2(30);
49797 l_ae_header_id                NUMBER;
49798 l_event_type_code             VARCHAR2(30);
49799 l_line_definition_code        VARCHAR2(30);
49800 l_line_definition_owner_code  VARCHAR2(1);
49801 --
49802 -- adr variables
49803 l_segment                     VARCHAR2(30);
49804 l_ccid                        NUMBER;
49805 l_adr_transaction_coa_id      NUMBER;
49806 l_adr_accounting_coa_id       NUMBER;
49807 l_adr_flexfield_segment_code  VARCHAR2(30);
49808 l_adr_flex_value_set_id       NUMBER;
49809 l_adr_value_type_code         VARCHAR2(30);
49810 l_adr_value_combination_id    NUMBER;
49811 l_adr_value_segment_code      VARCHAR2(30);
49812 
49813 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49814 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49815 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49816 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49817 
49818 -- 4262811 Variables ------------------------------------------------------------------------------------------
49819 l_entered_amt_idx             NUMBER;
49820 l_accted_amt_idx              NUMBER;
49821 l_acc_rev_flag                VARCHAR2(1);
49822 l_accrual_line_num            NUMBER;
49823 l_tmp_amt                     NUMBER;
49824 l_acc_rev_natural_side_code   VARCHAR2(1);
49825 
49826 l_num_entries                 NUMBER;
49827 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49828 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49829 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49830 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49831 l_recog_line_1                NUMBER;
49832 l_recog_line_2                NUMBER;
49833 
49834 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49835 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49836 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49837 
49838 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49839 
49840 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49841 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49842 
49843 ---------------------------------------------------------------------------------------------------------------
49844 
49845 
49846 --
49847 -- bulk performance
49848 --
49849 l_balance_type_code           VARCHAR2(1);
49850 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49851 l_log_module                  VARCHAR2(240);
49852 
49853 --
49854 -- Upgrade strategy
49855 --
49856 l_actual_upg_option           VARCHAR2(1);
49857 l_enc_upg_option           VARCHAR2(1);
49858 
49859 --
49860 BEGIN
49861 --
49862 IF g_log_enabled THEN
49863       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
49864 END IF;
49865 --
49866 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49867 
49868       trace
49869          (p_msg      => 'BEGIN of AcctLineType_107'
49870          ,p_level    => C_LEVEL_PROCEDURE
49871          ,p_module   => l_log_module);
49872 
49873 END IF;
49874 --
49875 l_component_type             := 'AMB_JLT';
49876 l_component_code             := 'PA_RAW_COST_CLEAR_FED';
49877 l_component_type_code        := 'S';
49878 l_component_appl_id          :=  275;
49879 l_amb_context_code           := 'DEFAULT';
49880 l_entity_code                := 'EXPENDITURES';
49884 l_line_definition_code       := 'FV_PROJECTS_JLD';
49881 l_event_class_code           := 'USG_COST';
49882 l_event_type_code            := 'USG_COST_ALL';
49883 l_line_definition_owner_code := 'S';
49885 --
49886 l_balance_type_code          := 'A';
49887 l_segment                     := NULL;
49888 l_ccid                        := NULL;
49889 l_adr_transaction_coa_id      := NULL;
49890 l_adr_accounting_coa_id       := NULL;
49891 l_adr_flexfield_segment_code  := NULL;
49892 l_adr_flex_value_set_id       := NULL;
49893 l_adr_value_type_code         := NULL;
49894 l_adr_value_combination_id    := NULL;
49895 l_adr_value_segment_code      := NULL;
49896 
49897 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49898 l_bflow_class_code           := '';    -- 4219869 Business Flow
49899 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49900 l_budgetary_control_flag     := 'N';
49901 
49902 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49903 l_bflow_applied_to_amt       := NULL; -- 5132302
49904 l_entered_amt_idx            := NULL;          -- 4262811
49905 l_accted_amt_idx             := NULL;          -- 4262811
49906 l_acc_rev_flag               := NULL;          -- 4262811
49907 l_accrual_line_num           := NULL;          -- 4262811
49908 l_tmp_amt                    := NULL;          -- 4262811
49909 --
49910  
49911 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49912     l_balance_type_code <> 'B' THEN
49913 
49914    --
49915    XLA_AE_LINES_PKG.SetNewLine;
49916 
49917    p_balance_type_code          := l_balance_type_code;
49918    -- set the flag so later we will know whether the gain loss line needs to be created
49919    
49920    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49921      p_actual_flag :='A';
49922    END IF;
49923 
49924    --
49925    -- bulk performance
49926    --
49927    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49928                                       p_header_num   => 0); -- 4262811
49929    --
49930    -- set accounting line options
49931    --
49932    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49933            p_natural_side_code          => 'C'
49934          , p_gain_or_loss_flag          => 'N'
49935          , p_gl_transfer_mode_code      => 'S'
49936          , p_acct_entry_type_code       => 'A'
49937          , p_switch_side_flag           => 'Y'
49938          , p_merge_duplicate_code       => 'N'
49939          );
49940    --
49941    l_acc_rev_natural_side_code := 'D';  -- 4262811
49942    -- 
49943    --
49944    -- set accounting line type info
49945    --
49946    xla_ae_lines_pkg.SetAcctLineType
49947       (p_component_type             => l_component_type
49948       ,p_event_type_code            => l_event_type_code
49949       ,p_line_definition_owner_code => l_line_definition_owner_code
49950       ,p_line_definition_code       => l_line_definition_code
49951       ,p_accounting_line_code       => l_component_code
49952       ,p_accounting_line_type_code  => l_component_type_code
49953       ,p_accounting_line_appl_id    => l_component_appl_id
49954       ,p_amb_context_code           => l_amb_context_code
49955       ,p_entity_code                => l_entity_code
49956       ,p_event_class_code           => l_event_class_code);
49957    --
49958    -- set accounting class
49959    --
49960    xla_ae_lines_pkg.SetAcctClass(
49961            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
49962          , p_ae_header_id           => l_ae_header_id
49963          );
49964 
49965    --
49966    -- set rounding class
49967    --
49968    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49969                       'FEDERAL_PROJECT_COST_CLEARING';
49970 
49971    --
49972    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49973    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49974    --
49975    -- bulk performance
49976    --
49977    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49978 
49979    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49980       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49981 
49982    -- 4955764
49983    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49984       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49985 
49986    -- 4458381 Public Sector Enh
49987    
49988    --
49989    -- set accounting attributes for the line type
49990    --
49991    l_entered_amt_idx := 22;
49992    l_accted_amt_idx  := 27;
49993    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49994    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
49995    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
49996    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
49997    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
49998    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
49999    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
50000    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
50001    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
50002    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
50003    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
50004    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
50005    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
50006    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
50007    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
50011    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
50008    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
50009    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
50010    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
50012    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
50013    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
50014    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
50015    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
50016    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
50017    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
50018    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
50019    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
50020    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
50021    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
50022    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
50023    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
50024    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
50025    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
50026    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
50027    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
50028    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
50029    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
50030    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
50031    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
50032    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
50033    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
50034    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
50035    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
50036    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
50037    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
50038    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
50039    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
50040    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
50041    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
50042    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
50043    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
50044    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
50045    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
50046    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
50047    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
50048    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
50049    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
50050    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
50051    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
50052    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
50053    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
50054 
50055    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50056    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50057 
50058    ---------------------------------------------------------------------------------------------------------------
50059    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50060    ---------------------------------------------------------------------------------------------------------------
50061    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50062 
50063    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50064    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50065 
50066    IF xla_accounting_cache_pkg.GetValueChar
50067          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50068          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50069    AND l_bflow_method_code = 'PRIOR_ENTRY'
50070 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50071    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50072          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50073        )
50074    THEN
50075          xla_ae_lines_pkg.BflowUpgEntry
50076            (p_business_method_code    => l_bflow_method_code
50077            ,p_business_class_code     => l_bflow_class_code
50078            ,p_balance_type            => l_balance_type_code);
50079    ELSE
50080       NULL;
50081 -- No business flow processing for business flow method of NONE.
50082    END IF;
50083 
50084    --
50085    -- call analytical criteria
50086    --
50087    
50088    --
50089    -- call description
50090    --
50091    -- No description or it is inherited.
50092    --
50093    -- call ADRs
50094    -- Bug 4922099
50095    --
50096    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50097         (NVL(l_actual_upg_option, 'N') = 'O') OR
50098         (NVL(l_enc_upg_option, 'N') = 'O')
50099       )
50100    THEN
50101    NULL;
50102    --
50103    --
50104    
50105   l_ccid := AcctDerRule_14(
50106            p_application_id           => p_application_id
50107          , p_ae_header_id             => l_ae_header_id 
50108 , p_source_5 => p_source_5
50109 , p_source_7 => p_source_7
50110 , p_source_8 => p_source_8
50111          , x_transaction_coa_id       => l_adr_transaction_coa_id
50112          , x_accounting_coa_id        => l_adr_accounting_coa_id
50113          , x_value_type_code          => l_adr_value_type_code
50114          , p_side                     => 'NA'
50115    );
50116 
50117    xla_ae_lines_pkg.set_ccid(
50121   , p_accounting_coa_id            => l_adr_accounting_coa_id
50118     p_code_combination_id          => l_ccid
50119   , p_value_type_code              => l_adr_value_type_code
50120   , p_transaction_coa_id           => l_adr_transaction_coa_id
50122   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
50123   , p_adr_type_code                => 'S'
50124   , p_component_type               => l_component_type
50125   , p_component_code               => l_component_code
50126   , p_component_type_code          => l_component_type_code
50127   , p_component_appl_id            => l_component_appl_id
50128   , p_amb_context_code             => l_amb_context_code
50129   , p_side                         => 'NA'
50130   );
50131 
50132 
50133    l_segment := AcctDerRule_5(
50134            p_application_id           => p_application_id
50135          , p_ae_header_id             => l_ae_header_id 
50136          , x_transaction_coa_id       => l_adr_transaction_coa_id
50137          , x_accounting_coa_id        => l_adr_accounting_coa_id
50138          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
50139          , x_flex_value_set_id        => l_adr_flex_value_set_id
50140          , x_value_type_code          => l_adr_value_type_code
50141          , x_value_combination_id     => l_adr_value_combination_id
50142          , x_value_segment_code       => l_adr_value_segment_code
50143          , p_side                     => 'NA'
50144          , p_override_seg_flag        => 'Y'
50145    );
50146 
50147    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
50148 
50149       xla_ae_lines_pkg.set_segment(
50150           p_to_segment_code         => 'GL_ACCOUNT'
50151         , p_segment_value           => l_segment
50152         , p_from_segment_code       => l_adr_value_segment_code
50153         , p_from_combination_id     => l_adr_value_combination_id
50154         , p_value_type_code         => l_adr_value_type_code
50155         , p_transaction_coa_id      => l_adr_transaction_coa_id
50156         , p_accounting_coa_id       => l_adr_accounting_coa_id
50157         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
50158         , p_flex_value_set_id       => l_adr_flex_value_set_id
50159         , p_adr_code                => 'FV_490201_PROJECTS'
50160         , p_adr_type_code           => 'S'
50161         , p_component_type          => l_component_type
50162         , p_component_code          => l_component_code
50163         , p_component_type_code     => l_component_type_code
50164         , p_component_appl_id       => l_component_appl_id
50165         , p_amb_context_code        => l_amb_context_code
50166         , p_entity_code             => 'EXPENDITURES'
50167         , p_event_class_code        => 'USG_COST'
50168         , p_side                    => 'NA'
50169         );
50170 
50171   END IF;
50172 
50173    --
50174    --
50175    END IF;
50176    --
50177    -- Bug 4922099
50178    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50179           (NVL(l_enc_upg_option, 'N') = 'O')
50180         ) AND
50181         (l_bflow_method_code = 'PRIOR_ENTRY')
50182       )
50183    THEN
50184       IF
50185       --
50186       1 = 2
50187       --
50188       THEN
50189       xla_accounting_err_pkg.build_message
50190                                     (p_appli_s_name            => 'XLA'
50191                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50192                                     ,p_token_1                 => 'LINE_NUMBER'
50193                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50194                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50195                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50196                                                                              l_component_type
50197                                                                             ,l_component_code
50198                                                                             ,l_component_type_code
50199                                                                             ,l_component_appl_id
50200                                                                             ,l_amb_context_code
50201                                                                             ,l_entity_code
50202                                                                             ,l_event_class_code
50203                                                                            )
50204                                     ,p_token_3                 => 'OWNER'
50205                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50206                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50207                                                                           ,p_lookup_code    => l_component_type_code
50208                                                                          )
50209                                     ,p_token_4                 => 'PRODUCT_NAME'
50210                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50211                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50212                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50213                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50214                                     ,p_ae_header_id            =>  NULL
50215                                        );
50216 
50217         IF (C_LEVEL_ERROR>= g_log_level) THEN
50218                  trace
50219                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50220                       ,p_level    => C_LEVEL_ERROR
50221                       ,p_module   => l_log_module);
50222         END IF;
50226    --
50223       END IF;
50224    END IF;
50225    --
50227    ------------------------------------------------------------------------------------------------
50228    -- 4219869 Business Flow
50229    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50230    -- Prior Entry.  Currently, the following code is always generated.
50231    ------------------------------------------------------------------------------------------------
50232    XLA_AE_LINES_PKG.ValidateCurrentLine;
50233 
50234    ------------------------------------------------------------------------------------
50235    -- 4219869 Business Flow
50236    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50237    ------------------------------------------------------------------------------------
50238    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50239 
50240    ----------------------------------------------------------------------------------
50241    -- 4219869 Business Flow
50242    -- Update journal entry status -- Need to generate this within IF <condition>
50243    ----------------------------------------------------------------------------------
50244    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50245          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50246          ,p_balance_type_code => l_balance_type_code
50247          );
50248 
50249    -------------------------------------------------------------------------------------------
50250    -- 4262811 - Generate the Accrual Reversal lines
50251    -------------------------------------------------------------------------------------------
50252    BEGIN
50253       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50254                               (g_array_event(p_event_id).array_value_num('header_index'));
50255       IF l_acc_rev_flag IS NULL THEN
50256          l_acc_rev_flag := 'N';
50257       END IF;
50258    EXCEPTION
50259       WHEN OTHERS THEN
50260          l_acc_rev_flag := 'N';
50261    END;
50262    --
50263    IF (l_acc_rev_flag = 'Y') THEN
50264 
50265        -- 4645092  ------------------------------------------------------------------------------
50266        -- To allow MPA report to determine if it should generate report process
50267        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50268        ------------------------------------------------------------------------------------------
50269 
50270        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50271        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50272 
50273        --
50274        -- Update the line information that should be overwritten
50275        --
50276        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50277                                          p_header_num   => 1);
50278        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50279 
50280        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50281 
50282        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50283           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50284        END IF;
50285 
50286       --
50287       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50288       --
50289       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50290           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50291       ELSE
50292           ---------------------------------------------------------------------------------------------------
50293           -- 4262811a Switch Sign
50294           ---------------------------------------------------------------------------------------------------
50295           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50296           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50297                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50298           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50299                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50300           -- 5132302
50301           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50302                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50303 
50304       END IF;
50305 
50306       -- 4955764
50307       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50308       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50309 
50310 
50311       XLA_AE_LINES_PKG.ValidateCurrentLine;
50312       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50313 
50314       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50315                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50316                ,p_balance_type_code => l_balance_type_code);
50317 
50318    END IF;
50319 
50320    -----------------------------------------------------------------------------------------
50321    -- 4262811 Multiperiod Accounting
50322    -----------------------------------------------------------------------------------------
50323      -- No MPA option is assigned.
50324 
50325 
50326 END IF;
50327 --
50328 
50329 --
50330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50331    trace
50332       (p_msg      => 'END of AcctLineType_107'
50333       ,p_level    => C_LEVEL_PROCEDURE
50334       ,p_module   => l_log_module);
50335 END IF;
50336 --
50337 EXCEPTION
50341        xla_exceptions_pkg.raise_message
50338   WHEN xla_exceptions_pkg.application_exception THEN
50339       RAISE;
50340   WHEN OTHERS THEN
50342            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_107');
50343 END AcctLineType_107;
50344 --
50345 
50346 ---------------------------------------
50347 --
50348 -- PRIVATE FUNCTION
50349 --         AcctLineType_108
50350 --
50351 ---------------------------------------
50352 PROCEDURE AcctLineType_108 (
50353   p_application_id        IN NUMBER
50354  ,p_event_id              IN NUMBER
50355  ,p_calculate_acctd_flag  IN VARCHAR2
50356  ,p_calculate_g_l_flag    IN VARCHAR2
50357  ,p_actual_flag           IN OUT VARCHAR2
50358  ,p_balance_type_code     OUT VARCHAR2
50359  ,p_gain_or_loss_ref      OUT VARCHAR2
50360  
50361 --Cost CCID
50362  , p_source_4            IN NUMBER
50363 --Allow Account Override Flag
50364  , p_source_5            IN VARCHAR2
50365 --Adjustment Cost CCID
50366  , p_source_6            IN NUMBER
50367 --Cost Clearing CCID
50368  , p_source_7            IN NUMBER
50369 --Reversing Line Flag
50370  , p_source_23            IN VARCHAR2
50371 --Actual Upgrade Credit Accounting Class
50372  , p_source_24            IN VARCHAR2
50373 --Entered Raw Cost
50374  , p_source_25            IN NUMBER
50375 --Entered Currency Code
50376  , p_source_26            IN VARCHAR2
50377 --Accounted Raw Cost
50378  , p_source_27            IN NUMBER
50379 --Exchange Rate Date
50380  , p_source_28            IN DATE
50381 --Exchange Rate
50382  , p_source_29            IN NUMBER
50383 --Exchange Rate Type
50384  , p_source_30            IN VARCHAR2
50385 --Actual Upgrade Debit Accounting Class
50386  , p_source_31            IN VARCHAR2
50387 --Use Actuals Upgrade Attributes Flag
50388  , p_source_32            IN VARCHAR2
50389 --Expenditure Item ID
50390  , p_source_33            IN NUMBER
50391 --Cost Distribution Line Number
50392  , p_source_34            IN NUMBER
50393 --Line Type
50394  , p_source_35            IN VARCHAR2
50395  , p_source_35_meaning    IN VARCHAR2
50396 --Reversed Line Number
50397  , p_source_36            IN NUMBER
50398 )
50399 IS
50400 
50401 l_component_type              VARCHAR2(80);
50402 l_component_code              VARCHAR2(30);
50403 l_component_type_code         VARCHAR2(1);
50404 l_component_appl_id           INTEGER;
50405 l_amb_context_code            VARCHAR2(30);
50406 l_entity_code                 VARCHAR2(30);
50407 l_event_class_code            VARCHAR2(30);
50408 l_ae_header_id                NUMBER;
50409 l_event_type_code             VARCHAR2(30);
50410 l_line_definition_code        VARCHAR2(30);
50411 l_line_definition_owner_code  VARCHAR2(1);
50412 --
50413 -- adr variables
50414 l_segment                     VARCHAR2(30);
50415 l_ccid                        NUMBER;
50416 l_adr_transaction_coa_id      NUMBER;
50417 l_adr_accounting_coa_id       NUMBER;
50418 l_adr_flexfield_segment_code  VARCHAR2(30);
50419 l_adr_flex_value_set_id       NUMBER;
50420 l_adr_value_type_code         VARCHAR2(30);
50421 l_adr_value_combination_id    NUMBER;
50422 l_adr_value_segment_code      VARCHAR2(30);
50423 
50424 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50425 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50426 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50427 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50428 
50429 -- 4262811 Variables ------------------------------------------------------------------------------------------
50430 l_entered_amt_idx             NUMBER;
50431 l_accted_amt_idx              NUMBER;
50432 l_acc_rev_flag                VARCHAR2(1);
50433 l_accrual_line_num            NUMBER;
50434 l_tmp_amt                     NUMBER;
50435 l_acc_rev_natural_side_code   VARCHAR2(1);
50436 
50437 l_num_entries                 NUMBER;
50438 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50439 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50440 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50441 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50442 l_recog_line_1                NUMBER;
50443 l_recog_line_2                NUMBER;
50444 
50445 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50446 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50447 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50448 
50449 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50450 
50451 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50452 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50453 
50454 ---------------------------------------------------------------------------------------------------------------
50455 
50456 
50457 --
50458 -- bulk performance
50459 --
50460 l_balance_type_code           VARCHAR2(1);
50461 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50462 l_log_module                  VARCHAR2(240);
50463 
50464 --
50465 -- Upgrade strategy
50466 --
50467 l_actual_upg_option           VARCHAR2(1);
50468 l_enc_upg_option           VARCHAR2(1);
50469 
50470 --
50471 BEGIN
50472 --
50473 IF g_log_enabled THEN
50474       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
50475 END IF;
50476 --
50477 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50478 
50479       trace
50480          (p_msg      => 'BEGIN of AcctLineType_108'
50481          ,p_level    => C_LEVEL_PROCEDURE
50482          ,p_module   => l_log_module);
50483 
50484 END IF;
50485 --
50489 l_component_appl_id          :=  275;
50486 l_component_type             := 'AMB_JLT';
50487 l_component_code             := 'PA_RAW_COST_FED';
50488 l_component_type_code        := 'S';
50490 l_amb_context_code           := 'DEFAULT';
50491 l_entity_code                := 'EXPENDITURES';
50492 l_event_class_code           := 'USG_COST';
50493 l_event_type_code            := 'USG_COST_ALL';
50494 l_line_definition_owner_code := 'S';
50495 l_line_definition_code       := 'FV_PROJECTS_JLD';
50496 --
50497 l_balance_type_code          := 'A';
50498 l_segment                     := NULL;
50499 l_ccid                        := NULL;
50500 l_adr_transaction_coa_id      := NULL;
50501 l_adr_accounting_coa_id       := NULL;
50502 l_adr_flexfield_segment_code  := NULL;
50503 l_adr_flex_value_set_id       := NULL;
50504 l_adr_value_type_code         := NULL;
50505 l_adr_value_combination_id    := NULL;
50506 l_adr_value_segment_code      := NULL;
50507 
50508 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50509 l_bflow_class_code           := '';    -- 4219869 Business Flow
50510 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50511 l_budgetary_control_flag     := 'N';
50512 
50513 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50514 l_bflow_applied_to_amt       := NULL; -- 5132302
50515 l_entered_amt_idx            := NULL;          -- 4262811
50516 l_accted_amt_idx             := NULL;          -- 4262811
50517 l_acc_rev_flag               := NULL;          -- 4262811
50518 l_accrual_line_num           := NULL;          -- 4262811
50519 l_tmp_amt                    := NULL;          -- 4262811
50520 --
50521  
50522 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50523     l_balance_type_code <> 'B' THEN
50524 
50525    --
50526    XLA_AE_LINES_PKG.SetNewLine;
50527 
50528    p_balance_type_code          := l_balance_type_code;
50529    -- set the flag so later we will know whether the gain loss line needs to be created
50530    
50531    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50532      p_actual_flag :='A';
50533    END IF;
50534 
50535    --
50536    -- bulk performance
50537    --
50538    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50539                                       p_header_num   => 0); -- 4262811
50540    --
50541    -- set accounting line options
50542    --
50543    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50544            p_natural_side_code          => 'D'
50545          , p_gain_or_loss_flag          => 'N'
50546          , p_gl_transfer_mode_code      => 'S'
50547          , p_acct_entry_type_code       => 'A'
50548          , p_switch_side_flag           => 'Y'
50549          , p_merge_duplicate_code       => 'N'
50550          );
50551    --
50552    l_acc_rev_natural_side_code := 'C';  -- 4262811
50553    -- 
50554    --
50555    -- set accounting line type info
50556    --
50557    xla_ae_lines_pkg.SetAcctLineType
50558       (p_component_type             => l_component_type
50559       ,p_event_type_code            => l_event_type_code
50560       ,p_line_definition_owner_code => l_line_definition_owner_code
50561       ,p_line_definition_code       => l_line_definition_code
50562       ,p_accounting_line_code       => l_component_code
50563       ,p_accounting_line_type_code  => l_component_type_code
50564       ,p_accounting_line_appl_id    => l_component_appl_id
50565       ,p_amb_context_code           => l_amb_context_code
50566       ,p_entity_code                => l_entity_code
50567       ,p_event_class_code           => l_event_class_code);
50568    --
50569    -- set accounting class
50570    --
50571    xla_ae_lines_pkg.SetAcctClass(
50572            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
50573          , p_ae_header_id           => l_ae_header_id
50574          );
50575 
50576    --
50577    -- set rounding class
50578    --
50579    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50580                       'FEDERAL_PROJECT_COST';
50581 
50582    --
50583    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50584    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50585    --
50586    -- bulk performance
50587    --
50588    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50589 
50590    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50591       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50592 
50593    -- 4955764
50594    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50595       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50596 
50597    -- 4458381 Public Sector Enh
50598    
50599    --
50600    -- set accounting attributes for the line type
50601    --
50602    l_entered_amt_idx := 22;
50603    l_accted_amt_idx  := 27;
50604    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50605    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
50606    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
50607    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
50608    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
50609    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
50610    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
50611    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
50612    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
50613    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
50614    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
50618    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
50615    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
50616    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
50617    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
50619    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
50620    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
50621    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
50622    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
50623    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
50624    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
50625    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
50626    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
50627    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
50628    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
50629    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
50630    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
50631    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
50632    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
50633    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
50634    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
50635    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
50636    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
50637    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
50638    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
50639    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
50640    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
50641    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
50642    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
50643    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
50644    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
50645    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
50646    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
50647    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
50648    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
50649    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
50650    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
50651    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
50652    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
50653    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
50654    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
50655    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
50656    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
50657    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
50658    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
50659    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
50660    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
50661    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
50662    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
50663    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
50664    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
50665 
50666    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50667    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50668 
50669    ---------------------------------------------------------------------------------------------------------------
50670    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50671    ---------------------------------------------------------------------------------------------------------------
50672    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50673 
50674    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50675    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50676 
50677    IF xla_accounting_cache_pkg.GetValueChar
50678          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50679          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50680    AND l_bflow_method_code = 'PRIOR_ENTRY'
50681 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50682    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50683          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50684        )
50685    THEN
50686          xla_ae_lines_pkg.BflowUpgEntry
50687            (p_business_method_code    => l_bflow_method_code
50688            ,p_business_class_code     => l_bflow_class_code
50689            ,p_balance_type            => l_balance_type_code);
50690    ELSE
50691       NULL;
50692 -- No business flow processing for business flow method of NONE.
50693    END IF;
50694 
50695    --
50696    -- call analytical criteria
50697    --
50698    
50699    --
50700    -- call description
50701    --
50702    -- No description or it is inherited.
50703    --
50704    -- call ADRs
50705    -- Bug 4922099
50706    --
50707    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50708         (NVL(l_actual_upg_option, 'N') = 'O') OR
50709         (NVL(l_enc_upg_option, 'N') = 'O')
50710       )
50711    THEN
50712    NULL;
50713    --
50714    --
50715    
50716   l_ccid := AcctDerRule_12(
50717            p_application_id           => p_application_id
50718          , p_ae_header_id             => l_ae_header_id 
50719 , p_source_4 => p_source_4
50720 , p_source_5 => p_source_5
50721 , p_source_6 => p_source_6
50722          , x_transaction_coa_id       => l_adr_transaction_coa_id
50726    );
50723          , x_accounting_coa_id        => l_adr_accounting_coa_id
50724          , x_value_type_code          => l_adr_value_type_code
50725          , p_side                     => 'NA'
50727 
50728    xla_ae_lines_pkg.set_ccid(
50729     p_code_combination_id          => l_ccid
50730   , p_value_type_code              => l_adr_value_type_code
50731   , p_transaction_coa_id           => l_adr_transaction_coa_id
50732   , p_accounting_coa_id            => l_adr_accounting_coa_id
50733   , p_adr_code                     => 'PA_COST_ACCT_RULE'
50734   , p_adr_type_code                => 'S'
50735   , p_component_type               => l_component_type
50736   , p_component_code               => l_component_code
50737   , p_component_type_code          => l_component_type_code
50738   , p_component_appl_id            => l_component_appl_id
50739   , p_amb_context_code             => l_amb_context_code
50740   , p_side                         => 'NA'
50741   );
50742 
50743 
50744    l_segment := AcctDerRule_4(
50745            p_application_id           => p_application_id
50746          , p_ae_header_id             => l_ae_header_id 
50747          , x_transaction_coa_id       => l_adr_transaction_coa_id
50748          , x_accounting_coa_id        => l_adr_accounting_coa_id
50749          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
50750          , x_flex_value_set_id        => l_adr_flex_value_set_id
50751          , x_value_type_code          => l_adr_value_type_code
50752          , x_value_combination_id     => l_adr_value_combination_id
50753          , x_value_segment_code       => l_adr_value_segment_code
50754          , p_side                     => 'NA'
50755          , p_override_seg_flag        => 'Y'
50756    );
50757 
50758    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
50759 
50760       xla_ae_lines_pkg.set_segment(
50761           p_to_segment_code         => 'GL_ACCOUNT'
50762         , p_segment_value           => l_segment
50763         , p_from_segment_code       => l_adr_value_segment_code
50764         , p_from_combination_id     => l_adr_value_combination_id
50765         , p_value_type_code         => l_adr_value_type_code
50766         , p_transaction_coa_id      => l_adr_transaction_coa_id
50767         , p_accounting_coa_id       => l_adr_accounting_coa_id
50768         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
50769         , p_flex_value_set_id       => l_adr_flex_value_set_id
50770         , p_adr_code                => 'FV_461001_PROJECTS'
50771         , p_adr_type_code           => 'S'
50772         , p_component_type          => l_component_type
50773         , p_component_code          => l_component_code
50774         , p_component_type_code     => l_component_type_code
50775         , p_component_appl_id       => l_component_appl_id
50776         , p_amb_context_code        => l_amb_context_code
50777         , p_entity_code             => 'EXPENDITURES'
50778         , p_event_class_code        => 'USG_COST'
50779         , p_side                    => 'NA'
50780         );
50781 
50782   END IF;
50783 
50784    --
50785    --
50786    END IF;
50787    --
50788    -- Bug 4922099
50789    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50790           (NVL(l_enc_upg_option, 'N') = 'O')
50791         ) AND
50792         (l_bflow_method_code = 'PRIOR_ENTRY')
50793       )
50794    THEN
50795       IF
50796       --
50797       1 = 2
50798       --
50799       THEN
50800       xla_accounting_err_pkg.build_message
50801                                     (p_appli_s_name            => 'XLA'
50802                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50803                                     ,p_token_1                 => 'LINE_NUMBER'
50804                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50805                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50806                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50807                                                                              l_component_type
50808                                                                             ,l_component_code
50809                                                                             ,l_component_type_code
50810                                                                             ,l_component_appl_id
50811                                                                             ,l_amb_context_code
50812                                                                             ,l_entity_code
50813                                                                             ,l_event_class_code
50814                                                                            )
50815                                     ,p_token_3                 => 'OWNER'
50816                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50817                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50818                                                                           ,p_lookup_code    => l_component_type_code
50819                                                                          )
50820                                     ,p_token_4                 => 'PRODUCT_NAME'
50821                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50822                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50823                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50824                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50825                                     ,p_ae_header_id            =>  NULL
50826                                        );
50827 
50828         IF (C_LEVEL_ERROR>= g_log_level) THEN
50832                       ,p_module   => l_log_module);
50829                  trace
50830                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50831                       ,p_level    => C_LEVEL_ERROR
50833         END IF;
50834       END IF;
50835    END IF;
50836    --
50837    --
50838    ------------------------------------------------------------------------------------------------
50839    -- 4219869 Business Flow
50840    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50841    -- Prior Entry.  Currently, the following code is always generated.
50842    ------------------------------------------------------------------------------------------------
50843    XLA_AE_LINES_PKG.ValidateCurrentLine;
50844 
50845    ------------------------------------------------------------------------------------
50846    -- 4219869 Business Flow
50847    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50848    ------------------------------------------------------------------------------------
50849    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50850 
50851    ----------------------------------------------------------------------------------
50852    -- 4219869 Business Flow
50853    -- Update journal entry status -- Need to generate this within IF <condition>
50854    ----------------------------------------------------------------------------------
50855    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50856          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50857          ,p_balance_type_code => l_balance_type_code
50858          );
50859 
50860    -------------------------------------------------------------------------------------------
50861    -- 4262811 - Generate the Accrual Reversal lines
50862    -------------------------------------------------------------------------------------------
50863    BEGIN
50864       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50865                               (g_array_event(p_event_id).array_value_num('header_index'));
50866       IF l_acc_rev_flag IS NULL THEN
50867          l_acc_rev_flag := 'N';
50868       END IF;
50869    EXCEPTION
50870       WHEN OTHERS THEN
50871          l_acc_rev_flag := 'N';
50872    END;
50873    --
50874    IF (l_acc_rev_flag = 'Y') THEN
50875 
50876        -- 4645092  ------------------------------------------------------------------------------
50877        -- To allow MPA report to determine if it should generate report process
50878        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50879        ------------------------------------------------------------------------------------------
50880 
50881        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50882        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50883 
50884        --
50885        -- Update the line information that should be overwritten
50886        --
50887        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50888                                          p_header_num   => 1);
50889        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50890 
50891        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50892 
50893        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50894           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50895        END IF;
50896 
50897       --
50898       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50899       --
50900       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50901           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50902       ELSE
50903           ---------------------------------------------------------------------------------------------------
50904           -- 4262811a Switch Sign
50905           ---------------------------------------------------------------------------------------------------
50906           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50907           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50908                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50909           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50910                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50911           -- 5132302
50912           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50913                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50914 
50915       END IF;
50916 
50917       -- 4955764
50918       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50919       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50920 
50921 
50922       XLA_AE_LINES_PKG.ValidateCurrentLine;
50923       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50924 
50925       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50926                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50927                ,p_balance_type_code => l_balance_type_code);
50928 
50929    END IF;
50930 
50931    -----------------------------------------------------------------------------------------
50932    -- 4262811 Multiperiod Accounting
50933    -----------------------------------------------------------------------------------------
50934      -- No MPA option is assigned.
50935 
50936 
50937 END IF;
50938 --
50939 
50940 --
50941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50945       ,p_module   => l_log_module);
50942    trace
50943       (p_msg      => 'END of AcctLineType_108'
50944       ,p_level    => C_LEVEL_PROCEDURE
50946 END IF;
50947 --
50948 EXCEPTION
50949   WHEN xla_exceptions_pkg.application_exception THEN
50950       RAISE;
50951   WHEN OTHERS THEN
50952        xla_exceptions_pkg.raise_message
50953            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_108');
50954 END AcctLineType_108;
50955 --
50956 
50957 ---------------------------------------
50958 --
50959 -- PRIVATE FUNCTION
50960 --         AcctLineType_109
50961 --
50962 ---------------------------------------
50963 PROCEDURE AcctLineType_109 (
50964   p_application_id        IN NUMBER
50965  ,p_event_id              IN NUMBER
50966  ,p_calculate_acctd_flag  IN VARCHAR2
50967  ,p_calculate_g_l_flag    IN VARCHAR2
50968  ,p_actual_flag           IN OUT VARCHAR2
50969  ,p_balance_type_code     OUT VARCHAR2
50970  ,p_gain_or_loss_ref      OUT VARCHAR2
50971  
50972 --Cost CCID
50973  , p_source_4            IN NUMBER
50974 --Allow Account Override Flag
50975  , p_source_5            IN VARCHAR2
50976 --Adjustment Cost CCID
50977  , p_source_6            IN NUMBER
50978 --Cost Clearing CCID
50979  , p_source_7            IN NUMBER
50980 --Reversing Line Flag
50981  , p_source_23            IN VARCHAR2
50982 --Actual Upgrade Credit Accounting Class
50983  , p_source_24            IN VARCHAR2
50984 --Entered Raw Cost
50985  , p_source_25            IN NUMBER
50986 --Entered Currency Code
50987  , p_source_26            IN VARCHAR2
50988 --Accounted Raw Cost
50989  , p_source_27            IN NUMBER
50990 --Exchange Rate Date
50991  , p_source_28            IN DATE
50992 --Exchange Rate
50993  , p_source_29            IN NUMBER
50994 --Exchange Rate Type
50995  , p_source_30            IN VARCHAR2
50996 --Actual Upgrade Debit Accounting Class
50997  , p_source_31            IN VARCHAR2
50998 --Use Actuals Upgrade Attributes Flag
50999  , p_source_32            IN VARCHAR2
51000 --Expenditure Item ID
51001  , p_source_33            IN NUMBER
51002 --Cost Distribution Line Number
51003  , p_source_34            IN NUMBER
51004 --Line Type
51005  , p_source_35            IN VARCHAR2
51006  , p_source_35_meaning    IN VARCHAR2
51007 --Reversed Line Number
51008  , p_source_36            IN NUMBER
51009 )
51010 IS
51011 
51012 l_component_type              VARCHAR2(80);
51013 l_component_code              VARCHAR2(30);
51014 l_component_type_code         VARCHAR2(1);
51015 l_component_appl_id           INTEGER;
51016 l_amb_context_code            VARCHAR2(30);
51017 l_entity_code                 VARCHAR2(30);
51018 l_event_class_code            VARCHAR2(30);
51019 l_ae_header_id                NUMBER;
51020 l_event_type_code             VARCHAR2(30);
51021 l_line_definition_code        VARCHAR2(30);
51022 l_line_definition_owner_code  VARCHAR2(1);
51023 --
51024 -- adr variables
51025 l_segment                     VARCHAR2(30);
51026 l_ccid                        NUMBER;
51027 l_adr_transaction_coa_id      NUMBER;
51028 l_adr_accounting_coa_id       NUMBER;
51029 l_adr_flexfield_segment_code  VARCHAR2(30);
51030 l_adr_flex_value_set_id       NUMBER;
51031 l_adr_value_type_code         VARCHAR2(30);
51032 l_adr_value_combination_id    NUMBER;
51033 l_adr_value_segment_code      VARCHAR2(30);
51034 
51035 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51036 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51037 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51038 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51039 
51040 -- 4262811 Variables ------------------------------------------------------------------------------------------
51041 l_entered_amt_idx             NUMBER;
51042 l_accted_amt_idx              NUMBER;
51043 l_acc_rev_flag                VARCHAR2(1);
51044 l_accrual_line_num            NUMBER;
51045 l_tmp_amt                     NUMBER;
51046 l_acc_rev_natural_side_code   VARCHAR2(1);
51047 
51048 l_num_entries                 NUMBER;
51049 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51050 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51051 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51052 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51053 l_recog_line_1                NUMBER;
51054 l_recog_line_2                NUMBER;
51055 
51056 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51057 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51058 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51059 
51060 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51061 
51062 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51063 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51064 
51065 ---------------------------------------------------------------------------------------------------------------
51066 
51067 
51068 --
51069 -- bulk performance
51070 --
51071 l_balance_type_code           VARCHAR2(1);
51072 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51073 l_log_module                  VARCHAR2(240);
51074 
51075 --
51076 -- Upgrade strategy
51077 --
51078 l_actual_upg_option           VARCHAR2(1);
51079 l_enc_upg_option           VARCHAR2(1);
51080 
51081 --
51082 BEGIN
51083 --
51084 IF g_log_enabled THEN
51085       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
51086 END IF;
51087 --
51088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51089 
51093          ,p_module   => l_log_module);
51090       trace
51091          (p_msg      => 'BEGIN of AcctLineType_109'
51092          ,p_level    => C_LEVEL_PROCEDURE
51094 
51095 END IF;
51096 --
51097 l_component_type             := 'AMB_JLT';
51098 l_component_code             := 'PA_RAW_COST_FED';
51099 l_component_type_code        := 'S';
51100 l_component_appl_id          :=  275;
51101 l_amb_context_code           := 'DEFAULT';
51102 l_entity_code                := 'EXPENDITURES';
51103 l_event_class_code           := 'INVENTORY_COST';
51104 l_event_type_code            := 'INVENTORY_COST_ALL';
51105 l_line_definition_owner_code := 'S';
51106 l_line_definition_code       := 'FV_PROJECTS_JLD';
51107 --
51108 l_balance_type_code          := 'A';
51109 l_segment                     := NULL;
51110 l_ccid                        := NULL;
51111 l_adr_transaction_coa_id      := NULL;
51112 l_adr_accounting_coa_id       := NULL;
51113 l_adr_flexfield_segment_code  := NULL;
51114 l_adr_flex_value_set_id       := NULL;
51115 l_adr_value_type_code         := NULL;
51116 l_adr_value_combination_id    := NULL;
51117 l_adr_value_segment_code      := NULL;
51118 
51119 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51120 l_bflow_class_code           := '';    -- 4219869 Business Flow
51121 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51122 l_budgetary_control_flag     := 'N';
51123 
51124 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51125 l_bflow_applied_to_amt       := NULL; -- 5132302
51126 l_entered_amt_idx            := NULL;          -- 4262811
51127 l_accted_amt_idx             := NULL;          -- 4262811
51128 l_acc_rev_flag               := NULL;          -- 4262811
51129 l_accrual_line_num           := NULL;          -- 4262811
51130 l_tmp_amt                    := NULL;          -- 4262811
51131 --
51132  
51133 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51134     l_balance_type_code <> 'B' THEN
51135 
51136    --
51137    XLA_AE_LINES_PKG.SetNewLine;
51138 
51139    p_balance_type_code          := l_balance_type_code;
51140    -- set the flag so later we will know whether the gain loss line needs to be created
51141    
51142    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51143      p_actual_flag :='A';
51144    END IF;
51145 
51146    --
51147    -- bulk performance
51148    --
51149    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51150                                       p_header_num   => 0); -- 4262811
51151    --
51152    -- set accounting line options
51153    --
51154    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51155            p_natural_side_code          => 'D'
51156          , p_gain_or_loss_flag          => 'N'
51157          , p_gl_transfer_mode_code      => 'S'
51158          , p_acct_entry_type_code       => 'A'
51159          , p_switch_side_flag           => 'Y'
51160          , p_merge_duplicate_code       => 'N'
51161          );
51162    --
51163    l_acc_rev_natural_side_code := 'C';  -- 4262811
51164    -- 
51165    --
51166    -- set accounting line type info
51167    --
51168    xla_ae_lines_pkg.SetAcctLineType
51169       (p_component_type             => l_component_type
51170       ,p_event_type_code            => l_event_type_code
51171       ,p_line_definition_owner_code => l_line_definition_owner_code
51172       ,p_line_definition_code       => l_line_definition_code
51173       ,p_accounting_line_code       => l_component_code
51174       ,p_accounting_line_type_code  => l_component_type_code
51175       ,p_accounting_line_appl_id    => l_component_appl_id
51176       ,p_amb_context_code           => l_amb_context_code
51177       ,p_entity_code                => l_entity_code
51178       ,p_event_class_code           => l_event_class_code);
51179    --
51180    -- set accounting class
51181    --
51182    xla_ae_lines_pkg.SetAcctClass(
51183            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
51184          , p_ae_header_id           => l_ae_header_id
51185          );
51186 
51187    --
51188    -- set rounding class
51189    --
51190    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51191                       'FEDERAL_PROJECT_COST';
51192 
51193    --
51194    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51195    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51196    --
51197    -- bulk performance
51198    --
51199    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51200 
51201    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51202       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51203 
51204    -- 4955764
51205    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51206       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51207 
51208    -- 4458381 Public Sector Enh
51209    
51210    --
51211    -- set accounting attributes for the line type
51212    --
51213    l_entered_amt_idx := 22;
51214    l_accted_amt_idx  := 27;
51215    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51216    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
51217    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
51218    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
51219    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
51220    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
51221    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
51225    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
51222    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
51223    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
51224    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
51226    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
51227    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
51228    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
51229    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
51230    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
51231    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
51232    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
51233    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
51234    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
51235    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
51236    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
51237    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
51238    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
51239    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
51240    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
51241    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
51242    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
51243    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
51244    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
51245    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
51246    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
51247    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
51248    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
51249    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
51250    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
51251    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
51252    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
51253    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
51254    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
51255    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
51256    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
51257    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
51258    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
51259    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
51260    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
51261    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
51262    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
51263    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
51264    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
51265    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
51266    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
51267    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
51268    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
51269    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
51270    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
51271    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
51272    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
51273    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
51274    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
51275    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
51276 
51277    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51278    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51279 
51280    ---------------------------------------------------------------------------------------------------------------
51281    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51282    ---------------------------------------------------------------------------------------------------------------
51283    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51284 
51285    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51286    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51287 
51288    IF xla_accounting_cache_pkg.GetValueChar
51289          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51290          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51291    AND l_bflow_method_code = 'PRIOR_ENTRY'
51292 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51293    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51294          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51295        )
51296    THEN
51297          xla_ae_lines_pkg.BflowUpgEntry
51298            (p_business_method_code    => l_bflow_method_code
51299            ,p_business_class_code     => l_bflow_class_code
51300            ,p_balance_type            => l_balance_type_code);
51301    ELSE
51302       NULL;
51303 -- No business flow processing for business flow method of NONE.
51304    END IF;
51305 
51306    --
51307    -- call analytical criteria
51308    --
51309    
51310    --
51311    -- call description
51312    --
51313    -- No description or it is inherited.
51314    --
51315    -- call ADRs
51316    -- Bug 4922099
51317    --
51318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51319         (NVL(l_actual_upg_option, 'N') = 'O') OR
51320         (NVL(l_enc_upg_option, 'N') = 'O')
51321       )
51322    THEN
51323    NULL;
51324    --
51325    --
51326    
51327   l_ccid := AcctDerRule_12(
51331 , p_source_5 => p_source_5
51328            p_application_id           => p_application_id
51329          , p_ae_header_id             => l_ae_header_id 
51330 , p_source_4 => p_source_4
51332 , p_source_6 => p_source_6
51333          , x_transaction_coa_id       => l_adr_transaction_coa_id
51334          , x_accounting_coa_id        => l_adr_accounting_coa_id
51335          , x_value_type_code          => l_adr_value_type_code
51336          , p_side                     => 'NA'
51337    );
51338 
51339    xla_ae_lines_pkg.set_ccid(
51340     p_code_combination_id          => l_ccid
51341   , p_value_type_code              => l_adr_value_type_code
51342   , p_transaction_coa_id           => l_adr_transaction_coa_id
51343   , p_accounting_coa_id            => l_adr_accounting_coa_id
51344   , p_adr_code                     => 'PA_COST_ACCT_RULE'
51345   , p_adr_type_code                => 'S'
51346   , p_component_type               => l_component_type
51347   , p_component_code               => l_component_code
51348   , p_component_type_code          => l_component_type_code
51349   , p_component_appl_id            => l_component_appl_id
51350   , p_amb_context_code             => l_amb_context_code
51351   , p_side                         => 'NA'
51352   );
51353 
51354 
51355    l_segment := AcctDerRule_4(
51356            p_application_id           => p_application_id
51357          , p_ae_header_id             => l_ae_header_id 
51358          , x_transaction_coa_id       => l_adr_transaction_coa_id
51359          , x_accounting_coa_id        => l_adr_accounting_coa_id
51360          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
51361          , x_flex_value_set_id        => l_adr_flex_value_set_id
51362          , x_value_type_code          => l_adr_value_type_code
51363          , x_value_combination_id     => l_adr_value_combination_id
51364          , x_value_segment_code       => l_adr_value_segment_code
51365          , p_side                     => 'NA'
51366          , p_override_seg_flag        => 'Y'
51367    );
51368 
51369    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
51370 
51371       xla_ae_lines_pkg.set_segment(
51372           p_to_segment_code         => 'GL_ACCOUNT'
51373         , p_segment_value           => l_segment
51374         , p_from_segment_code       => l_adr_value_segment_code
51375         , p_from_combination_id     => l_adr_value_combination_id
51376         , p_value_type_code         => l_adr_value_type_code
51377         , p_transaction_coa_id      => l_adr_transaction_coa_id
51378         , p_accounting_coa_id       => l_adr_accounting_coa_id
51379         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
51380         , p_flex_value_set_id       => l_adr_flex_value_set_id
51381         , p_adr_code                => 'FV_461001_PROJECTS'
51382         , p_adr_type_code           => 'S'
51383         , p_component_type          => l_component_type
51384         , p_component_code          => l_component_code
51385         , p_component_type_code     => l_component_type_code
51386         , p_component_appl_id       => l_component_appl_id
51387         , p_amb_context_code        => l_amb_context_code
51388         , p_entity_code             => 'EXPENDITURES'
51389         , p_event_class_code        => 'INVENTORY_COST'
51390         , p_side                    => 'NA'
51391         );
51392 
51393   END IF;
51394 
51395    --
51396    --
51397    END IF;
51398    --
51399    -- Bug 4922099
51400    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51401           (NVL(l_enc_upg_option, 'N') = 'O')
51402         ) AND
51403         (l_bflow_method_code = 'PRIOR_ENTRY')
51404       )
51405    THEN
51406       IF
51407       --
51408       1 = 2
51409       --
51410       THEN
51411       xla_accounting_err_pkg.build_message
51412                                     (p_appli_s_name            => 'XLA'
51413                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51414                                     ,p_token_1                 => 'LINE_NUMBER'
51415                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51416                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51417                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51418                                                                              l_component_type
51419                                                                             ,l_component_code
51420                                                                             ,l_component_type_code
51421                                                                             ,l_component_appl_id
51422                                                                             ,l_amb_context_code
51423                                                                             ,l_entity_code
51424                                                                             ,l_event_class_code
51425                                                                            )
51426                                     ,p_token_3                 => 'OWNER'
51427                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51428                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51429                                                                           ,p_lookup_code    => l_component_type_code
51430                                                                          )
51431                                     ,p_token_4                 => 'PRODUCT_NAME'
51432                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51433                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51434                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51438 
51435                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51436                                     ,p_ae_header_id            =>  NULL
51437                                        );
51439         IF (C_LEVEL_ERROR>= g_log_level) THEN
51440                  trace
51441                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51442                       ,p_level    => C_LEVEL_ERROR
51443                       ,p_module   => l_log_module);
51444         END IF;
51445       END IF;
51446    END IF;
51447    --
51448    --
51449    ------------------------------------------------------------------------------------------------
51450    -- 4219869 Business Flow
51451    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51452    -- Prior Entry.  Currently, the following code is always generated.
51453    ------------------------------------------------------------------------------------------------
51454    XLA_AE_LINES_PKG.ValidateCurrentLine;
51455 
51456    ------------------------------------------------------------------------------------
51457    -- 4219869 Business Flow
51458    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51459    ------------------------------------------------------------------------------------
51460    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51461 
51462    ----------------------------------------------------------------------------------
51463    -- 4219869 Business Flow
51464    -- Update journal entry status -- Need to generate this within IF <condition>
51465    ----------------------------------------------------------------------------------
51466    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51467          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51468          ,p_balance_type_code => l_balance_type_code
51469          );
51470 
51471    -------------------------------------------------------------------------------------------
51472    -- 4262811 - Generate the Accrual Reversal lines
51473    -------------------------------------------------------------------------------------------
51474    BEGIN
51475       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51476                               (g_array_event(p_event_id).array_value_num('header_index'));
51477       IF l_acc_rev_flag IS NULL THEN
51478          l_acc_rev_flag := 'N';
51479       END IF;
51480    EXCEPTION
51481       WHEN OTHERS THEN
51482          l_acc_rev_flag := 'N';
51483    END;
51484    --
51485    IF (l_acc_rev_flag = 'Y') THEN
51486 
51487        -- 4645092  ------------------------------------------------------------------------------
51488        -- To allow MPA report to determine if it should generate report process
51489        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51490        ------------------------------------------------------------------------------------------
51491 
51492        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51493        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51494 
51495        --
51496        -- Update the line information that should be overwritten
51497        --
51498        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51499                                          p_header_num   => 1);
51500        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51501 
51502        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51503 
51504        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51505           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51506        END IF;
51507 
51508       --
51509       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51510       --
51511       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51512           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51513       ELSE
51514           ---------------------------------------------------------------------------------------------------
51515           -- 4262811a Switch Sign
51516           ---------------------------------------------------------------------------------------------------
51517           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51518           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51519                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51520           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51521                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51522           -- 5132302
51523           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51524                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51525 
51526       END IF;
51527 
51528       -- 4955764
51529       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51530       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51531 
51532 
51533       XLA_AE_LINES_PKG.ValidateCurrentLine;
51534       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51535 
51536       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51537                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51538                ,p_balance_type_code => l_balance_type_code);
51539 
51540    END IF;
51541 
51542    -----------------------------------------------------------------------------------------
51546 
51543    -- 4262811 Multiperiod Accounting
51544    -----------------------------------------------------------------------------------------
51545      -- No MPA option is assigned.
51547 
51548 END IF;
51549 --
51550 
51551 --
51552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51553    trace
51554       (p_msg      => 'END of AcctLineType_109'
51555       ,p_level    => C_LEVEL_PROCEDURE
51556       ,p_module   => l_log_module);
51557 END IF;
51558 --
51559 EXCEPTION
51560   WHEN xla_exceptions_pkg.application_exception THEN
51561       RAISE;
51562   WHEN OTHERS THEN
51563        xla_exceptions_pkg.raise_message
51564            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_109');
51565 END AcctLineType_109;
51566 --
51567 
51568 ---------------------------------------
51569 --
51570 -- PRIVATE FUNCTION
51571 --         AcctLineType_110
51572 --
51573 ---------------------------------------
51574 PROCEDURE AcctLineType_110 (
51575   p_application_id        IN NUMBER
51576  ,p_event_id              IN NUMBER
51577  ,p_calculate_acctd_flag  IN VARCHAR2
51578  ,p_calculate_g_l_flag    IN VARCHAR2
51579  ,p_actual_flag           IN OUT VARCHAR2
51580  ,p_balance_type_code     OUT VARCHAR2
51581  ,p_gain_or_loss_ref      OUT VARCHAR2
51582  
51583 --PO Distribution ID
51584  , p_source_2            IN NUMBER
51585 --Cost CCID
51586  , p_source_4            IN NUMBER
51587 --Allow Account Override Flag
51588  , p_source_5            IN VARCHAR2
51589 --Adjustment Cost CCID
51590  , p_source_6            IN NUMBER
51591 --Cost Clearing CCID
51592  , p_source_7            IN NUMBER
51593 --Exchange Rate Variance Flag
51594  , p_source_22            IN VARCHAR2
51595 --Reversing Line Flag
51596  , p_source_23            IN VARCHAR2
51597 --Actual Upgrade Credit Accounting Class
51598  , p_source_24            IN VARCHAR2
51599 --Entered Raw Cost
51600  , p_source_25            IN NUMBER
51601 --Entered Currency Code
51602  , p_source_26            IN VARCHAR2
51603 --Accounted Raw Cost
51604  , p_source_27            IN NUMBER
51605 --Exchange Rate Date
51606  , p_source_28            IN DATE
51607 --Exchange Rate
51608  , p_source_29            IN NUMBER
51609 --Exchange Rate Type
51610  , p_source_30            IN VARCHAR2
51611 --Actual Upgrade Debit Accounting Class
51612  , p_source_31            IN VARCHAR2
51613 --Use Actuals Upgrade Attributes Flag
51614  , p_source_32            IN VARCHAR2
51615 --Expenditure Item ID
51616  , p_source_33            IN NUMBER
51617 --Cost Distribution Line Number
51618  , p_source_34            IN NUMBER
51619 --Line Type
51620  , p_source_35            IN VARCHAR2
51621  , p_source_35_meaning    IN VARCHAR2
51622 --Reversed Line Number
51623  , p_source_36            IN NUMBER
51624 )
51625 IS
51626 
51627 l_component_type              VARCHAR2(80);
51628 l_component_code              VARCHAR2(30);
51629 l_component_type_code         VARCHAR2(1);
51630 l_component_appl_id           INTEGER;
51631 l_amb_context_code            VARCHAR2(30);
51632 l_entity_code                 VARCHAR2(30);
51633 l_event_class_code            VARCHAR2(30);
51634 l_ae_header_id                NUMBER;
51635 l_event_type_code             VARCHAR2(30);
51636 l_line_definition_code        VARCHAR2(30);
51637 l_line_definition_owner_code  VARCHAR2(1);
51638 --
51639 -- adr variables
51640 l_segment                     VARCHAR2(30);
51641 l_ccid                        NUMBER;
51642 l_adr_transaction_coa_id      NUMBER;
51643 l_adr_accounting_coa_id       NUMBER;
51644 l_adr_flexfield_segment_code  VARCHAR2(30);
51645 l_adr_flex_value_set_id       NUMBER;
51646 l_adr_value_type_code         VARCHAR2(30);
51647 l_adr_value_combination_id    NUMBER;
51648 l_adr_value_segment_code      VARCHAR2(30);
51649 
51650 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51651 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51652 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51653 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51654 
51655 -- 4262811 Variables ------------------------------------------------------------------------------------------
51656 l_entered_amt_idx             NUMBER;
51657 l_accted_amt_idx              NUMBER;
51658 l_acc_rev_flag                VARCHAR2(1);
51659 l_accrual_line_num            NUMBER;
51660 l_tmp_amt                     NUMBER;
51661 l_acc_rev_natural_side_code   VARCHAR2(1);
51662 
51663 l_num_entries                 NUMBER;
51664 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51665 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51666 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51667 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51668 l_recog_line_1                NUMBER;
51669 l_recog_line_2                NUMBER;
51670 
51671 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51672 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51673 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51674 
51675 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51676 
51677 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51678 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51679 
51680 ---------------------------------------------------------------------------------------------------------------
51681 
51682 
51683 --
51684 -- bulk performance
51685 --
51686 l_balance_type_code           VARCHAR2(1);
51687 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51691 -- Upgrade strategy
51688 l_log_module                  VARCHAR2(240);
51689 
51690 --
51692 --
51693 l_actual_upg_option           VARCHAR2(1);
51694 l_enc_upg_option           VARCHAR2(1);
51695 
51696 --
51697 BEGIN
51698 --
51699 IF g_log_enabled THEN
51700       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
51701 END IF;
51702 --
51703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51704 
51705       trace
51706          (p_msg      => 'BEGIN of AcctLineType_110'
51707          ,p_level    => C_LEVEL_PROCEDURE
51708          ,p_module   => l_log_module);
51709 
51710 END IF;
51711 --
51712 l_component_type             := 'AMB_JLT';
51713 l_component_code             := 'PA_RAW_COST_FED';
51714 l_component_type_code        := 'S';
51715 l_component_appl_id          :=  275;
51716 l_amb_context_code           := 'DEFAULT';
51717 l_entity_code                := 'EXPENDITURES';
51718 l_event_class_code           := 'SUPPLIER_COST';
51719 l_event_type_code            := 'SUPPLIER_COST_ALL';
51720 l_line_definition_owner_code := 'S';
51721 l_line_definition_code       := 'FV_PROJECTS_JLD';
51722 --
51723 l_balance_type_code          := 'A';
51724 l_segment                     := NULL;
51725 l_ccid                        := NULL;
51726 l_adr_transaction_coa_id      := NULL;
51727 l_adr_accounting_coa_id       := NULL;
51728 l_adr_flexfield_segment_code  := NULL;
51729 l_adr_flex_value_set_id       := NULL;
51730 l_adr_value_type_code         := NULL;
51731 l_adr_value_combination_id    := NULL;
51732 l_adr_value_segment_code      := NULL;
51733 
51734 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51735 l_bflow_class_code           := '';    -- 4219869 Business Flow
51736 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51737 l_budgetary_control_flag     := 'N';
51738 
51739 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51740 l_bflow_applied_to_amt       := NULL; -- 5132302
51741 l_entered_amt_idx            := NULL;          -- 4262811
51742 l_accted_amt_idx             := NULL;          -- 4262811
51743 l_acc_rev_flag               := NULL;          -- 4262811
51744 l_accrual_line_num           := NULL;          -- 4262811
51745 l_tmp_amt                    := NULL;          -- 4262811
51746 --
51747  
51748 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51749     l_balance_type_code <> 'B' THEN
51750 IF NVL(p_source_22,'
51751 ') =  'N'
51752  THEN 
51753 
51754    --
51755    XLA_AE_LINES_PKG.SetNewLine;
51756 
51757    p_balance_type_code          := l_balance_type_code;
51758    -- set the flag so later we will know whether the gain loss line needs to be created
51759    
51760    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51761      p_actual_flag :='A';
51762    END IF;
51763 
51764    --
51765    -- bulk performance
51766    --
51767    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51768                                       p_header_num   => 0); -- 4262811
51769    --
51770    -- set accounting line options
51771    --
51772    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51773            p_natural_side_code          => 'D'
51774          , p_gain_or_loss_flag          => 'N'
51775          , p_gl_transfer_mode_code      => 'S'
51776          , p_acct_entry_type_code       => 'A'
51777          , p_switch_side_flag           => 'Y'
51778          , p_merge_duplicate_code       => 'N'
51779          );
51780    --
51781    l_acc_rev_natural_side_code := 'C';  -- 4262811
51782    -- 
51783    --
51784    -- set accounting line type info
51785    --
51786    xla_ae_lines_pkg.SetAcctLineType
51787       (p_component_type             => l_component_type
51788       ,p_event_type_code            => l_event_type_code
51789       ,p_line_definition_owner_code => l_line_definition_owner_code
51790       ,p_line_definition_code       => l_line_definition_code
51791       ,p_accounting_line_code       => l_component_code
51792       ,p_accounting_line_type_code  => l_component_type_code
51793       ,p_accounting_line_appl_id    => l_component_appl_id
51794       ,p_amb_context_code           => l_amb_context_code
51795       ,p_entity_code                => l_entity_code
51796       ,p_event_class_code           => l_event_class_code);
51797    --
51798    -- set accounting class
51799    --
51800    xla_ae_lines_pkg.SetAcctClass(
51801            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
51802          , p_ae_header_id           => l_ae_header_id
51803          );
51804 
51805    --
51806    -- set rounding class
51807    --
51808    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51809                       'FEDERAL_PROJECT_COST';
51810 
51811    --
51812    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51813    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51814    --
51815    -- bulk performance
51816    --
51817    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51818 
51819    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51820       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51821 
51822    -- 4955764
51823    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51824       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51825 
51826    -- 4458381 Public Sector Enh
51827    
51828    --
51829    -- set accounting attributes for the line type
51830    --
51831    l_entered_amt_idx := 22;
51835    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
51832    l_accted_amt_idx  := 27;
51833    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51834    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
51836    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
51837    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
51838    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
51839    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
51840    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
51841    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
51842    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
51843    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
51844    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
51845    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
51846    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
51847    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
51848    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
51849    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
51850    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
51851    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
51852    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
51853    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
51854    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
51855    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
51856    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
51857    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
51858    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
51859    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
51860    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
51861    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
51862    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
51863    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
51864    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
51865    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
51866    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
51867    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
51868    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
51869    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
51870    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
51871    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
51872    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
51873    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
51874    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
51875    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
51876    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
51877    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
51878    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
51879    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
51880    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
51881    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
51882    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
51883    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
51884    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
51885    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
51886    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
51887    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
51888    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
51889    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
51890    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
51891    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
51892    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
51893    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
51894 
51895    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51896    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51897 
51898    ---------------------------------------------------------------------------------------------------------------
51899    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51900    ---------------------------------------------------------------------------------------------------------------
51901    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51902 
51903    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51904    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51905 
51906    IF xla_accounting_cache_pkg.GetValueChar
51907          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51908          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51909    AND l_bflow_method_code = 'PRIOR_ENTRY'
51910 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51911    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51912          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51913        )
51914    THEN
51915          xla_ae_lines_pkg.BflowUpgEntry
51916            (p_business_method_code    => l_bflow_method_code
51917            ,p_business_class_code     => l_bflow_class_code
51918            ,p_balance_type            => l_balance_type_code);
51919    ELSE
51920       NULL;
51921 -- No business flow processing for business flow method of NONE.
51922    END IF;
51923 
51924    --
51925    -- call analytical criteria
51926    --
51927    
51928    --
51932    --
51929    -- call description
51930    --
51931    -- No description or it is inherited.
51933    -- call ADRs
51934    -- Bug 4922099
51935    --
51936    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51937         (NVL(l_actual_upg_option, 'N') = 'O') OR
51938         (NVL(l_enc_upg_option, 'N') = 'O')
51939       )
51940    THEN
51941    NULL;
51942    --
51943    --
51944    
51945   l_ccid := AcctDerRule_12(
51946            p_application_id           => p_application_id
51947          , p_ae_header_id             => l_ae_header_id 
51948 , p_source_4 => p_source_4
51949 , p_source_5 => p_source_5
51950 , p_source_6 => p_source_6
51951          , x_transaction_coa_id       => l_adr_transaction_coa_id
51952          , x_accounting_coa_id        => l_adr_accounting_coa_id
51953          , x_value_type_code          => l_adr_value_type_code
51954          , p_side                     => 'NA'
51955    );
51956 
51957    xla_ae_lines_pkg.set_ccid(
51958     p_code_combination_id          => l_ccid
51959   , p_value_type_code              => l_adr_value_type_code
51960   , p_transaction_coa_id           => l_adr_transaction_coa_id
51961   , p_accounting_coa_id            => l_adr_accounting_coa_id
51962   , p_adr_code                     => 'PA_COST_ACCT_RULE'
51963   , p_adr_type_code                => 'S'
51964   , p_component_type               => l_component_type
51965   , p_component_code               => l_component_code
51966   , p_component_type_code          => l_component_type_code
51967   , p_component_appl_id            => l_component_appl_id
51968   , p_amb_context_code             => l_amb_context_code
51969   , p_side                         => 'NA'
51970   );
51971 
51972 
51973    l_segment := AcctDerRule_6(
51974            p_application_id           => p_application_id
51975          , p_ae_header_id             => l_ae_header_id 
51976 , p_source_2 => p_source_2
51977          , x_transaction_coa_id       => l_adr_transaction_coa_id
51978          , x_accounting_coa_id        => l_adr_accounting_coa_id
51979          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
51980          , x_flex_value_set_id        => l_adr_flex_value_set_id
51981          , x_value_type_code          => l_adr_value_type_code
51982          , x_value_combination_id     => l_adr_value_combination_id
51983          , x_value_segment_code       => l_adr_value_segment_code
51984          , p_side                     => 'NA'
51985          , p_override_seg_flag        => 'Y'
51986    );
51987 
51988    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
51989 
51990       xla_ae_lines_pkg.set_segment(
51991           p_to_segment_code         => 'GL_ACCOUNT'
51992         , p_segment_value           => l_segment
51993         , p_from_segment_code       => l_adr_value_segment_code
51994         , p_from_combination_id     => l_adr_value_combination_id
51995         , p_value_type_code         => l_adr_value_type_code
51996         , p_transaction_coa_id      => l_adr_transaction_coa_id
51997         , p_accounting_coa_id       => l_adr_accounting_coa_id
51998         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
51999         , p_flex_value_set_id       => l_adr_flex_value_set_id
52000         , p_adr_code                => 'FV_4XXX_PROJECTS'
52001         , p_adr_type_code           => 'S'
52002         , p_component_type          => l_component_type
52003         , p_component_code          => l_component_code
52004         , p_component_type_code     => l_component_type_code
52005         , p_component_appl_id       => l_component_appl_id
52006         , p_amb_context_code        => l_amb_context_code
52007         , p_entity_code             => 'EXPENDITURES'
52008         , p_event_class_code        => 'SUPPLIER_COST'
52009         , p_side                    => 'NA'
52010         );
52011 
52012   END IF;
52013 
52014    --
52015    --
52016    END IF;
52017    --
52018    -- Bug 4922099
52019    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52020           (NVL(l_enc_upg_option, 'N') = 'O')
52021         ) AND
52022         (l_bflow_method_code = 'PRIOR_ENTRY')
52023       )
52024    THEN
52025       IF
52026       --
52027       1 = 2
52028       --
52029       THEN
52030       xla_accounting_err_pkg.build_message
52031                                     (p_appli_s_name            => 'XLA'
52032                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52033                                     ,p_token_1                 => 'LINE_NUMBER'
52034                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52035                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52036                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52037                                                                              l_component_type
52038                                                                             ,l_component_code
52039                                                                             ,l_component_type_code
52040                                                                             ,l_component_appl_id
52041                                                                             ,l_amb_context_code
52042                                                                             ,l_entity_code
52043                                                                             ,l_event_class_code
52044                                                                            )
52045                                     ,p_token_3                 => 'OWNER'
52046                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52047                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52051                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52048                                                                           ,p_lookup_code    => l_component_type_code
52049                                                                          )
52050                                     ,p_token_4                 => 'PRODUCT_NAME'
52052                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52053                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52054                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52055                                     ,p_ae_header_id            =>  NULL
52056                                        );
52057 
52058         IF (C_LEVEL_ERROR>= g_log_level) THEN
52059                  trace
52060                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52061                       ,p_level    => C_LEVEL_ERROR
52062                       ,p_module   => l_log_module);
52063         END IF;
52064       END IF;
52065    END IF;
52066    --
52067    --
52068    ------------------------------------------------------------------------------------------------
52069    -- 4219869 Business Flow
52070    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52071    -- Prior Entry.  Currently, the following code is always generated.
52072    ------------------------------------------------------------------------------------------------
52073    XLA_AE_LINES_PKG.ValidateCurrentLine;
52074 
52075    ------------------------------------------------------------------------------------
52076    -- 4219869 Business Flow
52077    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52078    ------------------------------------------------------------------------------------
52079    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52080 
52081    ----------------------------------------------------------------------------------
52082    -- 4219869 Business Flow
52083    -- Update journal entry status -- Need to generate this within IF <condition>
52084    ----------------------------------------------------------------------------------
52085    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52086          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52087          ,p_balance_type_code => l_balance_type_code
52088          );
52089 
52090    -------------------------------------------------------------------------------------------
52091    -- 4262811 - Generate the Accrual Reversal lines
52092    -------------------------------------------------------------------------------------------
52093    BEGIN
52094       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52095                               (g_array_event(p_event_id).array_value_num('header_index'));
52096       IF l_acc_rev_flag IS NULL THEN
52097          l_acc_rev_flag := 'N';
52098       END IF;
52099    EXCEPTION
52100       WHEN OTHERS THEN
52101          l_acc_rev_flag := 'N';
52102    END;
52103    --
52104    IF (l_acc_rev_flag = 'Y') THEN
52105 
52106        -- 4645092  ------------------------------------------------------------------------------
52107        -- To allow MPA report to determine if it should generate report process
52108        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52109        ------------------------------------------------------------------------------------------
52110 
52111        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52112        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52113 
52114        --
52115        -- Update the line information that should be overwritten
52116        --
52117        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52118                                          p_header_num   => 1);
52119        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52120 
52121        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52122 
52123        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52124           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52125        END IF;
52126 
52127       --
52128       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52129       --
52130       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52131           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52132       ELSE
52133           ---------------------------------------------------------------------------------------------------
52134           -- 4262811a Switch Sign
52135           ---------------------------------------------------------------------------------------------------
52136           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52137           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52138                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52139           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52140                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52141           -- 5132302
52142           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52143                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52144 
52145       END IF;
52146 
52147       -- 4955764
52148       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52152       XLA_AE_LINES_PKG.ValidateCurrentLine;
52149       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52150 
52151 
52153       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52154 
52155       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52156                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52157                ,p_balance_type_code => l_balance_type_code);
52158 
52159    END IF;
52160 
52161    -----------------------------------------------------------------------------------------
52162    -- 4262811 Multiperiod Accounting
52163    -----------------------------------------------------------------------------------------
52164      -- No MPA option is assigned.
52165 
52166 
52167 END IF;
52168 END IF;
52169 --
52170 
52171 --
52172 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52173    trace
52174       (p_msg      => 'END of AcctLineType_110'
52175       ,p_level    => C_LEVEL_PROCEDURE
52176       ,p_module   => l_log_module);
52177 END IF;
52178 --
52179 EXCEPTION
52180   WHEN xla_exceptions_pkg.application_exception THEN
52181       RAISE;
52182   WHEN OTHERS THEN
52183        xla_exceptions_pkg.raise_message
52184            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_110');
52185 END AcctLineType_110;
52186 --
52187 
52188 ---------------------------------------
52189 --
52190 -- PRIVATE FUNCTION
52191 --         AcctLineType_111
52192 --
52193 ---------------------------------------
52194 PROCEDURE AcctLineType_111 (
52195   p_application_id        IN NUMBER
52196  ,p_event_id              IN NUMBER
52197  ,p_calculate_acctd_flag  IN VARCHAR2
52198  ,p_calculate_g_l_flag    IN VARCHAR2
52199  ,p_actual_flag           IN OUT VARCHAR2
52200  ,p_balance_type_code     OUT VARCHAR2
52201  ,p_gain_or_loss_ref      OUT VARCHAR2
52202  
52203 --Cost CCID
52204  , p_source_4            IN NUMBER
52205 --Allow Account Override Flag
52206  , p_source_5            IN VARCHAR2
52207 --Adjustment Cost CCID
52208  , p_source_6            IN NUMBER
52209 --Cost Clearing CCID
52210  , p_source_7            IN NUMBER
52211 --Reversing Line Flag
52212  , p_source_23            IN VARCHAR2
52213 --Actual Upgrade Credit Accounting Class
52214  , p_source_24            IN VARCHAR2
52215 --Entered Raw Cost
52216  , p_source_25            IN NUMBER
52217 --Entered Currency Code
52218  , p_source_26            IN VARCHAR2
52219 --Accounted Raw Cost
52220  , p_source_27            IN NUMBER
52221 --Exchange Rate Date
52222  , p_source_28            IN DATE
52223 --Exchange Rate
52224  , p_source_29            IN NUMBER
52225 --Exchange Rate Type
52226  , p_source_30            IN VARCHAR2
52227 --Actual Upgrade Debit Accounting Class
52228  , p_source_31            IN VARCHAR2
52229 --Use Actuals Upgrade Attributes Flag
52230  , p_source_32            IN VARCHAR2
52231 --Expenditure Item ID
52232  , p_source_33            IN NUMBER
52233 --Cost Distribution Line Number
52234  , p_source_34            IN NUMBER
52235 --Line Type
52236  , p_source_35            IN VARCHAR2
52237  , p_source_35_meaning    IN VARCHAR2
52238 --Reversed Line Number
52239  , p_source_36            IN NUMBER
52240 )
52241 IS
52242 
52243 l_component_type              VARCHAR2(80);
52244 l_component_code              VARCHAR2(30);
52245 l_component_type_code         VARCHAR2(1);
52246 l_component_appl_id           INTEGER;
52247 l_amb_context_code            VARCHAR2(30);
52248 l_entity_code                 VARCHAR2(30);
52249 l_event_class_code            VARCHAR2(30);
52250 l_ae_header_id                NUMBER;
52251 l_event_type_code             VARCHAR2(30);
52252 l_line_definition_code        VARCHAR2(30);
52253 l_line_definition_owner_code  VARCHAR2(1);
52254 --
52255 -- adr variables
52256 l_segment                     VARCHAR2(30);
52257 l_ccid                        NUMBER;
52258 l_adr_transaction_coa_id      NUMBER;
52259 l_adr_accounting_coa_id       NUMBER;
52260 l_adr_flexfield_segment_code  VARCHAR2(30);
52261 l_adr_flex_value_set_id       NUMBER;
52262 l_adr_value_type_code         VARCHAR2(30);
52263 l_adr_value_combination_id    NUMBER;
52264 l_adr_value_segment_code      VARCHAR2(30);
52265 
52266 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52267 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52268 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52269 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52270 
52271 -- 4262811 Variables ------------------------------------------------------------------------------------------
52272 l_entered_amt_idx             NUMBER;
52273 l_accted_amt_idx              NUMBER;
52274 l_acc_rev_flag                VARCHAR2(1);
52275 l_accrual_line_num            NUMBER;
52276 l_tmp_amt                     NUMBER;
52277 l_acc_rev_natural_side_code   VARCHAR2(1);
52278 
52279 l_num_entries                 NUMBER;
52280 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52281 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52282 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52283 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52284 l_recog_line_1                NUMBER;
52285 l_recog_line_2                NUMBER;
52286 
52287 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52288 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52289 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52290 
52291 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52292 
52296 ---------------------------------------------------------------------------------------------------------------
52293 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52294 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52295 
52297 
52298 
52299 --
52300 -- bulk performance
52301 --
52302 l_balance_type_code           VARCHAR2(1);
52303 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52304 l_log_module                  VARCHAR2(240);
52305 
52306 --
52307 -- Upgrade strategy
52308 --
52309 l_actual_upg_option           VARCHAR2(1);
52310 l_enc_upg_option           VARCHAR2(1);
52311 
52312 --
52313 BEGIN
52314 --
52315 IF g_log_enabled THEN
52316       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
52317 END IF;
52318 --
52319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52320 
52321       trace
52322          (p_msg      => 'BEGIN of AcctLineType_111'
52323          ,p_level    => C_LEVEL_PROCEDURE
52324          ,p_module   => l_log_module);
52325 
52326 END IF;
52327 --
52328 l_component_type             := 'AMB_JLT';
52329 l_component_code             := 'PA_RAW_COST_FED';
52330 l_component_type_code        := 'S';
52331 l_component_appl_id          :=  275;
52332 l_amb_context_code           := 'DEFAULT';
52333 l_entity_code                := 'EXPENDITURES';
52334 l_event_class_code           := 'WIP_COST';
52335 l_event_type_code            := 'WIP_COST_ALL';
52336 l_line_definition_owner_code := 'S';
52337 l_line_definition_code       := 'FV_PROJECTS_JLD';
52338 --
52339 l_balance_type_code          := 'A';
52340 l_segment                     := NULL;
52341 l_ccid                        := NULL;
52342 l_adr_transaction_coa_id      := NULL;
52343 l_adr_accounting_coa_id       := NULL;
52344 l_adr_flexfield_segment_code  := NULL;
52345 l_adr_flex_value_set_id       := NULL;
52346 l_adr_value_type_code         := NULL;
52347 l_adr_value_combination_id    := NULL;
52348 l_adr_value_segment_code      := NULL;
52349 
52350 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52351 l_bflow_class_code           := '';    -- 4219869 Business Flow
52352 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52353 l_budgetary_control_flag     := 'N';
52354 
52355 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52356 l_bflow_applied_to_amt       := NULL; -- 5132302
52357 l_entered_amt_idx            := NULL;          -- 4262811
52358 l_accted_amt_idx             := NULL;          -- 4262811
52359 l_acc_rev_flag               := NULL;          -- 4262811
52360 l_accrual_line_num           := NULL;          -- 4262811
52361 l_tmp_amt                    := NULL;          -- 4262811
52362 --
52363  
52364 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52365     l_balance_type_code <> 'B' THEN
52366 
52367    --
52368    XLA_AE_LINES_PKG.SetNewLine;
52369 
52370    p_balance_type_code          := l_balance_type_code;
52371    -- set the flag so later we will know whether the gain loss line needs to be created
52372    
52373    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52374      p_actual_flag :='A';
52375    END IF;
52376 
52377    --
52378    -- bulk performance
52379    --
52380    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52381                                       p_header_num   => 0); -- 4262811
52382    --
52383    -- set accounting line options
52384    --
52385    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52386            p_natural_side_code          => 'D'
52387          , p_gain_or_loss_flag          => 'N'
52388          , p_gl_transfer_mode_code      => 'S'
52389          , p_acct_entry_type_code       => 'A'
52390          , p_switch_side_flag           => 'Y'
52391          , p_merge_duplicate_code       => 'N'
52392          );
52393    --
52394    l_acc_rev_natural_side_code := 'C';  -- 4262811
52395    -- 
52396    --
52397    -- set accounting line type info
52398    --
52399    xla_ae_lines_pkg.SetAcctLineType
52400       (p_component_type             => l_component_type
52401       ,p_event_type_code            => l_event_type_code
52402       ,p_line_definition_owner_code => l_line_definition_owner_code
52403       ,p_line_definition_code       => l_line_definition_code
52404       ,p_accounting_line_code       => l_component_code
52405       ,p_accounting_line_type_code  => l_component_type_code
52406       ,p_accounting_line_appl_id    => l_component_appl_id
52407       ,p_amb_context_code           => l_amb_context_code
52408       ,p_entity_code                => l_entity_code
52409       ,p_event_class_code           => l_event_class_code);
52410    --
52411    -- set accounting class
52412    --
52413    xla_ae_lines_pkg.SetAcctClass(
52414            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
52415          , p_ae_header_id           => l_ae_header_id
52416          );
52417 
52418    --
52419    -- set rounding class
52420    --
52421    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52422                       'FEDERAL_PROJECT_COST';
52423 
52424    --
52425    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52426    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52427    --
52428    -- bulk performance
52429    --
52430    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52431 
52432    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52433       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52434 
52435    -- 4955764
52439    -- 4458381 Public Sector Enh
52436    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52437       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52438 
52440    
52441    --
52442    -- set accounting attributes for the line type
52443    --
52444    l_entered_amt_idx := 22;
52445    l_accted_amt_idx  := 27;
52446    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52447    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
52448    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
52449    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
52450    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
52451    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
52452    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
52453    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
52454    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
52455    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
52456    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
52457    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
52458    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
52459    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
52460    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
52461    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
52462    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
52463    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
52464    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
52465    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
52466    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
52467    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
52468    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
52469    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
52470    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
52471    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
52472    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
52473    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
52474    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
52475    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
52476    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
52477    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
52478    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
52479    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
52480    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
52481    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
52482    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
52483    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
52484    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
52485    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
52486    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
52487    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
52488    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
52489    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
52490    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
52491    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
52492    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
52493    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
52494    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
52495    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
52496    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
52497    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
52498    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
52499    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
52500    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
52501    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
52502    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
52503    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
52504    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
52505    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
52506    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
52507 
52508    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52509    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52510 
52511    ---------------------------------------------------------------------------------------------------------------
52512    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52513    ---------------------------------------------------------------------------------------------------------------
52514    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52515 
52516    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52517    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52518 
52519    IF xla_accounting_cache_pkg.GetValueChar
52520          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52521          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52522    AND l_bflow_method_code = 'PRIOR_ENTRY'
52523 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52524    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52525          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52526        )
52527    THEN
52528          xla_ae_lines_pkg.BflowUpgEntry
52529            (p_business_method_code    => l_bflow_method_code
52533       NULL;
52530            ,p_business_class_code     => l_bflow_class_code
52531            ,p_balance_type            => l_balance_type_code);
52532    ELSE
52534 -- No business flow processing for business flow method of NONE.
52535    END IF;
52536 
52537    --
52538    -- call analytical criteria
52539    --
52540    
52541    --
52542    -- call description
52543    --
52544    -- No description or it is inherited.
52545    --
52546    -- call ADRs
52547    -- Bug 4922099
52548    --
52549    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52550         (NVL(l_actual_upg_option, 'N') = 'O') OR
52551         (NVL(l_enc_upg_option, 'N') = 'O')
52552       )
52553    THEN
52554    NULL;
52555    --
52556    --
52557    
52558   l_ccid := AcctDerRule_12(
52559            p_application_id           => p_application_id
52560          , p_ae_header_id             => l_ae_header_id 
52561 , p_source_4 => p_source_4
52562 , p_source_5 => p_source_5
52563 , p_source_6 => p_source_6
52564          , x_transaction_coa_id       => l_adr_transaction_coa_id
52565          , x_accounting_coa_id        => l_adr_accounting_coa_id
52566          , x_value_type_code          => l_adr_value_type_code
52567          , p_side                     => 'NA'
52568    );
52569 
52570    xla_ae_lines_pkg.set_ccid(
52571     p_code_combination_id          => l_ccid
52572   , p_value_type_code              => l_adr_value_type_code
52573   , p_transaction_coa_id           => l_adr_transaction_coa_id
52574   , p_accounting_coa_id            => l_adr_accounting_coa_id
52575   , p_adr_code                     => 'PA_COST_ACCT_RULE'
52576   , p_adr_type_code                => 'S'
52577   , p_component_type               => l_component_type
52578   , p_component_code               => l_component_code
52579   , p_component_type_code          => l_component_type_code
52580   , p_component_appl_id            => l_component_appl_id
52581   , p_amb_context_code             => l_amb_context_code
52582   , p_side                         => 'NA'
52583   );
52584 
52585 
52586    l_segment := AcctDerRule_4(
52587            p_application_id           => p_application_id
52588          , p_ae_header_id             => l_ae_header_id 
52589          , x_transaction_coa_id       => l_adr_transaction_coa_id
52590          , x_accounting_coa_id        => l_adr_accounting_coa_id
52591          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
52592          , x_flex_value_set_id        => l_adr_flex_value_set_id
52593          , x_value_type_code          => l_adr_value_type_code
52594          , x_value_combination_id     => l_adr_value_combination_id
52595          , x_value_segment_code       => l_adr_value_segment_code
52596          , p_side                     => 'NA'
52597          , p_override_seg_flag        => 'Y'
52598    );
52599 
52600    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
52601 
52602       xla_ae_lines_pkg.set_segment(
52603           p_to_segment_code         => 'GL_ACCOUNT'
52604         , p_segment_value           => l_segment
52605         , p_from_segment_code       => l_adr_value_segment_code
52606         , p_from_combination_id     => l_adr_value_combination_id
52607         , p_value_type_code         => l_adr_value_type_code
52608         , p_transaction_coa_id      => l_adr_transaction_coa_id
52609         , p_accounting_coa_id       => l_adr_accounting_coa_id
52610         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
52611         , p_flex_value_set_id       => l_adr_flex_value_set_id
52612         , p_adr_code                => 'FV_461001_PROJECTS'
52613         , p_adr_type_code           => 'S'
52614         , p_component_type          => l_component_type
52615         , p_component_code          => l_component_code
52616         , p_component_type_code     => l_component_type_code
52617         , p_component_appl_id       => l_component_appl_id
52618         , p_amb_context_code        => l_amb_context_code
52619         , p_entity_code             => 'EXPENDITURES'
52620         , p_event_class_code        => 'WIP_COST'
52621         , p_side                    => 'NA'
52622         );
52623 
52624   END IF;
52625 
52626    --
52627    --
52628    END IF;
52629    --
52630    -- Bug 4922099
52631    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52632           (NVL(l_enc_upg_option, 'N') = 'O')
52633         ) AND
52634         (l_bflow_method_code = 'PRIOR_ENTRY')
52635       )
52636    THEN
52637       IF
52638       --
52639       1 = 2
52640       --
52641       THEN
52642       xla_accounting_err_pkg.build_message
52643                                     (p_appli_s_name            => 'XLA'
52644                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52645                                     ,p_token_1                 => 'LINE_NUMBER'
52646                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52647                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52648                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52649                                                                              l_component_type
52650                                                                             ,l_component_code
52651                                                                             ,l_component_type_code
52652                                                                             ,l_component_appl_id
52653                                                                             ,l_amb_context_code
52654                                                                             ,l_entity_code
52655                                                                             ,l_event_class_code
52656                                                                            )
52660                                                                           ,p_lookup_code    => l_component_type_code
52657                                     ,p_token_3                 => 'OWNER'
52658                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52659                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52661                                                                          )
52662                                     ,p_token_4                 => 'PRODUCT_NAME'
52663                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52664                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52665                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52666                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52667                                     ,p_ae_header_id            =>  NULL
52668                                        );
52669 
52670         IF (C_LEVEL_ERROR>= g_log_level) THEN
52671                  trace
52672                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52673                       ,p_level    => C_LEVEL_ERROR
52674                       ,p_module   => l_log_module);
52675         END IF;
52676       END IF;
52677    END IF;
52678    --
52679    --
52680    ------------------------------------------------------------------------------------------------
52681    -- 4219869 Business Flow
52682    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52683    -- Prior Entry.  Currently, the following code is always generated.
52684    ------------------------------------------------------------------------------------------------
52685    XLA_AE_LINES_PKG.ValidateCurrentLine;
52686 
52687    ------------------------------------------------------------------------------------
52688    -- 4219869 Business Flow
52689    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52690    ------------------------------------------------------------------------------------
52691    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52692 
52693    ----------------------------------------------------------------------------------
52694    -- 4219869 Business Flow
52695    -- Update journal entry status -- Need to generate this within IF <condition>
52696    ----------------------------------------------------------------------------------
52697    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52698          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52699          ,p_balance_type_code => l_balance_type_code
52700          );
52701 
52702    -------------------------------------------------------------------------------------------
52703    -- 4262811 - Generate the Accrual Reversal lines
52704    -------------------------------------------------------------------------------------------
52705    BEGIN
52706       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52707                               (g_array_event(p_event_id).array_value_num('header_index'));
52708       IF l_acc_rev_flag IS NULL THEN
52709          l_acc_rev_flag := 'N';
52710       END IF;
52711    EXCEPTION
52712       WHEN OTHERS THEN
52713          l_acc_rev_flag := 'N';
52714    END;
52715    --
52716    IF (l_acc_rev_flag = 'Y') THEN
52717 
52718        -- 4645092  ------------------------------------------------------------------------------
52719        -- To allow MPA report to determine if it should generate report process
52720        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52721        ------------------------------------------------------------------------------------------
52722 
52723        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52724        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52725 
52726        --
52727        -- Update the line information that should be overwritten
52728        --
52729        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52730                                          p_header_num   => 1);
52731        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52732 
52733        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52734 
52735        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52736           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52737        END IF;
52738 
52739       --
52740       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52741       --
52742       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52743           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52744       ELSE
52745           ---------------------------------------------------------------------------------------------------
52746           -- 4262811a Switch Sign
52747           ---------------------------------------------------------------------------------------------------
52748           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52749           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52750                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52751           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52752                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52753           -- 5132302
52754           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52758 
52755                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52756 
52757       END IF;
52759       -- 4955764
52760       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52761       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52762 
52763 
52764       XLA_AE_LINES_PKG.ValidateCurrentLine;
52765       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52766 
52767       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52768                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52769                ,p_balance_type_code => l_balance_type_code);
52770 
52771    END IF;
52772 
52773    -----------------------------------------------------------------------------------------
52774    -- 4262811 Multiperiod Accounting
52775    -----------------------------------------------------------------------------------------
52776      -- No MPA option is assigned.
52777 
52778 
52779 END IF;
52780 --
52781 
52782 --
52783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52784    trace
52785       (p_msg      => 'END of AcctLineType_111'
52786       ,p_level    => C_LEVEL_PROCEDURE
52787       ,p_module   => l_log_module);
52788 END IF;
52789 --
52790 EXCEPTION
52791   WHEN xla_exceptions_pkg.application_exception THEN
52792       RAISE;
52793   WHEN OTHERS THEN
52794        xla_exceptions_pkg.raise_message
52795            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_111');
52796 END AcctLineType_111;
52797 --
52798 
52799 ---------------------------------------
52800 --
52801 -- PRIVATE FUNCTION
52802 --         AcctLineType_112
52803 --
52804 ---------------------------------------
52805 PROCEDURE AcctLineType_112 (
52806   p_application_id        IN NUMBER
52807  ,p_event_id              IN NUMBER
52808  ,p_calculate_acctd_flag  IN VARCHAR2
52809  ,p_calculate_g_l_flag    IN VARCHAR2
52810  ,p_actual_flag           IN OUT VARCHAR2
52811  ,p_balance_type_code     OUT VARCHAR2
52812  ,p_gain_or_loss_ref      OUT VARCHAR2
52813  
52814 --Cost CCID
52815  , p_source_4            IN NUMBER
52816 --Allow Account Override Flag
52817  , p_source_5            IN VARCHAR2
52818 --Adjustment Cost CCID
52819  , p_source_6            IN NUMBER
52820 --Cost Clearing CCID
52821  , p_source_7            IN NUMBER
52822 --Reversing Line Flag
52823  , p_source_23            IN VARCHAR2
52824 --Actual Upgrade Credit Accounting Class
52825  , p_source_24            IN VARCHAR2
52826 --Entered Raw Cost
52827  , p_source_25            IN NUMBER
52828 --Entered Currency Code
52829  , p_source_26            IN VARCHAR2
52830 --Accounted Raw Cost
52831  , p_source_27            IN NUMBER
52832 --Exchange Rate Date
52833  , p_source_28            IN DATE
52834 --Exchange Rate
52835  , p_source_29            IN NUMBER
52836 --Exchange Rate Type
52837  , p_source_30            IN VARCHAR2
52838 --Actual Upgrade Debit Accounting Class
52839  , p_source_31            IN VARCHAR2
52840 --Use Actuals Upgrade Attributes Flag
52841  , p_source_32            IN VARCHAR2
52842 --Expenditure Item ID
52843  , p_source_33            IN NUMBER
52844 --Cost Distribution Line Number
52845  , p_source_34            IN NUMBER
52846 --Line Type
52847  , p_source_35            IN VARCHAR2
52848  , p_source_35_meaning    IN VARCHAR2
52849 --Reversed Line Number
52850  , p_source_36            IN NUMBER
52851 )
52852 IS
52853 
52854 l_component_type              VARCHAR2(80);
52855 l_component_code              VARCHAR2(30);
52856 l_component_type_code         VARCHAR2(1);
52857 l_component_appl_id           INTEGER;
52858 l_amb_context_code            VARCHAR2(30);
52859 l_entity_code                 VARCHAR2(30);
52860 l_event_class_code            VARCHAR2(30);
52861 l_ae_header_id                NUMBER;
52862 l_event_type_code             VARCHAR2(30);
52863 l_line_definition_code        VARCHAR2(30);
52864 l_line_definition_owner_code  VARCHAR2(1);
52865 --
52866 -- adr variables
52867 l_segment                     VARCHAR2(30);
52868 l_ccid                        NUMBER;
52869 l_adr_transaction_coa_id      NUMBER;
52870 l_adr_accounting_coa_id       NUMBER;
52871 l_adr_flexfield_segment_code  VARCHAR2(30);
52872 l_adr_flex_value_set_id       NUMBER;
52873 l_adr_value_type_code         VARCHAR2(30);
52874 l_adr_value_combination_id    NUMBER;
52875 l_adr_value_segment_code      VARCHAR2(30);
52876 
52877 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52878 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52879 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52880 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52881 
52882 -- 4262811 Variables ------------------------------------------------------------------------------------------
52883 l_entered_amt_idx             NUMBER;
52884 l_accted_amt_idx              NUMBER;
52885 l_acc_rev_flag                VARCHAR2(1);
52886 l_accrual_line_num            NUMBER;
52887 l_tmp_amt                     NUMBER;
52888 l_acc_rev_natural_side_code   VARCHAR2(1);
52889 
52890 l_num_entries                 NUMBER;
52891 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52892 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52893 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52894 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52895 l_recog_line_1                NUMBER;
52896 l_recog_line_2                NUMBER;
52897 
52898 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52902 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52899 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52900 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52901 
52903 
52904 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52905 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52906 
52907 ---------------------------------------------------------------------------------------------------------------
52908 
52909 
52910 --
52911 -- bulk performance
52912 --
52913 l_balance_type_code           VARCHAR2(1);
52914 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52915 l_log_module                  VARCHAR2(240);
52916 
52917 --
52918 -- Upgrade strategy
52919 --
52920 l_actual_upg_option           VARCHAR2(1);
52921 l_enc_upg_option           VARCHAR2(1);
52922 
52923 --
52924 BEGIN
52925 --
52926 IF g_log_enabled THEN
52927       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
52928 END IF;
52929 --
52930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52931 
52932       trace
52933          (p_msg      => 'BEGIN of AcctLineType_112'
52934          ,p_level    => C_LEVEL_PROCEDURE
52935          ,p_module   => l_log_module);
52936 
52937 END IF;
52938 --
52939 l_component_type             := 'AMB_JLT';
52940 l_component_code             := 'PA_RAW_COST_FED';
52941 l_component_type_code        := 'S';
52942 l_component_appl_id          :=  275;
52943 l_amb_context_code           := 'DEFAULT';
52944 l_entity_code                := 'EXPENDITURES';
52945 l_event_class_code           := 'LABOR_COST';
52946 l_event_type_code            := 'LABOR_COST_ALL';
52947 l_line_definition_owner_code := 'S';
52948 l_line_definition_code       := 'FV_PROJECTS_JLD';
52949 --
52950 l_balance_type_code          := 'A';
52951 l_segment                     := NULL;
52952 l_ccid                        := NULL;
52953 l_adr_transaction_coa_id      := NULL;
52954 l_adr_accounting_coa_id       := NULL;
52955 l_adr_flexfield_segment_code  := NULL;
52956 l_adr_flex_value_set_id       := NULL;
52957 l_adr_value_type_code         := NULL;
52958 l_adr_value_combination_id    := NULL;
52959 l_adr_value_segment_code      := NULL;
52960 
52961 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52962 l_bflow_class_code           := '';    -- 4219869 Business Flow
52963 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52964 l_budgetary_control_flag     := 'N';
52965 
52966 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52967 l_bflow_applied_to_amt       := NULL; -- 5132302
52968 l_entered_amt_idx            := NULL;          -- 4262811
52969 l_accted_amt_idx             := NULL;          -- 4262811
52970 l_acc_rev_flag               := NULL;          -- 4262811
52971 l_accrual_line_num           := NULL;          -- 4262811
52972 l_tmp_amt                    := NULL;          -- 4262811
52973 --
52974  
52975 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52976     l_balance_type_code <> 'B' THEN
52977 
52978    --
52979    XLA_AE_LINES_PKG.SetNewLine;
52980 
52981    p_balance_type_code          := l_balance_type_code;
52982    -- set the flag so later we will know whether the gain loss line needs to be created
52983    
52984    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52985      p_actual_flag :='A';
52986    END IF;
52987 
52988    --
52989    -- bulk performance
52990    --
52991    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52992                                       p_header_num   => 0); -- 4262811
52993    --
52994    -- set accounting line options
52995    --
52996    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52997            p_natural_side_code          => 'D'
52998          , p_gain_or_loss_flag          => 'N'
52999          , p_gl_transfer_mode_code      => 'S'
53000          , p_acct_entry_type_code       => 'A'
53001          , p_switch_side_flag           => 'Y'
53002          , p_merge_duplicate_code       => 'N'
53003          );
53004    --
53005    l_acc_rev_natural_side_code := 'C';  -- 4262811
53006    -- 
53007    --
53008    -- set accounting line type info
53009    --
53010    xla_ae_lines_pkg.SetAcctLineType
53011       (p_component_type             => l_component_type
53012       ,p_event_type_code            => l_event_type_code
53013       ,p_line_definition_owner_code => l_line_definition_owner_code
53014       ,p_line_definition_code       => l_line_definition_code
53015       ,p_accounting_line_code       => l_component_code
53016       ,p_accounting_line_type_code  => l_component_type_code
53017       ,p_accounting_line_appl_id    => l_component_appl_id
53018       ,p_amb_context_code           => l_amb_context_code
53019       ,p_entity_code                => l_entity_code
53020       ,p_event_class_code           => l_event_class_code);
53021    --
53022    -- set accounting class
53023    --
53024    xla_ae_lines_pkg.SetAcctClass(
53025            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
53026          , p_ae_header_id           => l_ae_header_id
53027          );
53028 
53029    --
53030    -- set rounding class
53031    --
53032    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53033                       'FEDERAL_PROJECT_COST';
53034 
53035    --
53036    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53037    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53038    --
53039    -- bulk performance
53040    --
53044       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53041    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53042 
53043    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53045 
53046    -- 4955764
53047    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53048       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53049 
53050    -- 4458381 Public Sector Enh
53051    
53052    --
53053    -- set accounting attributes for the line type
53054    --
53055    l_entered_amt_idx := 22;
53056    l_accted_amt_idx  := 27;
53057    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53058    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
53059    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
53060    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
53061    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
53062    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
53063    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
53064    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
53065    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
53066    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
53067    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
53068    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
53069    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
53070    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
53071    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
53072    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
53073    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
53074    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
53075    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
53076    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
53077    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
53078    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
53079    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
53080    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
53081    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
53082    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
53083    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
53084    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
53085    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
53086    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
53087    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
53088    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
53089    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
53090    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
53091    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
53092    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
53093    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
53094    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
53095    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
53096    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
53097    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
53098    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
53099    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
53100    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
53101    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
53102    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
53103    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
53104    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
53105    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
53106    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
53107    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
53108    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
53109    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
53110    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
53111    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
53112    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
53113    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
53114    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
53115    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
53116    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
53117    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
53118 
53119    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53120    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53121 
53122    ---------------------------------------------------------------------------------------------------------------
53123    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53124    ---------------------------------------------------------------------------------------------------------------
53125    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53126 
53127    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53128    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53129 
53130    IF xla_accounting_cache_pkg.GetValueChar
53131          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53132          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53133    AND l_bflow_method_code = 'PRIOR_ENTRY'
53137        )
53134 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53135    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53136          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53138    THEN
53139          xla_ae_lines_pkg.BflowUpgEntry
53140            (p_business_method_code    => l_bflow_method_code
53141            ,p_business_class_code     => l_bflow_class_code
53142            ,p_balance_type            => l_balance_type_code);
53143    ELSE
53144       NULL;
53145 -- No business flow processing for business flow method of NONE.
53146    END IF;
53147 
53148    --
53149    -- call analytical criteria
53150    --
53151    
53152    --
53153    -- call description
53154    --
53155    -- No description or it is inherited.
53156    --
53157    -- call ADRs
53158    -- Bug 4922099
53159    --
53160    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53161         (NVL(l_actual_upg_option, 'N') = 'O') OR
53162         (NVL(l_enc_upg_option, 'N') = 'O')
53163       )
53164    THEN
53165    NULL;
53166    --
53167    --
53168    
53169   l_ccid := AcctDerRule_12(
53170            p_application_id           => p_application_id
53171          , p_ae_header_id             => l_ae_header_id 
53172 , p_source_4 => p_source_4
53173 , p_source_5 => p_source_5
53174 , p_source_6 => p_source_6
53175          , x_transaction_coa_id       => l_adr_transaction_coa_id
53176          , x_accounting_coa_id        => l_adr_accounting_coa_id
53177          , x_value_type_code          => l_adr_value_type_code
53178          , p_side                     => 'NA'
53179    );
53180 
53181    xla_ae_lines_pkg.set_ccid(
53182     p_code_combination_id          => l_ccid
53183   , p_value_type_code              => l_adr_value_type_code
53184   , p_transaction_coa_id           => l_adr_transaction_coa_id
53185   , p_accounting_coa_id            => l_adr_accounting_coa_id
53186   , p_adr_code                     => 'PA_COST_ACCT_RULE'
53187   , p_adr_type_code                => 'S'
53188   , p_component_type               => l_component_type
53189   , p_component_code               => l_component_code
53190   , p_component_type_code          => l_component_type_code
53191   , p_component_appl_id            => l_component_appl_id
53192   , p_amb_context_code             => l_amb_context_code
53193   , p_side                         => 'NA'
53194   );
53195 
53196 
53197    l_segment := AcctDerRule_4(
53198            p_application_id           => p_application_id
53199          , p_ae_header_id             => l_ae_header_id 
53200          , x_transaction_coa_id       => l_adr_transaction_coa_id
53201          , x_accounting_coa_id        => l_adr_accounting_coa_id
53202          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
53203          , x_flex_value_set_id        => l_adr_flex_value_set_id
53204          , x_value_type_code          => l_adr_value_type_code
53205          , x_value_combination_id     => l_adr_value_combination_id
53206          , x_value_segment_code       => l_adr_value_segment_code
53207          , p_side                     => 'NA'
53208          , p_override_seg_flag        => 'Y'
53209    );
53210 
53211    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
53212 
53213       xla_ae_lines_pkg.set_segment(
53214           p_to_segment_code         => 'GL_ACCOUNT'
53215         , p_segment_value           => l_segment
53216         , p_from_segment_code       => l_adr_value_segment_code
53217         , p_from_combination_id     => l_adr_value_combination_id
53218         , p_value_type_code         => l_adr_value_type_code
53219         , p_transaction_coa_id      => l_adr_transaction_coa_id
53220         , p_accounting_coa_id       => l_adr_accounting_coa_id
53221         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
53222         , p_flex_value_set_id       => l_adr_flex_value_set_id
53223         , p_adr_code                => 'FV_461001_PROJECTS'
53224         , p_adr_type_code           => 'S'
53225         , p_component_type          => l_component_type
53226         , p_component_code          => l_component_code
53227         , p_component_type_code     => l_component_type_code
53228         , p_component_appl_id       => l_component_appl_id
53229         , p_amb_context_code        => l_amb_context_code
53230         , p_entity_code             => 'EXPENDITURES'
53231         , p_event_class_code        => 'LABOR_COST'
53232         , p_side                    => 'NA'
53233         );
53234 
53235   END IF;
53236 
53237    --
53238    --
53239    END IF;
53240    --
53241    -- Bug 4922099
53242    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53243           (NVL(l_enc_upg_option, 'N') = 'O')
53244         ) AND
53245         (l_bflow_method_code = 'PRIOR_ENTRY')
53246       )
53247    THEN
53248       IF
53249       --
53250       1 = 2
53251       --
53252       THEN
53253       xla_accounting_err_pkg.build_message
53254                                     (p_appli_s_name            => 'XLA'
53255                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53256                                     ,p_token_1                 => 'LINE_NUMBER'
53257                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53258                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53259                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53260                                                                              l_component_type
53261                                                                             ,l_component_code
53262                                                                             ,l_component_type_code
53263                                                                             ,l_component_appl_id
53267                                                                            )
53264                                                                             ,l_amb_context_code
53265                                                                             ,l_entity_code
53266                                                                             ,l_event_class_code
53268                                     ,p_token_3                 => 'OWNER'
53269                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53270                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53271                                                                           ,p_lookup_code    => l_component_type_code
53272                                                                          )
53273                                     ,p_token_4                 => 'PRODUCT_NAME'
53274                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53275                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53276                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53277                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53278                                     ,p_ae_header_id            =>  NULL
53279                                        );
53280 
53281         IF (C_LEVEL_ERROR>= g_log_level) THEN
53282                  trace
53283                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53284                       ,p_level    => C_LEVEL_ERROR
53285                       ,p_module   => l_log_module);
53286         END IF;
53287       END IF;
53288    END IF;
53289    --
53290    --
53291    ------------------------------------------------------------------------------------------------
53292    -- 4219869 Business Flow
53293    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53294    -- Prior Entry.  Currently, the following code is always generated.
53295    ------------------------------------------------------------------------------------------------
53296    XLA_AE_LINES_PKG.ValidateCurrentLine;
53297 
53298    ------------------------------------------------------------------------------------
53299    -- 4219869 Business Flow
53300    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53301    ------------------------------------------------------------------------------------
53302    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53303 
53304    ----------------------------------------------------------------------------------
53305    -- 4219869 Business Flow
53306    -- Update journal entry status -- Need to generate this within IF <condition>
53307    ----------------------------------------------------------------------------------
53308    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53309          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53310          ,p_balance_type_code => l_balance_type_code
53311          );
53312 
53313    -------------------------------------------------------------------------------------------
53314    -- 4262811 - Generate the Accrual Reversal lines
53315    -------------------------------------------------------------------------------------------
53316    BEGIN
53317       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53318                               (g_array_event(p_event_id).array_value_num('header_index'));
53319       IF l_acc_rev_flag IS NULL THEN
53320          l_acc_rev_flag := 'N';
53321       END IF;
53322    EXCEPTION
53323       WHEN OTHERS THEN
53324          l_acc_rev_flag := 'N';
53325    END;
53326    --
53327    IF (l_acc_rev_flag = 'Y') THEN
53328 
53329        -- 4645092  ------------------------------------------------------------------------------
53330        -- To allow MPA report to determine if it should generate report process
53331        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53332        ------------------------------------------------------------------------------------------
53333 
53334        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53335        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53336 
53337        --
53338        -- Update the line information that should be overwritten
53339        --
53340        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53341                                          p_header_num   => 1);
53342        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53343 
53344        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53345 
53346        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53347           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53348        END IF;
53349 
53350       --
53351       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53352       --
53353       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53354           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53355       ELSE
53356           ---------------------------------------------------------------------------------------------------
53357           -- 4262811a Switch Sign
53358           ---------------------------------------------------------------------------------------------------
53359           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53360           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53361                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53365           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53362           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53363                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53364           -- 5132302
53366                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53367 
53368       END IF;
53369 
53370       -- 4955764
53371       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53373 
53374 
53375       XLA_AE_LINES_PKG.ValidateCurrentLine;
53376       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53377 
53378       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53379                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53380                ,p_balance_type_code => l_balance_type_code);
53381 
53382    END IF;
53383 
53384    -----------------------------------------------------------------------------------------
53385    -- 4262811 Multiperiod Accounting
53386    -----------------------------------------------------------------------------------------
53387      -- No MPA option is assigned.
53388 
53389 
53390 END IF;
53391 --
53392 
53393 --
53394 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53395    trace
53396       (p_msg      => 'END of AcctLineType_112'
53397       ,p_level    => C_LEVEL_PROCEDURE
53398       ,p_module   => l_log_module);
53399 END IF;
53400 --
53401 EXCEPTION
53402   WHEN xla_exceptions_pkg.application_exception THEN
53403       RAISE;
53404   WHEN OTHERS THEN
53405        xla_exceptions_pkg.raise_message
53406            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_112');
53407 END AcctLineType_112;
53408 --
53409 
53410 ---------------------------------------
53411 --
53412 -- PRIVATE FUNCTION
53413 --         AcctLineType_113
53414 --
53415 ---------------------------------------
53416 PROCEDURE AcctLineType_113 (
53417   p_application_id        IN NUMBER
53418  ,p_event_id              IN NUMBER
53419  ,p_calculate_acctd_flag  IN VARCHAR2
53420  ,p_calculate_g_l_flag    IN VARCHAR2
53421  ,p_actual_flag           IN OUT VARCHAR2
53422  ,p_balance_type_code     OUT VARCHAR2
53423  ,p_gain_or_loss_ref      OUT VARCHAR2
53424  
53425 --Cost CCID
53426  , p_source_4            IN NUMBER
53427 --Allow Account Override Flag
53428  , p_source_5            IN VARCHAR2
53429 --Adjustment Cost CCID
53430  , p_source_6            IN NUMBER
53431 --Cost Clearing CCID
53432  , p_source_7            IN NUMBER
53433 --Reversing Line Flag
53434  , p_source_23            IN VARCHAR2
53435 --Actual Upgrade Credit Accounting Class
53436  , p_source_24            IN VARCHAR2
53437 --Entered Raw Cost
53438  , p_source_25            IN NUMBER
53439 --Entered Currency Code
53440  , p_source_26            IN VARCHAR2
53441 --Accounted Raw Cost
53442  , p_source_27            IN NUMBER
53443 --Exchange Rate Date
53444  , p_source_28            IN DATE
53445 --Exchange Rate
53446  , p_source_29            IN NUMBER
53447 --Exchange Rate Type
53448  , p_source_30            IN VARCHAR2
53449 --Actual Upgrade Debit Accounting Class
53450  , p_source_31            IN VARCHAR2
53451 --Use Actuals Upgrade Attributes Flag
53452  , p_source_32            IN VARCHAR2
53453 --Expenditure Item ID
53454  , p_source_33            IN NUMBER
53455 --Cost Distribution Line Number
53456  , p_source_34            IN NUMBER
53457 --Line Type
53458  , p_source_35            IN VARCHAR2
53459  , p_source_35_meaning    IN VARCHAR2
53460 --Reversed Line Number
53461  , p_source_36            IN NUMBER
53462 )
53463 IS
53464 
53465 l_component_type              VARCHAR2(80);
53466 l_component_code              VARCHAR2(30);
53467 l_component_type_code         VARCHAR2(1);
53468 l_component_appl_id           INTEGER;
53469 l_amb_context_code            VARCHAR2(30);
53470 l_entity_code                 VARCHAR2(30);
53471 l_event_class_code            VARCHAR2(30);
53472 l_ae_header_id                NUMBER;
53473 l_event_type_code             VARCHAR2(30);
53474 l_line_definition_code        VARCHAR2(30);
53475 l_line_definition_owner_code  VARCHAR2(1);
53476 --
53477 -- adr variables
53478 l_segment                     VARCHAR2(30);
53479 l_ccid                        NUMBER;
53480 l_adr_transaction_coa_id      NUMBER;
53481 l_adr_accounting_coa_id       NUMBER;
53482 l_adr_flexfield_segment_code  VARCHAR2(30);
53483 l_adr_flex_value_set_id       NUMBER;
53484 l_adr_value_type_code         VARCHAR2(30);
53485 l_adr_value_combination_id    NUMBER;
53486 l_adr_value_segment_code      VARCHAR2(30);
53487 
53488 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53489 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53490 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53491 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53492 
53493 -- 4262811 Variables ------------------------------------------------------------------------------------------
53494 l_entered_amt_idx             NUMBER;
53495 l_accted_amt_idx              NUMBER;
53496 l_acc_rev_flag                VARCHAR2(1);
53497 l_accrual_line_num            NUMBER;
53498 l_tmp_amt                     NUMBER;
53499 l_acc_rev_natural_side_code   VARCHAR2(1);
53500 
53501 l_num_entries                 NUMBER;
53502 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53503 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53507 l_recog_line_2                NUMBER;
53504 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53505 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53506 l_recog_line_1                NUMBER;
53508 
53509 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53510 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53511 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53512 
53513 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53514 
53515 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53516 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53517 
53518 ---------------------------------------------------------------------------------------------------------------
53519 
53520 
53521 --
53522 -- bulk performance
53523 --
53524 l_balance_type_code           VARCHAR2(1);
53525 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53526 l_log_module                  VARCHAR2(240);
53527 
53528 --
53529 -- Upgrade strategy
53530 --
53531 l_actual_upg_option           VARCHAR2(1);
53532 l_enc_upg_option           VARCHAR2(1);
53533 
53534 --
53535 BEGIN
53536 --
53537 IF g_log_enabled THEN
53538       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
53539 END IF;
53540 --
53541 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53542 
53543       trace
53544          (p_msg      => 'BEGIN of AcctLineType_113'
53545          ,p_level    => C_LEVEL_PROCEDURE
53546          ,p_module   => l_log_module);
53547 
53548 END IF;
53549 --
53550 l_component_type             := 'AMB_JLT';
53551 l_component_code             := 'PA_RAW_COST_FED';
53552 l_component_type_code        := 'S';
53553 l_component_appl_id          :=  275;
53554 l_amb_context_code           := 'DEFAULT';
53555 l_entity_code                := 'EXPENDITURES';
53556 l_event_class_code           := 'MISC_COST';
53557 l_event_type_code            := 'MISC_COST_ALL';
53558 l_line_definition_owner_code := 'S';
53559 l_line_definition_code       := 'FV_PROJECTS_JLD';
53560 --
53561 l_balance_type_code          := 'A';
53562 l_segment                     := NULL;
53563 l_ccid                        := NULL;
53564 l_adr_transaction_coa_id      := NULL;
53565 l_adr_accounting_coa_id       := NULL;
53566 l_adr_flexfield_segment_code  := NULL;
53567 l_adr_flex_value_set_id       := NULL;
53568 l_adr_value_type_code         := NULL;
53569 l_adr_value_combination_id    := NULL;
53570 l_adr_value_segment_code      := NULL;
53571 
53572 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53573 l_bflow_class_code           := '';    -- 4219869 Business Flow
53574 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53575 l_budgetary_control_flag     := 'N';
53576 
53577 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53578 l_bflow_applied_to_amt       := NULL; -- 5132302
53579 l_entered_amt_idx            := NULL;          -- 4262811
53580 l_accted_amt_idx             := NULL;          -- 4262811
53581 l_acc_rev_flag               := NULL;          -- 4262811
53582 l_accrual_line_num           := NULL;          -- 4262811
53583 l_tmp_amt                    := NULL;          -- 4262811
53584 --
53585  
53586 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53587     l_balance_type_code <> 'B' THEN
53588 
53589    --
53590    XLA_AE_LINES_PKG.SetNewLine;
53591 
53592    p_balance_type_code          := l_balance_type_code;
53593    -- set the flag so later we will know whether the gain loss line needs to be created
53594    
53595    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53596      p_actual_flag :='A';
53597    END IF;
53598 
53599    --
53600    -- bulk performance
53601    --
53602    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53603                                       p_header_num   => 0); -- 4262811
53604    --
53605    -- set accounting line options
53606    --
53607    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53608            p_natural_side_code          => 'D'
53609          , p_gain_or_loss_flag          => 'N'
53610          , p_gl_transfer_mode_code      => 'S'
53611          , p_acct_entry_type_code       => 'A'
53612          , p_switch_side_flag           => 'Y'
53613          , p_merge_duplicate_code       => 'N'
53614          );
53615    --
53616    l_acc_rev_natural_side_code := 'C';  -- 4262811
53617    -- 
53618    --
53619    -- set accounting line type info
53620    --
53621    xla_ae_lines_pkg.SetAcctLineType
53622       (p_component_type             => l_component_type
53623       ,p_event_type_code            => l_event_type_code
53624       ,p_line_definition_owner_code => l_line_definition_owner_code
53625       ,p_line_definition_code       => l_line_definition_code
53626       ,p_accounting_line_code       => l_component_code
53627       ,p_accounting_line_type_code  => l_component_type_code
53628       ,p_accounting_line_appl_id    => l_component_appl_id
53629       ,p_amb_context_code           => l_amb_context_code
53630       ,p_entity_code                => l_entity_code
53631       ,p_event_class_code           => l_event_class_code);
53632    --
53633    -- set accounting class
53634    --
53635    xla_ae_lines_pkg.SetAcctClass(
53636            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
53637          , p_ae_header_id           => l_ae_header_id
53638          );
53639 
53640    --
53641    -- set rounding class
53642    --
53643    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53644                       'FEDERAL_PROJECT_COST';
53648    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53645 
53646    --
53647    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53649    --
53650    -- bulk performance
53651    --
53652    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53653 
53654    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53655       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53656 
53657    -- 4955764
53658    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53659       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53660 
53661    -- 4458381 Public Sector Enh
53662    
53663    --
53664    -- set accounting attributes for the line type
53665    --
53666    l_entered_amt_idx := 22;
53667    l_accted_amt_idx  := 27;
53668    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53669    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
53670    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
53671    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
53672    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
53673    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
53674    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
53675    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
53676    l_rec_acct_attrs.array_num_value(4)  := p_source_25;
53677    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
53678    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
53679    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
53680    l_rec_acct_attrs.array_num_value(6)  := p_source_27;
53681    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
53682    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
53683    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
53684    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
53685    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
53686    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
53687    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
53688    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
53689    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
53690    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
53691    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
53692    l_rec_acct_attrs.array_num_value(12)  := p_source_25;
53693    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
53694    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
53695    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
53696    l_rec_acct_attrs.array_num_value(14)  := p_source_27;
53697    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
53698    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
53699    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
53700    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
53701    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
53702    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
53703    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
53704    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
53705    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
53706    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
53707    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
53708    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
53709    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
53710    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
53711    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
53712    l_rec_acct_attrs.array_num_value(22)  := p_source_25;
53713    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
53714    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
53715    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
53716    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
53717    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
53718    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
53719    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
53720    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
53721    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
53722    l_rec_acct_attrs.array_num_value(27)  := p_source_27;
53723    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
53724    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
53725    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
53726    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
53727    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
53728    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
53729 
53730    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53731    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53732 
53733    ---------------------------------------------------------------------------------------------------------------
53734    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53735    ---------------------------------------------------------------------------------------------------------------
53736    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53737 
53738    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53739    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53740 
53744    AND l_bflow_method_code = 'PRIOR_ENTRY'
53741    IF xla_accounting_cache_pkg.GetValueChar
53742          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53743          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53745 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53746    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53747          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53748        )
53749    THEN
53750          xla_ae_lines_pkg.BflowUpgEntry
53751            (p_business_method_code    => l_bflow_method_code
53752            ,p_business_class_code     => l_bflow_class_code
53753            ,p_balance_type            => l_balance_type_code);
53754    ELSE
53755       NULL;
53756 -- No business flow processing for business flow method of NONE.
53757    END IF;
53758 
53759    --
53760    -- call analytical criteria
53761    --
53762    
53763    --
53764    -- call description
53765    --
53766    -- No description or it is inherited.
53767    --
53768    -- call ADRs
53769    -- Bug 4922099
53770    --
53771    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53772         (NVL(l_actual_upg_option, 'N') = 'O') OR
53773         (NVL(l_enc_upg_option, 'N') = 'O')
53774       )
53775    THEN
53776    NULL;
53777    --
53778    --
53779    
53780   l_ccid := AcctDerRule_12(
53781            p_application_id           => p_application_id
53782          , p_ae_header_id             => l_ae_header_id 
53783 , p_source_4 => p_source_4
53784 , p_source_5 => p_source_5
53785 , p_source_6 => p_source_6
53786          , x_transaction_coa_id       => l_adr_transaction_coa_id
53787          , x_accounting_coa_id        => l_adr_accounting_coa_id
53788          , x_value_type_code          => l_adr_value_type_code
53789          , p_side                     => 'NA'
53790    );
53791 
53792    xla_ae_lines_pkg.set_ccid(
53793     p_code_combination_id          => l_ccid
53794   , p_value_type_code              => l_adr_value_type_code
53795   , p_transaction_coa_id           => l_adr_transaction_coa_id
53796   , p_accounting_coa_id            => l_adr_accounting_coa_id
53797   , p_adr_code                     => 'PA_COST_ACCT_RULE'
53798   , p_adr_type_code                => 'S'
53799   , p_component_type               => l_component_type
53800   , p_component_code               => l_component_code
53801   , p_component_type_code          => l_component_type_code
53802   , p_component_appl_id            => l_component_appl_id
53803   , p_amb_context_code             => l_amb_context_code
53804   , p_side                         => 'NA'
53805   );
53806 
53807 
53808    l_segment := AcctDerRule_4(
53809            p_application_id           => p_application_id
53810          , p_ae_header_id             => l_ae_header_id 
53811          , x_transaction_coa_id       => l_adr_transaction_coa_id
53812          , x_accounting_coa_id        => l_adr_accounting_coa_id
53813          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
53814          , x_flex_value_set_id        => l_adr_flex_value_set_id
53815          , x_value_type_code          => l_adr_value_type_code
53816          , x_value_combination_id     => l_adr_value_combination_id
53817          , x_value_segment_code       => l_adr_value_segment_code
53818          , p_side                     => 'NA'
53819          , p_override_seg_flag        => 'Y'
53820    );
53821 
53822    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
53823 
53824       xla_ae_lines_pkg.set_segment(
53825           p_to_segment_code         => 'GL_ACCOUNT'
53826         , p_segment_value           => l_segment
53827         , p_from_segment_code       => l_adr_value_segment_code
53828         , p_from_combination_id     => l_adr_value_combination_id
53829         , p_value_type_code         => l_adr_value_type_code
53830         , p_transaction_coa_id      => l_adr_transaction_coa_id
53831         , p_accounting_coa_id       => l_adr_accounting_coa_id
53832         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
53833         , p_flex_value_set_id       => l_adr_flex_value_set_id
53834         , p_adr_code                => 'FV_461001_PROJECTS'
53835         , p_adr_type_code           => 'S'
53836         , p_component_type          => l_component_type
53837         , p_component_code          => l_component_code
53838         , p_component_type_code     => l_component_type_code
53839         , p_component_appl_id       => l_component_appl_id
53840         , p_amb_context_code        => l_amb_context_code
53841         , p_entity_code             => 'EXPENDITURES'
53842         , p_event_class_code        => 'MISC_COST'
53843         , p_side                    => 'NA'
53844         );
53845 
53846   END IF;
53847 
53848    --
53849    --
53850    END IF;
53851    --
53852    -- Bug 4922099
53853    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53854           (NVL(l_enc_upg_option, 'N') = 'O')
53855         ) AND
53856         (l_bflow_method_code = 'PRIOR_ENTRY')
53857       )
53858    THEN
53859       IF
53860       --
53861       1 = 2
53862       --
53863       THEN
53864       xla_accounting_err_pkg.build_message
53865                                     (p_appli_s_name            => 'XLA'
53866                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53867                                     ,p_token_1                 => 'LINE_NUMBER'
53868                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53869                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53870                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53871                                                                              l_component_type
53875                                                                             ,l_amb_context_code
53872                                                                             ,l_component_code
53873                                                                             ,l_component_type_code
53874                                                                             ,l_component_appl_id
53876                                                                             ,l_entity_code
53877                                                                             ,l_event_class_code
53878                                                                            )
53879                                     ,p_token_3                 => 'OWNER'
53880                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53881                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53882                                                                           ,p_lookup_code    => l_component_type_code
53883                                                                          )
53884                                     ,p_token_4                 => 'PRODUCT_NAME'
53885                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53886                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53887                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53888                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53889                                     ,p_ae_header_id            =>  NULL
53890                                        );
53891 
53892         IF (C_LEVEL_ERROR>= g_log_level) THEN
53893                  trace
53894                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53895                       ,p_level    => C_LEVEL_ERROR
53896                       ,p_module   => l_log_module);
53897         END IF;
53898       END IF;
53899    END IF;
53900    --
53901    --
53902    ------------------------------------------------------------------------------------------------
53903    -- 4219869 Business Flow
53904    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53905    -- Prior Entry.  Currently, the following code is always generated.
53906    ------------------------------------------------------------------------------------------------
53907    XLA_AE_LINES_PKG.ValidateCurrentLine;
53908 
53909    ------------------------------------------------------------------------------------
53910    -- 4219869 Business Flow
53911    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53912    ------------------------------------------------------------------------------------
53913    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53914 
53915    ----------------------------------------------------------------------------------
53916    -- 4219869 Business Flow
53917    -- Update journal entry status -- Need to generate this within IF <condition>
53918    ----------------------------------------------------------------------------------
53919    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53920          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53921          ,p_balance_type_code => l_balance_type_code
53922          );
53923 
53924    -------------------------------------------------------------------------------------------
53925    -- 4262811 - Generate the Accrual Reversal lines
53926    -------------------------------------------------------------------------------------------
53927    BEGIN
53928       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53929                               (g_array_event(p_event_id).array_value_num('header_index'));
53930       IF l_acc_rev_flag IS NULL THEN
53931          l_acc_rev_flag := 'N';
53932       END IF;
53933    EXCEPTION
53934       WHEN OTHERS THEN
53935          l_acc_rev_flag := 'N';
53936    END;
53937    --
53938    IF (l_acc_rev_flag = 'Y') THEN
53939 
53940        -- 4645092  ------------------------------------------------------------------------------
53941        -- To allow MPA report to determine if it should generate report process
53942        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53943        ------------------------------------------------------------------------------------------
53944 
53945        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53946        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53947 
53948        --
53949        -- Update the line information that should be overwritten
53950        --
53951        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53952                                          p_header_num   => 1);
53953        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53954 
53955        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53956 
53957        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53958           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53959        END IF;
53960 
53961       --
53962       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53963       --
53964       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53965           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53966       ELSE
53967           ---------------------------------------------------------------------------------------------------
53968           -- 4262811a Switch Sign
53969           ---------------------------------------------------------------------------------------------------
53973           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53970           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53971           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53972                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53974                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53975           -- 5132302
53976           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53977                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53978 
53979       END IF;
53980 
53981       -- 4955764
53982       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53983       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53984 
53985 
53986       XLA_AE_LINES_PKG.ValidateCurrentLine;
53987       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53988 
53989       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53990                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53991                ,p_balance_type_code => l_balance_type_code);
53992 
53993    END IF;
53994 
53995    -----------------------------------------------------------------------------------------
53996    -- 4262811 Multiperiod Accounting
53997    -----------------------------------------------------------------------------------------
53998      -- No MPA option is assigned.
53999 
54000 
54001 END IF;
54002 --
54003 
54004 --
54005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54006    trace
54007       (p_msg      => 'END of AcctLineType_113'
54008       ,p_level    => C_LEVEL_PROCEDURE
54009       ,p_module   => l_log_module);
54010 END IF;
54011 --
54012 EXCEPTION
54013   WHEN xla_exceptions_pkg.application_exception THEN
54014       RAISE;
54015   WHEN OTHERS THEN
54016        xla_exceptions_pkg.raise_message
54017            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_113');
54018 END AcctLineType_113;
54019 --
54020 
54021 ---------------------------------------
54022 --
54023 -- PRIVATE FUNCTION
54024 --         AcctLineType_114
54025 --
54026 ---------------------------------------
54027 PROCEDURE AcctLineType_114 (
54028   p_application_id        IN NUMBER
54029  ,p_event_id              IN NUMBER
54030  ,p_calculate_acctd_flag  IN VARCHAR2
54031  ,p_calculate_g_l_flag    IN VARCHAR2
54032  ,p_actual_flag           IN OUT VARCHAR2
54033  ,p_balance_type_code     OUT VARCHAR2
54034  ,p_gain_or_loss_ref      OUT VARCHAR2
54035  
54036 --Realized Gains CCID
54037  , p_source_17            IN NUMBER
54038 --Entered Currency Code
54039  , p_source_26            IN VARCHAR2
54040 --Exchange Rate Date
54041  , p_source_28            IN DATE
54042 --Exchange Rate
54043  , p_source_29            IN NUMBER
54044 --Exchange Rate Type
54045  , p_source_30            IN VARCHAR2
54046 --Entered Amount
54047  , p_source_42            IN NUMBER
54048 --Accounted Amount
54049  , p_source_43            IN NUMBER
54050 --Revenue Distribution Type
54051  , p_source_46            IN VARCHAR2
54052 --Crediting Revenue Flag
54053  , p_source_48            IN VARCHAR2
54054 --Revenue First Distribution ID
54055  , p_source_49            IN NUMBER
54056 --Revenue Second Distribution ID
54057  , p_source_50            IN NUMBER
54058 --Event ID
54059  , p_source_51            IN NUMBER
54060 )
54061 IS
54062 
54063 l_component_type              VARCHAR2(80);
54064 l_component_code              VARCHAR2(30);
54065 l_component_type_code         VARCHAR2(1);
54066 l_component_appl_id           INTEGER;
54067 l_amb_context_code            VARCHAR2(30);
54068 l_entity_code                 VARCHAR2(30);
54069 l_event_class_code            VARCHAR2(30);
54070 l_ae_header_id                NUMBER;
54071 l_event_type_code             VARCHAR2(30);
54072 l_line_definition_code        VARCHAR2(30);
54073 l_line_definition_owner_code  VARCHAR2(1);
54074 --
54075 -- adr variables
54076 l_segment                     VARCHAR2(30);
54077 l_ccid                        NUMBER;
54078 l_adr_transaction_coa_id      NUMBER;
54079 l_adr_accounting_coa_id       NUMBER;
54080 l_adr_flexfield_segment_code  VARCHAR2(30);
54081 l_adr_flex_value_set_id       NUMBER;
54082 l_adr_value_type_code         VARCHAR2(30);
54083 l_adr_value_combination_id    NUMBER;
54084 l_adr_value_segment_code      VARCHAR2(30);
54085 
54086 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54087 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54088 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54089 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54090 
54091 -- 4262811 Variables ------------------------------------------------------------------------------------------
54092 l_entered_amt_idx             NUMBER;
54093 l_accted_amt_idx              NUMBER;
54094 l_acc_rev_flag                VARCHAR2(1);
54095 l_accrual_line_num            NUMBER;
54096 l_tmp_amt                     NUMBER;
54097 l_acc_rev_natural_side_code   VARCHAR2(1);
54098 
54099 l_num_entries                 NUMBER;
54100 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54101 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54102 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54103 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54104 l_recog_line_1                NUMBER;
54105 l_recog_line_2                NUMBER;
54106 
54110 
54107 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54108 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54109 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54111 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54112 
54113 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54114 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54115 
54116 ---------------------------------------------------------------------------------------------------------------
54117 
54118 
54119 --
54120 -- bulk performance
54121 --
54122 l_balance_type_code           VARCHAR2(1);
54123 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54124 l_log_module                  VARCHAR2(240);
54125 
54126 --
54127 -- Upgrade strategy
54128 --
54129 l_actual_upg_option           VARCHAR2(1);
54130 l_enc_upg_option           VARCHAR2(1);
54131 
54132 --
54133 BEGIN
54134 --
54135 IF g_log_enabled THEN
54136       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
54137 END IF;
54138 --
54139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54140 
54141       trace
54142          (p_msg      => 'BEGIN of AcctLineType_114'
54143          ,p_level    => C_LEVEL_PROCEDURE
54144          ,p_module   => l_log_module);
54145 
54146 END IF;
54147 --
54148 l_component_type             := 'AMB_JLT';
54149 l_component_code             := 'PA_REALIZED_GAINS';
54150 l_component_type_code        := 'S';
54151 l_component_appl_id          :=  275;
54152 l_amb_context_code           := 'DEFAULT';
54153 l_entity_code                := 'REVENUE';
54154 l_event_class_code           := 'REVENUE';
54155 l_event_type_code            := 'REVENUE_ALL';
54156 l_line_definition_owner_code := 'S';
54157 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
54158 --
54159 l_balance_type_code          := 'A';
54160 l_segment                     := NULL;
54161 l_ccid                        := NULL;
54162 l_adr_transaction_coa_id      := NULL;
54163 l_adr_accounting_coa_id       := NULL;
54164 l_adr_flexfield_segment_code  := NULL;
54165 l_adr_flex_value_set_id       := NULL;
54166 l_adr_value_type_code         := NULL;
54167 l_adr_value_combination_id    := NULL;
54168 l_adr_value_segment_code      := NULL;
54169 
54170 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54171 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
54172 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54173 l_budgetary_control_flag     := 'N';
54174 
54175 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54176 l_bflow_applied_to_amt       := NULL; -- 5132302
54177 l_entered_amt_idx            := NULL;          -- 4262811
54178 l_accted_amt_idx             := NULL;          -- 4262811
54179 l_acc_rev_flag               := NULL;          -- 4262811
54180 l_accrual_line_num           := NULL;          -- 4262811
54181 l_tmp_amt                    := NULL;          -- 4262811
54182 --
54183  
54184 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54185     l_balance_type_code <> 'B' THEN
54186 IF NVL(p_source_46,'
54187 ') =  'Revenue - Realized Gains' AND 
54188 NVL(p_source_48,'
54189 ') =  'N'
54190  THEN 
54191 
54192    --
54193    XLA_AE_LINES_PKG.SetNewLine;
54194 
54195    p_balance_type_code          := l_balance_type_code;
54196    -- set the flag so later we will know whether the gain loss line needs to be created
54197    
54198    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54199      p_actual_flag :='A';
54200    END IF;
54201 
54202    --
54203    -- bulk performance
54204    --
54205    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54206                                       p_header_num   => 0); -- 4262811
54207    --
54208    -- set accounting line options
54209    --
54210    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54211            p_natural_side_code          => 'D'
54212          , p_gain_or_loss_flag          => 'N'
54213          , p_gl_transfer_mode_code      => 'S'
54214          , p_acct_entry_type_code       => 'A'
54215          , p_switch_side_flag           => 'Y'
54216          , p_merge_duplicate_code       => 'N'
54217          );
54218    --
54219    l_acc_rev_natural_side_code := 'C';  -- 4262811
54220    -- 
54221    --
54222    -- set accounting line type info
54223    --
54224    xla_ae_lines_pkg.SetAcctLineType
54225       (p_component_type             => l_component_type
54226       ,p_event_type_code            => l_event_type_code
54227       ,p_line_definition_owner_code => l_line_definition_owner_code
54228       ,p_line_definition_code       => l_line_definition_code
54229       ,p_accounting_line_code       => l_component_code
54230       ,p_accounting_line_type_code  => l_component_type_code
54231       ,p_accounting_line_appl_id    => l_component_appl_id
54232       ,p_amb_context_code           => l_amb_context_code
54233       ,p_entity_code                => l_entity_code
54234       ,p_event_class_code           => l_event_class_code);
54235    --
54236    -- set accounting class
54237    --
54238    xla_ae_lines_pkg.SetAcctClass(
54239            p_accounting_class_code  => 'REALIZED_GAINS'
54240          , p_ae_header_id           => l_ae_header_id
54241          );
54242 
54243    --
54244    -- set rounding class
54245    --
54246    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54247                       'REALIZED_GAINS';
54248 
54249    --
54253    -- bulk performance
54250    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54251    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54252    --
54254    --
54255    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54256 
54257    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54258       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54259 
54260    -- 4955764
54261    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54262       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54263 
54264    -- 4458381 Public Sector Enh
54265    
54266    --
54267    -- set accounting attributes for the line type
54268    --
54269    l_entered_amt_idx := 4;
54270    l_accted_amt_idx  := 10;
54271    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54272    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
54273    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
54274    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
54275    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
54276    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
54277    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
54278    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
54279    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
54280    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
54281    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
54282    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
54283    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
54284    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
54285    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
54286    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
54287    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
54288    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
54289    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
54290    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
54291    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
54292 
54293    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54294    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54295 
54296    ---------------------------------------------------------------------------------------------------------------
54297    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54298    ---------------------------------------------------------------------------------------------------------------
54299    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54300 
54301    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54302    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54303 
54304    IF xla_accounting_cache_pkg.GetValueChar
54305          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54306          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54307    AND l_bflow_method_code = 'PRIOR_ENTRY'
54308 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54309    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54310          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54311        )
54312    THEN
54313          xla_ae_lines_pkg.BflowUpgEntry
54314            (p_business_method_code    => l_bflow_method_code
54315            ,p_business_class_code     => l_bflow_class_code
54316            ,p_balance_type            => l_balance_type_code);
54317    ELSE
54318       NULL;
54319 -- No business flow processing for business flow method of NONE.
54320    END IF;
54321 
54322    --
54323    -- call analytical criteria
54324    --
54325    
54326    --
54327    -- call description
54328    --
54329    -- No description or it is inherited.
54330    --
54331    -- call ADRs
54332    -- Bug 4922099
54333    --
54334    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54335         (NVL(l_actual_upg_option, 'N') = 'O') OR
54336         (NVL(l_enc_upg_option, 'N') = 'O')
54337       )
54338    THEN
54339    NULL;
54340    --
54341    --
54342    
54343   l_ccid := AcctDerRule_24(
54344            p_application_id           => p_application_id
54345          , p_ae_header_id             => l_ae_header_id 
54346 , p_source_17 => p_source_17
54347          , x_transaction_coa_id       => l_adr_transaction_coa_id
54348          , x_accounting_coa_id        => l_adr_accounting_coa_id
54349          , x_value_type_code          => l_adr_value_type_code
54350          , p_side                     => 'NA'
54351    );
54352 
54353    xla_ae_lines_pkg.set_ccid(
54354     p_code_combination_id          => l_ccid
54355   , p_value_type_code              => l_adr_value_type_code
54356   , p_transaction_coa_id           => l_adr_transaction_coa_id
54357   , p_accounting_coa_id            => l_adr_accounting_coa_id
54358   , p_adr_code                     => 'REALIZED_GAINS_RULE'
54359   , p_adr_type_code                => 'S'
54360   , p_component_type               => l_component_type
54361   , p_component_code               => l_component_code
54362   , p_component_type_code          => l_component_type_code
54363   , p_component_appl_id            => l_component_appl_id
54364   , p_amb_context_code             => l_amb_context_code
54365   , p_side                         => 'NA'
54366   );
54367 
54368 
54369    --
54370    --
54371    END IF;
54375           (NVL(l_enc_upg_option, 'N') = 'O')
54372    --
54373    -- Bug 4922099
54374    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54376         ) AND
54377         (l_bflow_method_code = 'PRIOR_ENTRY')
54378       )
54379    THEN
54380       IF
54381       --
54382       1 = 2
54383       --
54384       THEN
54385       xla_accounting_err_pkg.build_message
54386                                     (p_appli_s_name            => 'XLA'
54387                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54388                                     ,p_token_1                 => 'LINE_NUMBER'
54389                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54390                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54391                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54392                                                                              l_component_type
54393                                                                             ,l_component_code
54394                                                                             ,l_component_type_code
54395                                                                             ,l_component_appl_id
54396                                                                             ,l_amb_context_code
54397                                                                             ,l_entity_code
54398                                                                             ,l_event_class_code
54399                                                                            )
54400                                     ,p_token_3                 => 'OWNER'
54401                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54402                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54403                                                                           ,p_lookup_code    => l_component_type_code
54404                                                                          )
54405                                     ,p_token_4                 => 'PRODUCT_NAME'
54406                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54407                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54408                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54409                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54410                                     ,p_ae_header_id            =>  NULL
54411                                        );
54412 
54413         IF (C_LEVEL_ERROR>= g_log_level) THEN
54414                  trace
54415                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54416                       ,p_level    => C_LEVEL_ERROR
54417                       ,p_module   => l_log_module);
54418         END IF;
54419       END IF;
54420    END IF;
54421    --
54422    --
54423    ------------------------------------------------------------------------------------------------
54424    -- 4219869 Business Flow
54425    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54426    -- Prior Entry.  Currently, the following code is always generated.
54427    ------------------------------------------------------------------------------------------------
54428    XLA_AE_LINES_PKG.ValidateCurrentLine;
54429 
54430    ------------------------------------------------------------------------------------
54431    -- 4219869 Business Flow
54432    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54433    ------------------------------------------------------------------------------------
54434    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54435 
54436    ----------------------------------------------------------------------------------
54437    -- 4219869 Business Flow
54438    -- Update journal entry status -- Need to generate this within IF <condition>
54439    ----------------------------------------------------------------------------------
54440    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54441          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54442          ,p_balance_type_code => l_balance_type_code
54443          );
54444 
54445    -------------------------------------------------------------------------------------------
54446    -- 4262811 - Generate the Accrual Reversal lines
54447    -------------------------------------------------------------------------------------------
54448    BEGIN
54449       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54450                               (g_array_event(p_event_id).array_value_num('header_index'));
54451       IF l_acc_rev_flag IS NULL THEN
54452          l_acc_rev_flag := 'N';
54453       END IF;
54454    EXCEPTION
54455       WHEN OTHERS THEN
54456          l_acc_rev_flag := 'N';
54457    END;
54458    --
54459    IF (l_acc_rev_flag = 'Y') THEN
54460 
54461        -- 4645092  ------------------------------------------------------------------------------
54462        -- To allow MPA report to determine if it should generate report process
54463        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54464        ------------------------------------------------------------------------------------------
54465 
54466        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54467        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54468 
54469        --
54470        -- Update the line information that should be overwritten
54471        --
54472        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54473                                          p_header_num   => 1);
54477 
54474        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54475 
54476        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54478        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54479           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54480        END IF;
54481 
54482       --
54483       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54484       --
54485       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54486           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54487       ELSE
54488           ---------------------------------------------------------------------------------------------------
54489           -- 4262811a Switch Sign
54490           ---------------------------------------------------------------------------------------------------
54491           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54492           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54493                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54494           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54495                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54496           -- 5132302
54497           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54498                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54499 
54500       END IF;
54501 
54502       -- 4955764
54503       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54504       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54505 
54506 
54507       XLA_AE_LINES_PKG.ValidateCurrentLine;
54508       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54509 
54510       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54511                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54512                ,p_balance_type_code => l_balance_type_code);
54513 
54514    END IF;
54515 
54516    -----------------------------------------------------------------------------------------
54517    -- 4262811 Multiperiod Accounting
54518    -----------------------------------------------------------------------------------------
54519      -- No MPA option is assigned.
54520 
54521 
54522 END IF;
54523 END IF;
54524 --
54525 
54526 --
54527 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54528    trace
54529       (p_msg      => 'END of AcctLineType_114'
54530       ,p_level    => C_LEVEL_PROCEDURE
54531       ,p_module   => l_log_module);
54532 END IF;
54533 --
54534 EXCEPTION
54535   WHEN xla_exceptions_pkg.application_exception THEN
54536       RAISE;
54537   WHEN OTHERS THEN
54538        xla_exceptions_pkg.raise_message
54539            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_114');
54540 END AcctLineType_114;
54541 --
54542 
54543 ---------------------------------------
54544 --
54545 -- PRIVATE FUNCTION
54546 --         AcctLineType_115
54547 --
54548 ---------------------------------------
54549 PROCEDURE AcctLineType_115 (
54550   p_application_id        IN NUMBER
54551  ,p_event_id              IN NUMBER
54552  ,p_calculate_acctd_flag  IN VARCHAR2
54553  ,p_calculate_g_l_flag    IN VARCHAR2
54554  ,p_actual_flag           IN OUT VARCHAR2
54555  ,p_balance_type_code     OUT VARCHAR2
54556  ,p_gain_or_loss_ref      OUT VARCHAR2
54557  
54558 --Actual Upgrade Credit Accounting Class
54559  , p_source_24            IN VARCHAR2
54560 --Entered Currency Code
54561  , p_source_26            IN VARCHAR2
54562 --Exchange Rate Date
54563  , p_source_28            IN DATE
54564 --Exchange Rate
54565  , p_source_29            IN NUMBER
54566 --Exchange Rate Type
54567  , p_source_30            IN VARCHAR2
54568 --Actual Upgrade Debit Accounting Class
54569  , p_source_31            IN VARCHAR2
54570 --Use Actuals Upgrade Attributes Flag
54571  , p_source_32            IN VARCHAR2
54572 --Entered Amount
54573  , p_source_42            IN NUMBER
54574 --Accounted Amount
54575  , p_source_43            IN NUMBER
54576 --Revenue Distribution Type
54577  , p_source_46            IN VARCHAR2
54578 --Crediting Revenue Flag
54579  , p_source_48            IN VARCHAR2
54580 --Revenue First Distribution ID
54581  , p_source_49            IN NUMBER
54582 --Revenue Second Distribution ID
54583  , p_source_50            IN NUMBER
54584 --Event ID
54585  , p_source_51            IN NUMBER
54586 --Actual Upgrade Credit CCID
54587  , p_source_64            IN NUMBER
54588 --Actual Upgrade Debit CCID
54589  , p_source_65            IN NUMBER
54590 --Application ID
54591  , p_source_66            IN NUMBER
54592 --Revenue Entity Code
54593  , p_source_67            IN VARCHAR2
54594 --Crediting Revenue First Distribution ID
54595  , p_source_68            IN NUMBER
54596 --Project ID
54597  , p_source_69            IN NUMBER
54598 --Crediting Revenue Second Distribution ID
54599  , p_source_70            IN NUMBER
54600 --Draft Revenue Number Credited
54601  , p_source_71            IN NUMBER
54602 )
54603 IS
54604 
54605 l_component_type              VARCHAR2(80);
54606 l_component_code              VARCHAR2(30);
54607 l_component_type_code         VARCHAR2(1);
54608 l_component_appl_id           INTEGER;
54609 l_amb_context_code            VARCHAR2(30);
54613 l_event_type_code             VARCHAR2(30);
54610 l_entity_code                 VARCHAR2(30);
54611 l_event_class_code            VARCHAR2(30);
54612 l_ae_header_id                NUMBER;
54614 l_line_definition_code        VARCHAR2(30);
54615 l_line_definition_owner_code  VARCHAR2(1);
54616 --
54617 -- adr variables
54618 l_segment                     VARCHAR2(30);
54619 l_ccid                        NUMBER;
54620 l_adr_transaction_coa_id      NUMBER;
54621 l_adr_accounting_coa_id       NUMBER;
54622 l_adr_flexfield_segment_code  VARCHAR2(30);
54623 l_adr_flex_value_set_id       NUMBER;
54624 l_adr_value_type_code         VARCHAR2(30);
54625 l_adr_value_combination_id    NUMBER;
54626 l_adr_value_segment_code      VARCHAR2(30);
54627 
54628 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54629 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54630 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54631 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54632 
54633 -- 4262811 Variables ------------------------------------------------------------------------------------------
54634 l_entered_amt_idx             NUMBER;
54635 l_accted_amt_idx              NUMBER;
54636 l_acc_rev_flag                VARCHAR2(1);
54637 l_accrual_line_num            NUMBER;
54638 l_tmp_amt                     NUMBER;
54639 l_acc_rev_natural_side_code   VARCHAR2(1);
54640 
54641 l_num_entries                 NUMBER;
54642 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54643 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54644 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54645 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54646 l_recog_line_1                NUMBER;
54647 l_recog_line_2                NUMBER;
54648 
54649 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54650 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54651 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54652 
54653 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54654 
54655 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54656 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54657 
54658 ---------------------------------------------------------------------------------------------------------------
54659 
54660 
54661 --
54662 -- bulk performance
54663 --
54664 l_balance_type_code           VARCHAR2(1);
54665 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54666 l_log_module                  VARCHAR2(240);
54667 
54668 --
54669 -- Upgrade strategy
54670 --
54671 l_actual_upg_option           VARCHAR2(1);
54672 l_enc_upg_option           VARCHAR2(1);
54673 
54674 --
54675 BEGIN
54676 --
54677 IF g_log_enabled THEN
54678       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
54679 END IF;
54680 --
54681 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54682 
54683       trace
54684          (p_msg      => 'BEGIN of AcctLineType_115'
54685          ,p_level    => C_LEVEL_PROCEDURE
54686          ,p_module   => l_log_module);
54687 
54688 END IF;
54689 --
54690 l_component_type             := 'AMB_JLT';
54691 l_component_code             := 'PA_REALIZED_GAINS_ADJ';
54692 l_component_type_code        := 'S';
54693 l_component_appl_id          :=  275;
54694 l_amb_context_code           := 'DEFAULT';
54695 l_entity_code                := 'REVENUE';
54696 l_event_class_code           := 'REVENUE_ADJ';
54697 l_event_type_code            := 'REVENUE_ADJ_ALL';
54698 l_line_definition_owner_code := 'S';
54699 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
54700 --
54701 l_balance_type_code          := 'A';
54702 l_segment                     := NULL;
54703 l_ccid                        := NULL;
54704 l_adr_transaction_coa_id      := NULL;
54705 l_adr_accounting_coa_id       := NULL;
54706 l_adr_flexfield_segment_code  := NULL;
54707 l_adr_flex_value_set_id       := NULL;
54708 l_adr_value_type_code         := NULL;
54709 l_adr_value_combination_id    := NULL;
54710 l_adr_value_segment_code      := NULL;
54711 
54712 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
54713 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
54714 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
54715 l_budgetary_control_flag     := 'N';
54716 
54717 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54718 l_bflow_applied_to_amt       := NULL; -- 5132302
54719 l_entered_amt_idx            := NULL;          -- 4262811
54720 l_accted_amt_idx             := NULL;          -- 4262811
54721 l_acc_rev_flag               := NULL;          -- 4262811
54722 l_accrual_line_num           := NULL;          -- 4262811
54723 l_tmp_amt                    := NULL;          -- 4262811
54724 --
54725  
54726 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54727     l_balance_type_code <> 'B' THEN
54728 IF NVL(p_source_46,'
54729 ') =  'Revenue - Realized Gains' AND 
54730 NVL(p_source_48,'
54731 ') =  'Y'
54732  THEN 
54733 
54734    --
54735    XLA_AE_LINES_PKG.SetNewLine;
54736 
54737    p_balance_type_code          := l_balance_type_code;
54738    -- set the flag so later we will know whether the gain loss line needs to be created
54739    
54740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54741      p_actual_flag :='A';
54742    END IF;
54743 
54744    --
54745    -- bulk performance
54746    --
54747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54751    --
54748                                       p_header_num   => 0); -- 4262811
54749    --
54750    -- set accounting line options
54752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54753            p_natural_side_code          => 'D'
54754          , p_gain_or_loss_flag          => 'N'
54755          , p_gl_transfer_mode_code      => 'S'
54756          , p_acct_entry_type_code       => 'A'
54757          , p_switch_side_flag           => 'Y'
54758          , p_merge_duplicate_code       => 'N'
54759          );
54760    --
54761    l_acc_rev_natural_side_code := 'C';  -- 4262811
54762    -- 
54763    --
54764    -- set accounting line type info
54765    --
54766    xla_ae_lines_pkg.SetAcctLineType
54767       (p_component_type             => l_component_type
54768       ,p_event_type_code            => l_event_type_code
54769       ,p_line_definition_owner_code => l_line_definition_owner_code
54770       ,p_line_definition_code       => l_line_definition_code
54771       ,p_accounting_line_code       => l_component_code
54772       ,p_accounting_line_type_code  => l_component_type_code
54773       ,p_accounting_line_appl_id    => l_component_appl_id
54774       ,p_amb_context_code           => l_amb_context_code
54775       ,p_entity_code                => l_entity_code
54776       ,p_event_class_code           => l_event_class_code);
54777    --
54778    -- set accounting class
54779    --
54780    xla_ae_lines_pkg.SetAcctClass(
54781            p_accounting_class_code  => 'REALIZED_GAINS'
54782          , p_ae_header_id           => l_ae_header_id
54783          );
54784 
54785    --
54786    -- set rounding class
54787    --
54788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54789                       'REALIZED_GAINS';
54790 
54791    --
54792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54794    --
54795    -- bulk performance
54796    --
54797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54798 
54799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54801 
54802    -- 4955764
54803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54805 
54806    -- 4458381 Public Sector Enh
54807    
54808    --
54809    -- set accounting attributes for the line type
54810    --
54811    l_entered_amt_idx := 28;
54812    l_accted_amt_idx  := 31;
54813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54814    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
54815    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
54816    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
54817    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
54818    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
54819    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
54820    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
54821    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
54822    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
54823    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
54824    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
54825    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
54826    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
54827    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
54828    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
54829    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
54830    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
54831    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
54832    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
54833    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
54834    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
54835    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
54836    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
54837    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
54838    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
54839    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
54840    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
54841    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
54842    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
54843    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
54844    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
54845    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
54846    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
54847    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
54848    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
54849    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
54850    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54851    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
54852    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
54853    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
54854    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
54855    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
54856    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54857    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
54861    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
54858    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
54859    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
54860    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
54862    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
54863    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
54864    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
54865    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
54866    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
54867    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
54868    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
54869    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
54870    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
54871    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
54872    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
54873    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
54874    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
54875    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
54876 
54877    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54878    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54879 
54880    ---------------------------------------------------------------------------------------------------------------
54881    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54882    ---------------------------------------------------------------------------------------------------------------
54883    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54884 
54885    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54886    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54887 
54888    IF xla_accounting_cache_pkg.GetValueChar
54889          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54890          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54891    AND l_bflow_method_code = 'PRIOR_ENTRY'
54892 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54893    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54894          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54895        )
54896    THEN
54897          xla_ae_lines_pkg.BflowUpgEntry
54898            (p_business_method_code    => l_bflow_method_code
54899            ,p_business_class_code     => l_bflow_class_code
54900            ,p_balance_type            => l_balance_type_code);
54901    ELSE
54902       NULL;
54903 XLA_AE_LINES_PKG.business_flow_validation(
54904                                 p_business_method_code     => l_bflow_method_code
54905                                ,p_business_class_code      => l_bflow_class_code
54906                                ,p_inherit_description_flag => l_inherit_desc_flag);
54907    END IF;
54908 
54909    --
54910    -- call analytical criteria
54911    --
54912    -- Inherited Analytical Criteria for business flow method of Prior Entry.
54913    --
54914    -- call description
54915    --
54916    -- No description or it is inherited.
54917    --
54918    -- call ADRs
54919    -- Bug 4922099
54920    --
54921    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54922         (NVL(l_actual_upg_option, 'N') = 'O') OR
54923         (NVL(l_enc_upg_option, 'N') = 'O')
54924       )
54925    THEN
54926    NULL;
54927    --
54928    --
54929    
54930    --
54931    --
54932    END IF;
54933    --
54934    -- Bug 4922099
54935    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54936           (NVL(l_enc_upg_option, 'N') = 'O')
54937         ) AND
54938         (l_bflow_method_code = 'PRIOR_ENTRY')
54939       )
54940    THEN
54941       IF
54942       --
54943       1 = 1
54944       --
54945       THEN
54946       xla_accounting_err_pkg.build_message
54947                                     (p_appli_s_name            => 'XLA'
54948                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54949                                     ,p_token_1                 => 'LINE_NUMBER'
54950                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54951                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54952                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54953                                                                              l_component_type
54954                                                                             ,l_component_code
54955                                                                             ,l_component_type_code
54956                                                                             ,l_component_appl_id
54957                                                                             ,l_amb_context_code
54958                                                                             ,l_entity_code
54959                                                                             ,l_event_class_code
54960                                                                            )
54961                                     ,p_token_3                 => 'OWNER'
54962                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54963                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54964                                                                           ,p_lookup_code    => l_component_type_code
54965                                                                          )
54969                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54966                                     ,p_token_4                 => 'PRODUCT_NAME'
54967                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54968                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54970                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54971                                     ,p_ae_header_id            =>  NULL
54972                                        );
54973 
54974         IF (C_LEVEL_ERROR>= g_log_level) THEN
54975                  trace
54976                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54977                       ,p_level    => C_LEVEL_ERROR
54978                       ,p_module   => l_log_module);
54979         END IF;
54980       END IF;
54981    END IF;
54982    --
54983    --
54984    ------------------------------------------------------------------------------------------------
54985    -- 4219869 Business Flow
54986    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54987    -- Prior Entry.  Currently, the following code is always generated.
54988    ------------------------------------------------------------------------------------------------
54989    -- No ValidateCurrentLine for business flow method of Prior Entry
54990 
54991    ------------------------------------------------------------------------------------
54992    -- 4219869 Business Flow
54993    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54994    ------------------------------------------------------------------------------------
54995    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54996 
54997    ----------------------------------------------------------------------------------
54998    -- 4219869 Business Flow
54999    -- Update journal entry status -- Need to generate this within IF <condition>
55000    ----------------------------------------------------------------------------------
55001    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55002          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55003          ,p_balance_type_code => l_balance_type_code
55004          );
55005 
55006    -------------------------------------------------------------------------------------------
55007    -- 4262811 - Generate the Accrual Reversal lines
55008    -------------------------------------------------------------------------------------------
55009    BEGIN
55010       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55011                               (g_array_event(p_event_id).array_value_num('header_index'));
55012       IF l_acc_rev_flag IS NULL THEN
55013          l_acc_rev_flag := 'N';
55014       END IF;
55015    EXCEPTION
55016       WHEN OTHERS THEN
55017          l_acc_rev_flag := 'N';
55018    END;
55019    --
55020    IF (l_acc_rev_flag = 'Y') THEN
55021 
55022        -- 4645092  ------------------------------------------------------------------------------
55023        -- To allow MPA report to determine if it should generate report process
55024        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55025        ------------------------------------------------------------------------------------------
55026 
55027        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55028        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55029 
55030        --
55031        -- Update the line information that should be overwritten
55032        --
55033        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55034                                          p_header_num   => 1);
55035        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55036 
55037        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55038 
55039        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55040           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55041        END IF;
55042 
55043       --
55044       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55045       --
55046       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55047           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55048       ELSE
55049           ---------------------------------------------------------------------------------------------------
55050           -- 4262811a Switch Sign
55051           ---------------------------------------------------------------------------------------------------
55052           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55053           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55054                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55055           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55056                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55057           -- 5132302
55058           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55059                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55060 
55061       END IF;
55062 
55063       -- 4955764
55064       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55065       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55066 
55067 
55068       XLA_AE_LINES_PKG.ValidateCurrentLine;
55072                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55069       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55070 
55071       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55073                ,p_balance_type_code => l_balance_type_code);
55074 
55075    END IF;
55076 
55077    -----------------------------------------------------------------------------------------
55078    -- 4262811 Multiperiod Accounting
55079    -----------------------------------------------------------------------------------------
55080      -- No MPA option is assigned.
55081 
55082 
55083 END IF;
55084 END IF;
55085 --
55086 
55087 --
55088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55089    trace
55090       (p_msg      => 'END of AcctLineType_115'
55091       ,p_level    => C_LEVEL_PROCEDURE
55092       ,p_module   => l_log_module);
55093 END IF;
55094 --
55095 EXCEPTION
55096   WHEN xla_exceptions_pkg.application_exception THEN
55097       RAISE;
55098   WHEN OTHERS THEN
55099        xla_exceptions_pkg.raise_message
55100            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_115');
55101 END AcctLineType_115;
55102 --
55103 
55104 ---------------------------------------
55105 --
55106 -- PRIVATE FUNCTION
55107 --         AcctLineType_116
55108 --
55109 ---------------------------------------
55110 PROCEDURE AcctLineType_116 (
55111   p_application_id        IN NUMBER
55112  ,p_event_id              IN NUMBER
55113  ,p_calculate_acctd_flag  IN VARCHAR2
55114  ,p_calculate_g_l_flag    IN VARCHAR2
55115  ,p_actual_flag           IN OUT VARCHAR2
55116  ,p_balance_type_code     OUT VARCHAR2
55117  ,p_gain_or_loss_ref      OUT VARCHAR2
55118  
55119 --Realized Losses CCID
55120  , p_source_18            IN NUMBER
55121 --Entered Currency Code
55122  , p_source_26            IN VARCHAR2
55123 --Exchange Rate Date
55124  , p_source_28            IN DATE
55125 --Exchange Rate
55126  , p_source_29            IN NUMBER
55127 --Exchange Rate Type
55128  , p_source_30            IN VARCHAR2
55129 --Entered Amount
55130  , p_source_42            IN NUMBER
55131 --Accounted Amount
55132  , p_source_43            IN NUMBER
55133 --Revenue Distribution Type
55134  , p_source_46            IN VARCHAR2
55135 --Crediting Revenue Flag
55136  , p_source_48            IN VARCHAR2
55137 --Revenue First Distribution ID
55138  , p_source_49            IN NUMBER
55139 --Revenue Second Distribution ID
55140  , p_source_50            IN NUMBER
55141 --Event ID
55142  , p_source_51            IN NUMBER
55143 )
55144 IS
55145 
55146 l_component_type              VARCHAR2(80);
55147 l_component_code              VARCHAR2(30);
55148 l_component_type_code         VARCHAR2(1);
55149 l_component_appl_id           INTEGER;
55150 l_amb_context_code            VARCHAR2(30);
55151 l_entity_code                 VARCHAR2(30);
55152 l_event_class_code            VARCHAR2(30);
55153 l_ae_header_id                NUMBER;
55154 l_event_type_code             VARCHAR2(30);
55155 l_line_definition_code        VARCHAR2(30);
55156 l_line_definition_owner_code  VARCHAR2(1);
55157 --
55158 -- adr variables
55159 l_segment                     VARCHAR2(30);
55160 l_ccid                        NUMBER;
55161 l_adr_transaction_coa_id      NUMBER;
55162 l_adr_accounting_coa_id       NUMBER;
55163 l_adr_flexfield_segment_code  VARCHAR2(30);
55164 l_adr_flex_value_set_id       NUMBER;
55165 l_adr_value_type_code         VARCHAR2(30);
55166 l_adr_value_combination_id    NUMBER;
55167 l_adr_value_segment_code      VARCHAR2(30);
55168 
55169 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55170 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55171 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55172 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55173 
55174 -- 4262811 Variables ------------------------------------------------------------------------------------------
55175 l_entered_amt_idx             NUMBER;
55176 l_accted_amt_idx              NUMBER;
55177 l_acc_rev_flag                VARCHAR2(1);
55178 l_accrual_line_num            NUMBER;
55179 l_tmp_amt                     NUMBER;
55180 l_acc_rev_natural_side_code   VARCHAR2(1);
55181 
55182 l_num_entries                 NUMBER;
55183 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55184 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55185 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55186 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55187 l_recog_line_1                NUMBER;
55188 l_recog_line_2                NUMBER;
55189 
55190 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55191 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55192 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55193 
55194 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55195 
55196 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55197 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55198 
55199 ---------------------------------------------------------------------------------------------------------------
55200 
55201 
55202 --
55203 -- bulk performance
55204 --
55205 l_balance_type_code           VARCHAR2(1);
55206 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55207 l_log_module                  VARCHAR2(240);
55208 
55209 --
55210 -- Upgrade strategy
55211 --
55212 l_actual_upg_option           VARCHAR2(1);
55213 l_enc_upg_option           VARCHAR2(1);
55214 
55215 --
55219       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
55216 BEGIN
55217 --
55218 IF g_log_enabled THEN
55220 END IF;
55221 --
55222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55223 
55224       trace
55225          (p_msg      => 'BEGIN of AcctLineType_116'
55226          ,p_level    => C_LEVEL_PROCEDURE
55227          ,p_module   => l_log_module);
55228 
55229 END IF;
55230 --
55231 l_component_type             := 'AMB_JLT';
55232 l_component_code             := 'PA_REALIZED_LOSSES';
55233 l_component_type_code        := 'S';
55234 l_component_appl_id          :=  275;
55235 l_amb_context_code           := 'DEFAULT';
55236 l_entity_code                := 'REVENUE';
55237 l_event_class_code           := 'REVENUE';
55238 l_event_type_code            := 'REVENUE_ALL';
55239 l_line_definition_owner_code := 'S';
55240 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
55241 --
55242 l_balance_type_code          := 'A';
55243 l_segment                     := NULL;
55244 l_ccid                        := NULL;
55245 l_adr_transaction_coa_id      := NULL;
55246 l_adr_accounting_coa_id       := NULL;
55247 l_adr_flexfield_segment_code  := NULL;
55248 l_adr_flex_value_set_id       := NULL;
55249 l_adr_value_type_code         := NULL;
55250 l_adr_value_combination_id    := NULL;
55251 l_adr_value_segment_code      := NULL;
55252 
55253 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55254 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
55255 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55256 l_budgetary_control_flag     := 'N';
55257 
55258 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55259 l_bflow_applied_to_amt       := NULL; -- 5132302
55260 l_entered_amt_idx            := NULL;          -- 4262811
55261 l_accted_amt_idx             := NULL;          -- 4262811
55262 l_acc_rev_flag               := NULL;          -- 4262811
55263 l_accrual_line_num           := NULL;          -- 4262811
55264 l_tmp_amt                    := NULL;          -- 4262811
55265 --
55266  
55267 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55268     l_balance_type_code <> 'B' THEN
55269 IF NVL(p_source_46,'
55270 ') =  'Revenue - Realized Losses' AND 
55271 NVL(p_source_48,'
55272 ') =  'N'
55273  THEN 
55274 
55275    --
55276    XLA_AE_LINES_PKG.SetNewLine;
55277 
55278    p_balance_type_code          := l_balance_type_code;
55279    -- set the flag so later we will know whether the gain loss line needs to be created
55280    
55281    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55282      p_actual_flag :='A';
55283    END IF;
55284 
55285    --
55286    -- bulk performance
55287    --
55288    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55289                                       p_header_num   => 0); -- 4262811
55290    --
55291    -- set accounting line options
55292    --
55293    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55294            p_natural_side_code          => 'C'
55295          , p_gain_or_loss_flag          => 'N'
55296          , p_gl_transfer_mode_code      => 'S'
55297          , p_acct_entry_type_code       => 'A'
55298          , p_switch_side_flag           => 'Y'
55299          , p_merge_duplicate_code       => 'N'
55300          );
55301    --
55302    l_acc_rev_natural_side_code := 'D';  -- 4262811
55303    -- 
55304    --
55305    -- set accounting line type info
55306    --
55307    xla_ae_lines_pkg.SetAcctLineType
55308       (p_component_type             => l_component_type
55309       ,p_event_type_code            => l_event_type_code
55310       ,p_line_definition_owner_code => l_line_definition_owner_code
55311       ,p_line_definition_code       => l_line_definition_code
55312       ,p_accounting_line_code       => l_component_code
55313       ,p_accounting_line_type_code  => l_component_type_code
55314       ,p_accounting_line_appl_id    => l_component_appl_id
55315       ,p_amb_context_code           => l_amb_context_code
55316       ,p_entity_code                => l_entity_code
55317       ,p_event_class_code           => l_event_class_code);
55318    --
55319    -- set accounting class
55320    --
55321    xla_ae_lines_pkg.SetAcctClass(
55322            p_accounting_class_code  => 'REALIZED_LOSS'
55323          , p_ae_header_id           => l_ae_header_id
55324          );
55325 
55326    --
55327    -- set rounding class
55328    --
55329    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55330                       'REALIZED_LOSS';
55331 
55332    --
55333    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55334    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55335    --
55336    -- bulk performance
55337    --
55338    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55339 
55340    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55341       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55342 
55343    -- 4955764
55344    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55345       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55346 
55347    -- 4458381 Public Sector Enh
55348    
55349    --
55350    -- set accounting attributes for the line type
55351    --
55352    l_entered_amt_idx := 4;
55353    l_accted_amt_idx  := 10;
55354    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55355    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
55359    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
55356    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
55357    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
55358    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
55360    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
55361    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
55362    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
55363    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
55364    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
55365    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
55366    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
55367    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
55368    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
55369    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
55370    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
55371    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
55372    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
55373    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
55374    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
55375 
55376    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55377    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55378 
55379    ---------------------------------------------------------------------------------------------------------------
55380    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55381    ---------------------------------------------------------------------------------------------------------------
55382    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55383 
55384    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55385    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55386 
55387    IF xla_accounting_cache_pkg.GetValueChar
55388          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55389          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55390    AND l_bflow_method_code = 'PRIOR_ENTRY'
55391 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55392    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55393          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55394        )
55395    THEN
55396          xla_ae_lines_pkg.BflowUpgEntry
55397            (p_business_method_code    => l_bflow_method_code
55398            ,p_business_class_code     => l_bflow_class_code
55399            ,p_balance_type            => l_balance_type_code);
55400    ELSE
55401       NULL;
55402 -- No business flow processing for business flow method of NONE.
55403    END IF;
55404 
55405    --
55406    -- call analytical criteria
55407    --
55408    
55409    --
55410    -- call description
55411    --
55412    -- No description or it is inherited.
55413    --
55414    -- call ADRs
55415    -- Bug 4922099
55416    --
55417    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55418         (NVL(l_actual_upg_option, 'N') = 'O') OR
55419         (NVL(l_enc_upg_option, 'N') = 'O')
55420       )
55421    THEN
55422    NULL;
55423    --
55424    --
55425    
55426   l_ccid := AcctDerRule_25(
55427            p_application_id           => p_application_id
55428          , p_ae_header_id             => l_ae_header_id 
55429 , p_source_18 => p_source_18
55430          , x_transaction_coa_id       => l_adr_transaction_coa_id
55431          , x_accounting_coa_id        => l_adr_accounting_coa_id
55432          , x_value_type_code          => l_adr_value_type_code
55433          , p_side                     => 'NA'
55434    );
55435 
55436    xla_ae_lines_pkg.set_ccid(
55437     p_code_combination_id          => l_ccid
55438   , p_value_type_code              => l_adr_value_type_code
55439   , p_transaction_coa_id           => l_adr_transaction_coa_id
55440   , p_accounting_coa_id            => l_adr_accounting_coa_id
55441   , p_adr_code                     => 'REALIZED_LOSSES_RULE'
55442   , p_adr_type_code                => 'S'
55443   , p_component_type               => l_component_type
55444   , p_component_code               => l_component_code
55445   , p_component_type_code          => l_component_type_code
55446   , p_component_appl_id            => l_component_appl_id
55447   , p_amb_context_code             => l_amb_context_code
55448   , p_side                         => 'NA'
55449   );
55450 
55451 
55452    --
55453    --
55454    END IF;
55455    --
55456    -- Bug 4922099
55457    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55458           (NVL(l_enc_upg_option, 'N') = 'O')
55459         ) AND
55460         (l_bflow_method_code = 'PRIOR_ENTRY')
55461       )
55462    THEN
55463       IF
55464       --
55465       1 = 2
55466       --
55467       THEN
55468       xla_accounting_err_pkg.build_message
55469                                     (p_appli_s_name            => 'XLA'
55470                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55471                                     ,p_token_1                 => 'LINE_NUMBER'
55472                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55473                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55474                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55475                                                                              l_component_type
55476                                                                             ,l_component_code
55480                                                                             ,l_entity_code
55477                                                                             ,l_component_type_code
55478                                                                             ,l_component_appl_id
55479                                                                             ,l_amb_context_code
55481                                                                             ,l_event_class_code
55482                                                                            )
55483                                     ,p_token_3                 => 'OWNER'
55484                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55485                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55486                                                                           ,p_lookup_code    => l_component_type_code
55487                                                                          )
55488                                     ,p_token_4                 => 'PRODUCT_NAME'
55489                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55490                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55491                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55492                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55493                                     ,p_ae_header_id            =>  NULL
55494                                        );
55495 
55496         IF (C_LEVEL_ERROR>= g_log_level) THEN
55497                  trace
55498                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55499                       ,p_level    => C_LEVEL_ERROR
55500                       ,p_module   => l_log_module);
55501         END IF;
55502       END IF;
55503    END IF;
55504    --
55505    --
55506    ------------------------------------------------------------------------------------------------
55507    -- 4219869 Business Flow
55508    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55509    -- Prior Entry.  Currently, the following code is always generated.
55510    ------------------------------------------------------------------------------------------------
55511    XLA_AE_LINES_PKG.ValidateCurrentLine;
55512 
55513    ------------------------------------------------------------------------------------
55514    -- 4219869 Business Flow
55515    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55516    ------------------------------------------------------------------------------------
55517    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55518 
55519    ----------------------------------------------------------------------------------
55520    -- 4219869 Business Flow
55521    -- Update journal entry status -- Need to generate this within IF <condition>
55522    ----------------------------------------------------------------------------------
55523    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55524          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55525          ,p_balance_type_code => l_balance_type_code
55526          );
55527 
55528    -------------------------------------------------------------------------------------------
55529    -- 4262811 - Generate the Accrual Reversal lines
55530    -------------------------------------------------------------------------------------------
55531    BEGIN
55532       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55533                               (g_array_event(p_event_id).array_value_num('header_index'));
55534       IF l_acc_rev_flag IS NULL THEN
55535          l_acc_rev_flag := 'N';
55536       END IF;
55537    EXCEPTION
55538       WHEN OTHERS THEN
55539          l_acc_rev_flag := 'N';
55540    END;
55541    --
55542    IF (l_acc_rev_flag = 'Y') THEN
55543 
55544        -- 4645092  ------------------------------------------------------------------------------
55545        -- To allow MPA report to determine if it should generate report process
55546        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55547        ------------------------------------------------------------------------------------------
55548 
55549        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55550        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55551 
55552        --
55553        -- Update the line information that should be overwritten
55554        --
55555        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55556                                          p_header_num   => 1);
55557        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55558 
55559        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55560 
55561        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55562           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55563        END IF;
55564 
55565       --
55566       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55567       --
55568       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55569           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55570       ELSE
55571           ---------------------------------------------------------------------------------------------------
55572           -- 4262811a Switch Sign
55573           ---------------------------------------------------------------------------------------------------
55574           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55578                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55575           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55576                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55577           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55579           -- 5132302
55580           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55581                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55582 
55583       END IF;
55584 
55585       -- 4955764
55586       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55587       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55588 
55589 
55590       XLA_AE_LINES_PKG.ValidateCurrentLine;
55591       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55592 
55593       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55594                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55595                ,p_balance_type_code => l_balance_type_code);
55596 
55597    END IF;
55598 
55599    -----------------------------------------------------------------------------------------
55600    -- 4262811 Multiperiod Accounting
55601    -----------------------------------------------------------------------------------------
55602      -- No MPA option is assigned.
55603 
55604 
55605 END IF;
55606 END IF;
55607 --
55608 
55609 --
55610 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55611    trace
55612       (p_msg      => 'END of AcctLineType_116'
55613       ,p_level    => C_LEVEL_PROCEDURE
55614       ,p_module   => l_log_module);
55615 END IF;
55616 --
55617 EXCEPTION
55618   WHEN xla_exceptions_pkg.application_exception THEN
55619       RAISE;
55620   WHEN OTHERS THEN
55621        xla_exceptions_pkg.raise_message
55622            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_116');
55623 END AcctLineType_116;
55624 --
55625 
55626 ---------------------------------------
55627 --
55628 -- PRIVATE FUNCTION
55629 --         AcctLineType_117
55630 --
55631 ---------------------------------------
55632 PROCEDURE AcctLineType_117 (
55633   p_application_id        IN NUMBER
55634  ,p_event_id              IN NUMBER
55635  ,p_calculate_acctd_flag  IN VARCHAR2
55636  ,p_calculate_g_l_flag    IN VARCHAR2
55637  ,p_actual_flag           IN OUT VARCHAR2
55638  ,p_balance_type_code     OUT VARCHAR2
55639  ,p_gain_or_loss_ref      OUT VARCHAR2
55640  
55641 --Actual Upgrade Credit Accounting Class
55642  , p_source_24            IN VARCHAR2
55643 --Entered Currency Code
55644  , p_source_26            IN VARCHAR2
55645 --Exchange Rate Date
55646  , p_source_28            IN DATE
55647 --Exchange Rate
55648  , p_source_29            IN NUMBER
55649 --Exchange Rate Type
55650  , p_source_30            IN VARCHAR2
55651 --Actual Upgrade Debit Accounting Class
55652  , p_source_31            IN VARCHAR2
55653 --Use Actuals Upgrade Attributes Flag
55654  , p_source_32            IN VARCHAR2
55655 --Entered Amount
55656  , p_source_42            IN NUMBER
55657 --Accounted Amount
55658  , p_source_43            IN NUMBER
55659 --Revenue Distribution Type
55660  , p_source_46            IN VARCHAR2
55661 --Crediting Revenue Flag
55662  , p_source_48            IN VARCHAR2
55663 --Revenue First Distribution ID
55664  , p_source_49            IN NUMBER
55665 --Revenue Second Distribution ID
55666  , p_source_50            IN NUMBER
55667 --Event ID
55668  , p_source_51            IN NUMBER
55669 --Actual Upgrade Credit CCID
55670  , p_source_64            IN NUMBER
55671 --Actual Upgrade Debit CCID
55672  , p_source_65            IN NUMBER
55673 --Application ID
55674  , p_source_66            IN NUMBER
55675 --Revenue Entity Code
55676  , p_source_67            IN VARCHAR2
55677 --Crediting Revenue First Distribution ID
55678  , p_source_68            IN NUMBER
55679 --Project ID
55680  , p_source_69            IN NUMBER
55681 --Crediting Revenue Second Distribution ID
55682  , p_source_70            IN NUMBER
55683 --Draft Revenue Number Credited
55684  , p_source_71            IN NUMBER
55685 )
55686 IS
55687 
55688 l_component_type              VARCHAR2(80);
55689 l_component_code              VARCHAR2(30);
55690 l_component_type_code         VARCHAR2(1);
55691 l_component_appl_id           INTEGER;
55692 l_amb_context_code            VARCHAR2(30);
55693 l_entity_code                 VARCHAR2(30);
55694 l_event_class_code            VARCHAR2(30);
55695 l_ae_header_id                NUMBER;
55696 l_event_type_code             VARCHAR2(30);
55697 l_line_definition_code        VARCHAR2(30);
55698 l_line_definition_owner_code  VARCHAR2(1);
55699 --
55700 -- adr variables
55701 l_segment                     VARCHAR2(30);
55702 l_ccid                        NUMBER;
55703 l_adr_transaction_coa_id      NUMBER;
55704 l_adr_accounting_coa_id       NUMBER;
55705 l_adr_flexfield_segment_code  VARCHAR2(30);
55706 l_adr_flex_value_set_id       NUMBER;
55707 l_adr_value_type_code         VARCHAR2(30);
55708 l_adr_value_combination_id    NUMBER;
55709 l_adr_value_segment_code      VARCHAR2(30);
55710 
55711 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55712 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55713 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55714 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55715 
55716 -- 4262811 Variables ------------------------------------------------------------------------------------------
55720 l_accrual_line_num            NUMBER;
55717 l_entered_amt_idx             NUMBER;
55718 l_accted_amt_idx              NUMBER;
55719 l_acc_rev_flag                VARCHAR2(1);
55721 l_tmp_amt                     NUMBER;
55722 l_acc_rev_natural_side_code   VARCHAR2(1);
55723 
55724 l_num_entries                 NUMBER;
55725 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55726 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55727 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55728 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55729 l_recog_line_1                NUMBER;
55730 l_recog_line_2                NUMBER;
55731 
55732 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55733 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55734 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55735 
55736 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55737 
55738 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55739 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55740 
55741 ---------------------------------------------------------------------------------------------------------------
55742 
55743 
55744 --
55745 -- bulk performance
55746 --
55747 l_balance_type_code           VARCHAR2(1);
55748 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55749 l_log_module                  VARCHAR2(240);
55750 
55751 --
55752 -- Upgrade strategy
55753 --
55754 l_actual_upg_option           VARCHAR2(1);
55755 l_enc_upg_option           VARCHAR2(1);
55756 
55757 --
55758 BEGIN
55759 --
55760 IF g_log_enabled THEN
55761       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
55762 END IF;
55763 --
55764 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55765 
55766       trace
55767          (p_msg      => 'BEGIN of AcctLineType_117'
55768          ,p_level    => C_LEVEL_PROCEDURE
55769          ,p_module   => l_log_module);
55770 
55771 END IF;
55772 --
55773 l_component_type             := 'AMB_JLT';
55774 l_component_code             := 'PA_REALIZED_LOSSES_ADJ';
55775 l_component_type_code        := 'S';
55776 l_component_appl_id          :=  275;
55777 l_amb_context_code           := 'DEFAULT';
55778 l_entity_code                := 'REVENUE';
55779 l_event_class_code           := 'REVENUE_ADJ';
55780 l_event_type_code            := 'REVENUE_ADJ_ALL';
55781 l_line_definition_owner_code := 'S';
55782 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
55783 --
55784 l_balance_type_code          := 'A';
55785 l_segment                     := NULL;
55786 l_ccid                        := NULL;
55787 l_adr_transaction_coa_id      := NULL;
55788 l_adr_accounting_coa_id       := NULL;
55789 l_adr_flexfield_segment_code  := NULL;
55790 l_adr_flex_value_set_id       := NULL;
55791 l_adr_value_type_code         := NULL;
55792 l_adr_value_combination_id    := NULL;
55793 l_adr_value_segment_code      := NULL;
55794 
55795 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
55796 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
55797 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
55798 l_budgetary_control_flag     := 'N';
55799 
55800 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55801 l_bflow_applied_to_amt       := NULL; -- 5132302
55802 l_entered_amt_idx            := NULL;          -- 4262811
55803 l_accted_amt_idx             := NULL;          -- 4262811
55804 l_acc_rev_flag               := NULL;          -- 4262811
55805 l_accrual_line_num           := NULL;          -- 4262811
55806 l_tmp_amt                    := NULL;          -- 4262811
55807 --
55808  
55809 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55810     l_balance_type_code <> 'B' THEN
55811 IF NVL(p_source_46,'
55812 ') =  'Revenue - Realized Losses' AND 
55813 NVL(p_source_48,'
55814 ') =  'Y'
55815  THEN 
55816 
55817    --
55818    XLA_AE_LINES_PKG.SetNewLine;
55819 
55820    p_balance_type_code          := l_balance_type_code;
55821    -- set the flag so later we will know whether the gain loss line needs to be created
55822    
55823    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55824      p_actual_flag :='A';
55825    END IF;
55826 
55827    --
55828    -- bulk performance
55829    --
55830    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55831                                       p_header_num   => 0); -- 4262811
55832    --
55833    -- set accounting line options
55834    --
55835    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55836            p_natural_side_code          => 'C'
55837          , p_gain_or_loss_flag          => 'N'
55838          , p_gl_transfer_mode_code      => 'S'
55839          , p_acct_entry_type_code       => 'A'
55840          , p_switch_side_flag           => 'Y'
55841          , p_merge_duplicate_code       => 'N'
55842          );
55843    --
55844    l_acc_rev_natural_side_code := 'D';  -- 4262811
55845    -- 
55846    --
55847    -- set accounting line type info
55848    --
55849    xla_ae_lines_pkg.SetAcctLineType
55850       (p_component_type             => l_component_type
55851       ,p_event_type_code            => l_event_type_code
55852       ,p_line_definition_owner_code => l_line_definition_owner_code
55853       ,p_line_definition_code       => l_line_definition_code
55854       ,p_accounting_line_code       => l_component_code
55855       ,p_accounting_line_type_code  => l_component_type_code
55856       ,p_accounting_line_appl_id    => l_component_appl_id
55860    --
55857       ,p_amb_context_code           => l_amb_context_code
55858       ,p_entity_code                => l_entity_code
55859       ,p_event_class_code           => l_event_class_code);
55861    -- set accounting class
55862    --
55863    xla_ae_lines_pkg.SetAcctClass(
55864            p_accounting_class_code  => 'REALIZED_LOSS'
55865          , p_ae_header_id           => l_ae_header_id
55866          );
55867 
55868    --
55869    -- set rounding class
55870    --
55871    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55872                       'REALIZED_LOSS';
55873 
55874    --
55875    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55876    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55877    --
55878    -- bulk performance
55879    --
55880    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55881 
55882    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55883       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55884 
55885    -- 4955764
55886    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55887       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55888 
55889    -- 4458381 Public Sector Enh
55890    
55891    --
55892    -- set accounting attributes for the line type
55893    --
55894    l_entered_amt_idx := 28;
55895    l_accted_amt_idx  := 31;
55896    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55897    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
55898    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
55899    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
55900    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
55901    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
55902    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
55903    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
55904    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
55905    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
55906    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
55907    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
55908    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
55909    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
55910    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
55911    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
55912    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
55913    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
55914    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
55915    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
55916    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
55917    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
55918    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
55919    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
55920    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
55921    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
55922    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
55923    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
55924    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
55925    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
55926    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
55927    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
55928    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
55929    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
55930    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
55931    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
55932    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
55933    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
55934    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
55935    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
55936    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
55937    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
55938    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
55939    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
55940    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
55941    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
55942    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
55943    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
55944    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
55945    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
55946    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
55947    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
55948    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
55949    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
55950    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
55951    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
55952    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
55953    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
55954    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
55955    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
55956    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
55957    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
55958    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
55959 
55963    ---------------------------------------------------------------------------------------------------------------
55960    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55961    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55962 
55964    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55965    ---------------------------------------------------------------------------------------------------------------
55966    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55967 
55968    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55969    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55970 
55971    IF xla_accounting_cache_pkg.GetValueChar
55972          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55973          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55974    AND l_bflow_method_code = 'PRIOR_ENTRY'
55975 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55976    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55977          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55978        )
55979    THEN
55980          xla_ae_lines_pkg.BflowUpgEntry
55981            (p_business_method_code    => l_bflow_method_code
55982            ,p_business_class_code     => l_bflow_class_code
55983            ,p_balance_type            => l_balance_type_code);
55984    ELSE
55985       NULL;
55986 XLA_AE_LINES_PKG.business_flow_validation(
55987                                 p_business_method_code     => l_bflow_method_code
55988                                ,p_business_class_code      => l_bflow_class_code
55989                                ,p_inherit_description_flag => l_inherit_desc_flag);
55990    END IF;
55991 
55992    --
55993    -- call analytical criteria
55994    --
55995    -- Inherited Analytical Criteria for business flow method of Prior Entry.
55996    --
55997    -- call description
55998    --
55999    -- No description or it is inherited.
56000    --
56001    -- call ADRs
56002    -- Bug 4922099
56003    --
56004    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56005         (NVL(l_actual_upg_option, 'N') = 'O') OR
56006         (NVL(l_enc_upg_option, 'N') = 'O')
56007       )
56008    THEN
56009    NULL;
56010    --
56011    --
56012    
56013    --
56014    --
56015    END IF;
56016    --
56017    -- Bug 4922099
56018    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56019           (NVL(l_enc_upg_option, 'N') = 'O')
56020         ) AND
56021         (l_bflow_method_code = 'PRIOR_ENTRY')
56022       )
56023    THEN
56024       IF
56025       --
56026       1 = 1
56027       --
56028       THEN
56029       xla_accounting_err_pkg.build_message
56030                                     (p_appli_s_name            => 'XLA'
56031                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56032                                     ,p_token_1                 => 'LINE_NUMBER'
56033                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56034                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56035                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56036                                                                              l_component_type
56037                                                                             ,l_component_code
56038                                                                             ,l_component_type_code
56039                                                                             ,l_component_appl_id
56040                                                                             ,l_amb_context_code
56041                                                                             ,l_entity_code
56042                                                                             ,l_event_class_code
56043                                                                            )
56044                                     ,p_token_3                 => 'OWNER'
56045                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56046                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56047                                                                           ,p_lookup_code    => l_component_type_code
56048                                                                          )
56049                                     ,p_token_4                 => 'PRODUCT_NAME'
56050                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56051                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56052                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56053                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56054                                     ,p_ae_header_id            =>  NULL
56055                                        );
56056 
56057         IF (C_LEVEL_ERROR>= g_log_level) THEN
56058                  trace
56059                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56060                       ,p_level    => C_LEVEL_ERROR
56061                       ,p_module   => l_log_module);
56062         END IF;
56063       END IF;
56064    END IF;
56065    --
56066    --
56067    ------------------------------------------------------------------------------------------------
56068    -- 4219869 Business Flow
56069    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56073 
56070    -- Prior Entry.  Currently, the following code is always generated.
56071    ------------------------------------------------------------------------------------------------
56072    -- No ValidateCurrentLine for business flow method of Prior Entry
56074    ------------------------------------------------------------------------------------
56075    -- 4219869 Business Flow
56076    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56077    ------------------------------------------------------------------------------------
56078    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56079 
56080    ----------------------------------------------------------------------------------
56081    -- 4219869 Business Flow
56082    -- Update journal entry status -- Need to generate this within IF <condition>
56083    ----------------------------------------------------------------------------------
56084    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56085          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56086          ,p_balance_type_code => l_balance_type_code
56087          );
56088 
56089    -------------------------------------------------------------------------------------------
56090    -- 4262811 - Generate the Accrual Reversal lines
56091    -------------------------------------------------------------------------------------------
56092    BEGIN
56093       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56094                               (g_array_event(p_event_id).array_value_num('header_index'));
56095       IF l_acc_rev_flag IS NULL THEN
56096          l_acc_rev_flag := 'N';
56097       END IF;
56098    EXCEPTION
56099       WHEN OTHERS THEN
56100          l_acc_rev_flag := 'N';
56101    END;
56102    --
56103    IF (l_acc_rev_flag = 'Y') THEN
56104 
56105        -- 4645092  ------------------------------------------------------------------------------
56106        -- To allow MPA report to determine if it should generate report process
56107        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56108        ------------------------------------------------------------------------------------------
56109 
56110        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56111        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56112 
56113        --
56114        -- Update the line information that should be overwritten
56115        --
56116        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56117                                          p_header_num   => 1);
56118        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56119 
56120        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56121 
56122        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56123           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56124        END IF;
56125 
56126       --
56127       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56128       --
56129       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56130           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56131       ELSE
56132           ---------------------------------------------------------------------------------------------------
56133           -- 4262811a Switch Sign
56134           ---------------------------------------------------------------------------------------------------
56135           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56136           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56137                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56138           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56139                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56140           -- 5132302
56141           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56142                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56143 
56144       END IF;
56145 
56146       -- 4955764
56147       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56148       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56149 
56150 
56151       XLA_AE_LINES_PKG.ValidateCurrentLine;
56152       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56153 
56154       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56155                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56156                ,p_balance_type_code => l_balance_type_code);
56157 
56158    END IF;
56159 
56160    -----------------------------------------------------------------------------------------
56161    -- 4262811 Multiperiod Accounting
56162    -----------------------------------------------------------------------------------------
56163      -- No MPA option is assigned.
56164 
56165 
56166 END IF;
56167 END IF;
56168 --
56169 
56170 --
56171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56172    trace
56173       (p_msg      => 'END of AcctLineType_117'
56174       ,p_level    => C_LEVEL_PROCEDURE
56175       ,p_module   => l_log_module);
56176 END IF;
56177 --
56178 EXCEPTION
56179   WHEN xla_exceptions_pkg.application_exception THEN
56180       RAISE;
56181   WHEN OTHERS THEN
56182        xla_exceptions_pkg.raise_message
56183            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_117');
56184 END AcctLineType_117;
56185 --
56186 
56190 --         AcctLineType_118
56187 ---------------------------------------
56188 --
56189 -- PRIVATE FUNCTION
56191 --
56192 ---------------------------------------
56193 PROCEDURE AcctLineType_118 (
56194   p_application_id        IN NUMBER
56195  ,p_event_id              IN NUMBER
56196  ,p_calculate_acctd_flag  IN VARCHAR2
56197  ,p_calculate_g_l_flag    IN VARCHAR2
56198  ,p_actual_flag           IN OUT VARCHAR2
56199  ,p_balance_type_code     OUT VARCHAR2
56200  ,p_gain_or_loss_ref      OUT VARCHAR2
56201  
56202 --Allow Account Override Flag
56203  , p_source_5            IN VARCHAR2
56204 --Provider Cost/ Revenue CCID
56205  , p_source_9            IN NUMBER
56206 --Adjustment Receiver Cost/ Revenue CCID
56207  , p_source_11            IN NUMBER
56208 --Receiver Cost/ Revenue CCID
56209  , p_source_16            IN NUMBER
56210 --Reversing Line Flag
56211  , p_source_23            IN VARCHAR2
56212 --Actual Upgrade Credit Accounting Class
56213  , p_source_24            IN VARCHAR2
56214 --Entered Currency Code
56215  , p_source_26            IN VARCHAR2
56216 --Exchange Rate Date
56217  , p_source_28            IN DATE
56218 --Exchange Rate
56219  , p_source_29            IN NUMBER
56220 --Exchange Rate Type
56221  , p_source_30            IN VARCHAR2
56222 --Actual Upgrade Debit Accounting Class
56223  , p_source_31            IN VARCHAR2
56224 --Use Actuals Upgrade Attributes Flag
56225  , p_source_32            IN VARCHAR2
56226 --Expenditure Item ID
56227  , p_source_33            IN NUMBER
56228 --Cost Distribution Line Number
56229  , p_source_34            IN NUMBER
56230 --Line Type
56231  , p_source_35            IN VARCHAR2
56232  , p_source_35_meaning    IN VARCHAR2
56233 --Reversed Line Number
56234  , p_source_36            IN NUMBER
56235 --Entered Amount
56236  , p_source_42            IN NUMBER
56237 --Accounted Amount
56238  , p_source_43            IN NUMBER
56239 --Transfer Amount Type
56240  , p_source_73            IN VARCHAR2
56241  , p_source_73_meaning    IN VARCHAR2
56242 )
56243 IS
56244 
56245 l_component_type              VARCHAR2(80);
56246 l_component_code              VARCHAR2(30);
56247 l_component_type_code         VARCHAR2(1);
56248 l_component_appl_id           INTEGER;
56249 l_amb_context_code            VARCHAR2(30);
56250 l_entity_code                 VARCHAR2(30);
56251 l_event_class_code            VARCHAR2(30);
56252 l_ae_header_id                NUMBER;
56253 l_event_type_code             VARCHAR2(30);
56254 l_line_definition_code        VARCHAR2(30);
56255 l_line_definition_owner_code  VARCHAR2(1);
56256 --
56257 -- adr variables
56258 l_segment                     VARCHAR2(30);
56259 l_ccid                        NUMBER;
56260 l_adr_transaction_coa_id      NUMBER;
56261 l_adr_accounting_coa_id       NUMBER;
56262 l_adr_flexfield_segment_code  VARCHAR2(30);
56263 l_adr_flex_value_set_id       NUMBER;
56264 l_adr_value_type_code         VARCHAR2(30);
56265 l_adr_value_combination_id    NUMBER;
56266 l_adr_value_segment_code      VARCHAR2(30);
56267 
56268 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56269 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56270 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56271 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56272 
56273 -- 4262811 Variables ------------------------------------------------------------------------------------------
56274 l_entered_amt_idx             NUMBER;
56275 l_accted_amt_idx              NUMBER;
56276 l_acc_rev_flag                VARCHAR2(1);
56277 l_accrual_line_num            NUMBER;
56278 l_tmp_amt                     NUMBER;
56279 l_acc_rev_natural_side_code   VARCHAR2(1);
56280 
56281 l_num_entries                 NUMBER;
56282 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56283 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56284 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56285 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56286 l_recog_line_1                NUMBER;
56287 l_recog_line_2                NUMBER;
56288 
56289 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56290 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56291 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56292 
56293 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56294 
56295 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56296 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56297 
56298 ---------------------------------------------------------------------------------------------------------------
56299 
56300 
56301 --
56302 -- bulk performance
56303 --
56304 l_balance_type_code           VARCHAR2(1);
56305 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56306 l_log_module                  VARCHAR2(240);
56307 
56308 --
56309 -- Upgrade strategy
56310 --
56311 l_actual_upg_option           VARCHAR2(1);
56312 l_enc_upg_option           VARCHAR2(1);
56313 
56314 --
56315 BEGIN
56316 --
56317 IF g_log_enabled THEN
56318       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
56319 END IF;
56320 --
56321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56322 
56323       trace
56324          (p_msg      => 'BEGIN of AcctLineType_118'
56325          ,p_level    => C_LEVEL_PROCEDURE
56326          ,p_module   => l_log_module);
56327 
56328 END IF;
56329 --
56330 l_component_type             := 'AMB_JLT';
56331 l_component_code             := 'PA_RECEIVER_COST';
56335 l_entity_code                := 'EXPENDITURES';
56332 l_component_type_code        := 'S';
56333 l_component_appl_id          :=  275;
56334 l_amb_context_code           := 'DEFAULT';
56336 l_event_class_code           := 'BORROWED_AND_LENT';
56337 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
56338 l_line_definition_owner_code := 'S';
56339 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
56340 --
56341 l_balance_type_code          := 'A';
56342 l_segment                     := NULL;
56343 l_ccid                        := NULL;
56344 l_adr_transaction_coa_id      := NULL;
56345 l_adr_accounting_coa_id       := NULL;
56346 l_adr_flexfield_segment_code  := NULL;
56347 l_adr_flex_value_set_id       := NULL;
56348 l_adr_value_type_code         := NULL;
56349 l_adr_value_combination_id    := NULL;
56350 l_adr_value_segment_code      := NULL;
56351 
56352 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56353 l_bflow_class_code           := '';    -- 4219869 Business Flow
56354 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56355 l_budgetary_control_flag     := 'N';
56356 
56357 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56358 l_bflow_applied_to_amt       := NULL; -- 5132302
56359 l_entered_amt_idx            := NULL;          -- 4262811
56360 l_accted_amt_idx             := NULL;          -- 4262811
56361 l_acc_rev_flag               := NULL;          -- 4262811
56362 l_accrual_line_num           := NULL;          -- 4262811
56363 l_tmp_amt                    := NULL;          -- 4262811
56364 --
56365  
56366 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56367     l_balance_type_code <> 'B' THEN
56368 IF NVL(p_source_73,'
56369 ') =  'COST_TRANSFER' OR 
56370 NVL(p_source_73,'
56371 ') =  'COST_REVENUE' OR 
56372 p_source_73 IS NULL 
56373  THEN 
56374 
56375    --
56376    XLA_AE_LINES_PKG.SetNewLine;
56377 
56378    p_balance_type_code          := l_balance_type_code;
56379    -- set the flag so later we will know whether the gain loss line needs to be created
56380    
56381    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56382      p_actual_flag :='A';
56383    END IF;
56384 
56385    --
56386    -- bulk performance
56387    --
56388    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56389                                       p_header_num   => 0); -- 4262811
56390    --
56391    -- set accounting line options
56392    --
56393    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56394            p_natural_side_code          => 'D'
56395          , p_gain_or_loss_flag          => 'N'
56396          , p_gl_transfer_mode_code      => 'S'
56397          , p_acct_entry_type_code       => 'A'
56398          , p_switch_side_flag           => 'Y'
56399          , p_merge_duplicate_code       => 'N'
56400          );
56401    --
56402    l_acc_rev_natural_side_code := 'C';  -- 4262811
56403    -- 
56404    --
56405    -- set accounting line type info
56406    --
56407    xla_ae_lines_pkg.SetAcctLineType
56408       (p_component_type             => l_component_type
56409       ,p_event_type_code            => l_event_type_code
56410       ,p_line_definition_owner_code => l_line_definition_owner_code
56411       ,p_line_definition_code       => l_line_definition_code
56412       ,p_accounting_line_code       => l_component_code
56413       ,p_accounting_line_type_code  => l_component_type_code
56414       ,p_accounting_line_appl_id    => l_component_appl_id
56415       ,p_amb_context_code           => l_amb_context_code
56416       ,p_entity_code                => l_entity_code
56417       ,p_event_class_code           => l_event_class_code);
56418    --
56419    -- set accounting class
56420    --
56421    xla_ae_lines_pkg.SetAcctClass(
56422            p_accounting_class_code  => 'RECEIVER_COST'
56423          , p_ae_header_id           => l_ae_header_id
56424          );
56425 
56426    --
56427    -- set rounding class
56428    --
56429    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56430                       'RECEIVER_COST';
56431 
56432    --
56433    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56434    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56435    --
56436    -- bulk performance
56437    --
56438    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56439 
56440    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56441       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56442 
56443    -- 4955764
56444    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56445       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56446 
56447    -- 4458381 Public Sector Enh
56448    
56449    --
56450    -- set accounting attributes for the line type
56451    --
56452    l_entered_amt_idx := 22;
56453    l_accted_amt_idx  := 27;
56454    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56455    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
56456    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
56457    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
56458    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
56459    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
56460    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
56461    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
56462    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
56463    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
56467    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
56464    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
56465    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
56466    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
56468    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
56469    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
56470    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
56471    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
56472    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
56473    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
56474    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
56475    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
56476    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
56477    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
56478    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
56479    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
56480    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
56481    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
56482    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
56483    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
56484    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
56485    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
56486    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
56487    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
56488    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
56489    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
56490    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
56491    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
56492    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
56493    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
56494    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
56495    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
56496    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
56497    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
56498    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
56499    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
56500    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
56501    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
56502    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
56503    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
56504    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
56505    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
56506    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
56507    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
56508    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
56509    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
56510    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
56511    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
56512    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
56513    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
56514    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
56515 
56516    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56517    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56518 
56519    ---------------------------------------------------------------------------------------------------------------
56520    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56521    ---------------------------------------------------------------------------------------------------------------
56522    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56523 
56524    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56525    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56526 
56527    IF xla_accounting_cache_pkg.GetValueChar
56528          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56529          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56530    AND l_bflow_method_code = 'PRIOR_ENTRY'
56531 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56532    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56533          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56534        )
56535    THEN
56536          xla_ae_lines_pkg.BflowUpgEntry
56537            (p_business_method_code    => l_bflow_method_code
56538            ,p_business_class_code     => l_bflow_class_code
56539            ,p_balance_type            => l_balance_type_code);
56540    ELSE
56541       NULL;
56542 -- No business flow processing for business flow method of NONE.
56543    END IF;
56544 
56545    --
56546    -- call analytical criteria
56547    --
56548    
56549    --
56550    -- call description
56551    --
56552    -- No description or it is inherited.
56553    --
56554    -- call ADRs
56555    -- Bug 4922099
56556    --
56557    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56558         (NVL(l_actual_upg_option, 'N') = 'O') OR
56559         (NVL(l_enc_upg_option, 'N') = 'O')
56560       )
56561    THEN
56562    NULL;
56563    --
56564    --
56565    
56566   l_ccid := AcctDerRule_23(
56567            p_application_id           => p_application_id
56568          , p_ae_header_id             => l_ae_header_id 
56569 , p_source_5 => p_source_5
56570 , p_source_11 => p_source_11
56571 , p_source_16 => p_source_16
56575          , p_side                     => 'NA'
56572          , x_transaction_coa_id       => l_adr_transaction_coa_id
56573          , x_accounting_coa_id        => l_adr_accounting_coa_id
56574          , x_value_type_code          => l_adr_value_type_code
56576    );
56577 
56578    xla_ae_lines_pkg.set_ccid(
56579     p_code_combination_id          => l_ccid
56580   , p_value_type_code              => l_adr_value_type_code
56581   , p_transaction_coa_id           => l_adr_transaction_coa_id
56582   , p_accounting_coa_id            => l_adr_accounting_coa_id
56583   , p_adr_code                     => 'PA_RECVR_COST_REV_ACCT_RULE'
56584   , p_adr_type_code                => 'S'
56585   , p_component_type               => l_component_type
56586   , p_component_code               => l_component_code
56587   , p_component_type_code          => l_component_type_code
56588   , p_component_appl_id            => l_component_appl_id
56589   , p_amb_context_code             => l_amb_context_code
56590   , p_side                         => 'NA'
56591   );
56592 
56593 
56594    --
56595    --
56596    END IF;
56597    --
56598    -- Bug 4922099
56599    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56600           (NVL(l_enc_upg_option, 'N') = 'O')
56601         ) AND
56602         (l_bflow_method_code = 'PRIOR_ENTRY')
56603       )
56604    THEN
56605       IF
56606       --
56607       1 = 2
56608       --
56609       THEN
56610       xla_accounting_err_pkg.build_message
56611                                     (p_appli_s_name            => 'XLA'
56612                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56613                                     ,p_token_1                 => 'LINE_NUMBER'
56614                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56615                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56616                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56617                                                                              l_component_type
56618                                                                             ,l_component_code
56619                                                                             ,l_component_type_code
56620                                                                             ,l_component_appl_id
56621                                                                             ,l_amb_context_code
56622                                                                             ,l_entity_code
56623                                                                             ,l_event_class_code
56624                                                                            )
56625                                     ,p_token_3                 => 'OWNER'
56626                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56627                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56628                                                                           ,p_lookup_code    => l_component_type_code
56629                                                                          )
56630                                     ,p_token_4                 => 'PRODUCT_NAME'
56631                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56632                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56633                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56634                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56635                                     ,p_ae_header_id            =>  NULL
56636                                        );
56637 
56638         IF (C_LEVEL_ERROR>= g_log_level) THEN
56639                  trace
56640                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56641                       ,p_level    => C_LEVEL_ERROR
56642                       ,p_module   => l_log_module);
56643         END IF;
56644       END IF;
56645    END IF;
56646    --
56647    --
56648    ------------------------------------------------------------------------------------------------
56649    -- 4219869 Business Flow
56650    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56651    -- Prior Entry.  Currently, the following code is always generated.
56652    ------------------------------------------------------------------------------------------------
56653    XLA_AE_LINES_PKG.ValidateCurrentLine;
56654 
56655    ------------------------------------------------------------------------------------
56656    -- 4219869 Business Flow
56657    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56658    ------------------------------------------------------------------------------------
56659    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56660 
56661    ----------------------------------------------------------------------------------
56662    -- 4219869 Business Flow
56663    -- Update journal entry status -- Need to generate this within IF <condition>
56664    ----------------------------------------------------------------------------------
56665    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56666          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56667          ,p_balance_type_code => l_balance_type_code
56668          );
56669 
56670    -------------------------------------------------------------------------------------------
56671    -- 4262811 - Generate the Accrual Reversal lines
56672    -------------------------------------------------------------------------------------------
56673    BEGIN
56674       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56678       END IF;
56675                               (g_array_event(p_event_id).array_value_num('header_index'));
56676       IF l_acc_rev_flag IS NULL THEN
56677          l_acc_rev_flag := 'N';
56679    EXCEPTION
56680       WHEN OTHERS THEN
56681          l_acc_rev_flag := 'N';
56682    END;
56683    --
56684    IF (l_acc_rev_flag = 'Y') THEN
56685 
56686        -- 4645092  ------------------------------------------------------------------------------
56687        -- To allow MPA report to determine if it should generate report process
56688        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56689        ------------------------------------------------------------------------------------------
56690 
56691        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56692        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56693 
56694        --
56695        -- Update the line information that should be overwritten
56696        --
56697        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56698                                          p_header_num   => 1);
56699        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56700 
56701        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56702 
56703        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56704           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56705        END IF;
56706 
56707       --
56708       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56709       --
56710       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56711           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56712       ELSE
56713           ---------------------------------------------------------------------------------------------------
56714           -- 4262811a Switch Sign
56715           ---------------------------------------------------------------------------------------------------
56716           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56717           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56718                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56719           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56720                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56721           -- 5132302
56722           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56723                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56724 
56725       END IF;
56726 
56727       -- 4955764
56728       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56729       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56730 
56731 
56732       XLA_AE_LINES_PKG.ValidateCurrentLine;
56733       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56734 
56735       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56736                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56737                ,p_balance_type_code => l_balance_type_code);
56738 
56739    END IF;
56740 
56741    -----------------------------------------------------------------------------------------
56742    -- 4262811 Multiperiod Accounting
56743    -----------------------------------------------------------------------------------------
56744      -- No MPA option is assigned.
56745 
56746 
56747 END IF;
56748 END IF;
56749 --
56750 
56751 --
56752 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56753    trace
56754       (p_msg      => 'END of AcctLineType_118'
56755       ,p_level    => C_LEVEL_PROCEDURE
56756       ,p_module   => l_log_module);
56757 END IF;
56758 --
56759 EXCEPTION
56760   WHEN xla_exceptions_pkg.application_exception THEN
56761       RAISE;
56762   WHEN OTHERS THEN
56763        xla_exceptions_pkg.raise_message
56764            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_118');
56765 END AcctLineType_118;
56766 --
56767 
56768 ---------------------------------------
56769 --
56770 -- PRIVATE FUNCTION
56771 --         AcctLineType_119
56772 --
56773 ---------------------------------------
56774 PROCEDURE AcctLineType_119 (
56775   p_application_id        IN NUMBER
56776  ,p_event_id              IN NUMBER
56777  ,p_calculate_acctd_flag  IN VARCHAR2
56778  ,p_calculate_g_l_flag    IN VARCHAR2
56779  ,p_actual_flag           IN OUT VARCHAR2
56780  ,p_balance_type_code     OUT VARCHAR2
56781  ,p_gain_or_loss_ref      OUT VARCHAR2
56782  
56783 --Allow Account Override Flag
56784  , p_source_5            IN VARCHAR2
56785 --Provider Cost/ Revenue CCID
56786  , p_source_9            IN NUMBER
56787 --Adjustment Receiver Cost/ Revenue CCID
56788  , p_source_11            IN NUMBER
56789 --Receiver Cost/ Revenue CCID
56790  , p_source_16            IN NUMBER
56791 --Reversing Line Flag
56792  , p_source_23            IN VARCHAR2
56793 --Actual Upgrade Credit Accounting Class
56794  , p_source_24            IN VARCHAR2
56795 --Entered Currency Code
56796  , p_source_26            IN VARCHAR2
56797 --Exchange Rate Date
56798  , p_source_28            IN DATE
56799 --Exchange Rate
56800  , p_source_29            IN NUMBER
56801 --Exchange Rate Type
56802  , p_source_30            IN VARCHAR2
56803 --Actual Upgrade Debit Accounting Class
56804  , p_source_31            IN VARCHAR2
56805 --Use Actuals Upgrade Attributes Flag
56809 --Cost Distribution Line Number
56806  , p_source_32            IN VARCHAR2
56807 --Expenditure Item ID
56808  , p_source_33            IN NUMBER
56810  , p_source_34            IN NUMBER
56811 --Line Type
56812  , p_source_35            IN VARCHAR2
56813  , p_source_35_meaning    IN VARCHAR2
56814 --Reversed Line Number
56815  , p_source_36            IN NUMBER
56816 --Entered Amount
56817  , p_source_42            IN NUMBER
56818 --Accounted Amount
56819  , p_source_43            IN NUMBER
56820 --Transfer Amount Type
56821  , p_source_73            IN VARCHAR2
56822  , p_source_73_meaning    IN VARCHAR2
56823 )
56824 IS
56825 
56826 l_component_type              VARCHAR2(80);
56827 l_component_code              VARCHAR2(30);
56828 l_component_type_code         VARCHAR2(1);
56829 l_component_appl_id           INTEGER;
56830 l_amb_context_code            VARCHAR2(30);
56831 l_entity_code                 VARCHAR2(30);
56832 l_event_class_code            VARCHAR2(30);
56833 l_ae_header_id                NUMBER;
56834 l_event_type_code             VARCHAR2(30);
56835 l_line_definition_code        VARCHAR2(30);
56836 l_line_definition_owner_code  VARCHAR2(1);
56837 --
56838 -- adr variables
56839 l_segment                     VARCHAR2(30);
56840 l_ccid                        NUMBER;
56841 l_adr_transaction_coa_id      NUMBER;
56842 l_adr_accounting_coa_id       NUMBER;
56843 l_adr_flexfield_segment_code  VARCHAR2(30);
56844 l_adr_flex_value_set_id       NUMBER;
56845 l_adr_value_type_code         VARCHAR2(30);
56846 l_adr_value_combination_id    NUMBER;
56847 l_adr_value_segment_code      VARCHAR2(30);
56848 
56849 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56850 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56851 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56852 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56853 
56854 -- 4262811 Variables ------------------------------------------------------------------------------------------
56855 l_entered_amt_idx             NUMBER;
56856 l_accted_amt_idx              NUMBER;
56857 l_acc_rev_flag                VARCHAR2(1);
56858 l_accrual_line_num            NUMBER;
56859 l_tmp_amt                     NUMBER;
56860 l_acc_rev_natural_side_code   VARCHAR2(1);
56861 
56862 l_num_entries                 NUMBER;
56863 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56864 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56865 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56866 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56867 l_recog_line_1                NUMBER;
56868 l_recog_line_2                NUMBER;
56869 
56870 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56871 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56872 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56873 
56874 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56875 
56876 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56877 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56878 
56879 ---------------------------------------------------------------------------------------------------------------
56880 
56881 
56882 --
56883 -- bulk performance
56884 --
56885 l_balance_type_code           VARCHAR2(1);
56886 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56887 l_log_module                  VARCHAR2(240);
56888 
56889 --
56890 -- Upgrade strategy
56891 --
56892 l_actual_upg_option           VARCHAR2(1);
56893 l_enc_upg_option           VARCHAR2(1);
56894 
56895 --
56896 BEGIN
56897 --
56898 IF g_log_enabled THEN
56899       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
56900 END IF;
56901 --
56902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56903 
56904       trace
56905          (p_msg      => 'BEGIN of AcctLineType_119'
56906          ,p_level    => C_LEVEL_PROCEDURE
56907          ,p_module   => l_log_module);
56908 
56909 END IF;
56910 --
56911 l_component_type             := 'AMB_JLT';
56912 l_component_code             := 'PA_RECEIVER_COST_ADJ';
56913 l_component_type_code        := 'S';
56914 l_component_appl_id          :=  275;
56915 l_amb_context_code           := 'DEFAULT';
56916 l_entity_code                := 'EXPENDITURES';
56917 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
56918 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
56919 l_line_definition_owner_code := 'S';
56920 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
56921 --
56922 l_balance_type_code          := 'A';
56923 l_segment                     := NULL;
56924 l_ccid                        := NULL;
56925 l_adr_transaction_coa_id      := NULL;
56926 l_adr_accounting_coa_id       := NULL;
56927 l_adr_flexfield_segment_code  := NULL;
56928 l_adr_flex_value_set_id       := NULL;
56929 l_adr_value_type_code         := NULL;
56930 l_adr_value_combination_id    := NULL;
56931 l_adr_value_segment_code      := NULL;
56932 
56933 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56934 l_bflow_class_code           := '';    -- 4219869 Business Flow
56935 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56936 l_budgetary_control_flag     := 'N';
56937 
56938 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56939 l_bflow_applied_to_amt       := NULL; -- 5132302
56940 l_entered_amt_idx            := NULL;          -- 4262811
56941 l_accted_amt_idx             := NULL;          -- 4262811
56942 l_acc_rev_flag               := NULL;          -- 4262811
56943 l_accrual_line_num           := NULL;          -- 4262811
56947 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56944 l_tmp_amt                    := NULL;          -- 4262811
56945 --
56946  
56948     l_balance_type_code <> 'B' THEN
56949 IF NVL(p_source_73,'
56950 ') =  'COST_TRANSFER' OR 
56951 NVL(p_source_73,'
56952 ') =  'COST_REVENUE' OR 
56953 p_source_73 IS NULL 
56954  THEN 
56955 
56956    --
56957    XLA_AE_LINES_PKG.SetNewLine;
56958 
56959    p_balance_type_code          := l_balance_type_code;
56960    -- set the flag so later we will know whether the gain loss line needs to be created
56961    
56962    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56963      p_actual_flag :='A';
56964    END IF;
56965 
56966    --
56967    -- bulk performance
56968    --
56969    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56970                                       p_header_num   => 0); -- 4262811
56971    --
56972    -- set accounting line options
56973    --
56974    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56975            p_natural_side_code          => 'D'
56976          , p_gain_or_loss_flag          => 'N'
56977          , p_gl_transfer_mode_code      => 'S'
56978          , p_acct_entry_type_code       => 'A'
56979          , p_switch_side_flag           => 'Y'
56980          , p_merge_duplicate_code       => 'N'
56981          );
56982    --
56983    l_acc_rev_natural_side_code := 'C';  -- 4262811
56984    -- 
56985    --
56986    -- set accounting line type info
56987    --
56988    xla_ae_lines_pkg.SetAcctLineType
56989       (p_component_type             => l_component_type
56990       ,p_event_type_code            => l_event_type_code
56991       ,p_line_definition_owner_code => l_line_definition_owner_code
56992       ,p_line_definition_code       => l_line_definition_code
56993       ,p_accounting_line_code       => l_component_code
56994       ,p_accounting_line_type_code  => l_component_type_code
56995       ,p_accounting_line_appl_id    => l_component_appl_id
56996       ,p_amb_context_code           => l_amb_context_code
56997       ,p_entity_code                => l_entity_code
56998       ,p_event_class_code           => l_event_class_code);
56999    --
57000    -- set accounting class
57001    --
57002    xla_ae_lines_pkg.SetAcctClass(
57003            p_accounting_class_code  => 'RECEIVER_COST'
57004          , p_ae_header_id           => l_ae_header_id
57005          );
57006 
57007    --
57008    -- set rounding class
57009    --
57010    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57011                       'RECEIVER_COST';
57012 
57013    --
57014    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57015    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57016    --
57017    -- bulk performance
57018    --
57019    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57020 
57021    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57022       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57023 
57024    -- 4955764
57025    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57026       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57027 
57028    -- 4458381 Public Sector Enh
57029    
57030    --
57031    -- set accounting attributes for the line type
57032    --
57033    l_entered_amt_idx := 22;
57034    l_accted_amt_idx  := 27;
57035    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57036    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
57037    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
57038    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
57039    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
57040    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
57041    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
57042    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
57043    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
57044    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
57045    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
57046    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
57047    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
57048    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
57049    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
57050    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
57051    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
57052    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
57053    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
57054    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
57055    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
57056    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
57057    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
57058    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
57059    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
57060    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
57061    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
57062    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
57063    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
57064    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
57065    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
57066    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
57070    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
57067    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
57068    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
57069    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
57071    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
57072    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
57073    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
57074    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
57075    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
57076    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
57077    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
57078    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
57079    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
57080    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
57081    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
57082    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
57083    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
57084    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
57085    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
57086    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
57087    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
57088    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
57089    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
57090    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
57091    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
57092    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
57093    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
57094    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
57095    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
57096 
57097    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57098    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57099 
57100    ---------------------------------------------------------------------------------------------------------------
57101    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57102    ---------------------------------------------------------------------------------------------------------------
57103    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57104 
57105    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57106    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57107 
57108    IF xla_accounting_cache_pkg.GetValueChar
57109          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57110          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57111    AND l_bflow_method_code = 'PRIOR_ENTRY'
57112 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57113    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57114          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57115        )
57116    THEN
57117          xla_ae_lines_pkg.BflowUpgEntry
57118            (p_business_method_code    => l_bflow_method_code
57119            ,p_business_class_code     => l_bflow_class_code
57120            ,p_balance_type            => l_balance_type_code);
57121    ELSE
57122       NULL;
57123 -- No business flow processing for business flow method of NONE.
57124    END IF;
57125 
57126    --
57127    -- call analytical criteria
57128    --
57129    
57130    --
57131    -- call description
57132    --
57133    -- No description or it is inherited.
57134    --
57135    -- call ADRs
57136    -- Bug 4922099
57137    --
57138    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57139         (NVL(l_actual_upg_option, 'N') = 'O') OR
57140         (NVL(l_enc_upg_option, 'N') = 'O')
57141       )
57142    THEN
57143    NULL;
57144    --
57145    --
57146    
57147   l_ccid := AcctDerRule_18(
57148            p_application_id           => p_application_id
57149          , p_ae_header_id             => l_ae_header_id 
57150 , p_source_5 => p_source_5
57151 , p_source_11 => p_source_11
57152          , x_transaction_coa_id       => l_adr_transaction_coa_id
57153          , x_accounting_coa_id        => l_adr_accounting_coa_id
57154          , x_value_type_code          => l_adr_value_type_code
57155          , p_side                     => 'NA'
57156    );
57157 
57158    xla_ae_lines_pkg.set_ccid(
57159     p_code_combination_id          => l_ccid
57160   , p_value_type_code              => l_adr_value_type_code
57161   , p_transaction_coa_id           => l_adr_transaction_coa_id
57162   , p_accounting_coa_id            => l_adr_accounting_coa_id
57163   , p_adr_code                     => 'PA_RCVR_COST_REV_ADJ_ACCT_RULE'
57164   , p_adr_type_code                => 'S'
57165   , p_component_type               => l_component_type
57166   , p_component_code               => l_component_code
57167   , p_component_type_code          => l_component_type_code
57168   , p_component_appl_id            => l_component_appl_id
57169   , p_amb_context_code             => l_amb_context_code
57170   , p_side                         => 'NA'
57171   );
57172 
57173 
57174    --
57175    --
57176    END IF;
57177    --
57178    -- Bug 4922099
57179    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57180           (NVL(l_enc_upg_option, 'N') = 'O')
57181         ) AND
57182         (l_bflow_method_code = 'PRIOR_ENTRY')
57183       )
57184    THEN
57185       IF
57186       --
57187       1 = 2
57188       --
57189       THEN
57193                                     ,p_token_1                 => 'LINE_NUMBER'
57190       xla_accounting_err_pkg.build_message
57191                                     (p_appli_s_name            => 'XLA'
57192                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57194                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57195                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57196                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57197                                                                              l_component_type
57198                                                                             ,l_component_code
57199                                                                             ,l_component_type_code
57200                                                                             ,l_component_appl_id
57201                                                                             ,l_amb_context_code
57202                                                                             ,l_entity_code
57203                                                                             ,l_event_class_code
57204                                                                            )
57205                                     ,p_token_3                 => 'OWNER'
57206                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57207                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57208                                                                           ,p_lookup_code    => l_component_type_code
57209                                                                          )
57210                                     ,p_token_4                 => 'PRODUCT_NAME'
57211                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57212                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57213                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57214                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57215                                     ,p_ae_header_id            =>  NULL
57216                                        );
57217 
57218         IF (C_LEVEL_ERROR>= g_log_level) THEN
57219                  trace
57220                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57221                       ,p_level    => C_LEVEL_ERROR
57222                       ,p_module   => l_log_module);
57223         END IF;
57224       END IF;
57225    END IF;
57226    --
57227    --
57228    ------------------------------------------------------------------------------------------------
57229    -- 4219869 Business Flow
57230    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57231    -- Prior Entry.  Currently, the following code is always generated.
57232    ------------------------------------------------------------------------------------------------
57233    XLA_AE_LINES_PKG.ValidateCurrentLine;
57234 
57235    ------------------------------------------------------------------------------------
57236    -- 4219869 Business Flow
57237    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57238    ------------------------------------------------------------------------------------
57239    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57240 
57241    ----------------------------------------------------------------------------------
57242    -- 4219869 Business Flow
57243    -- Update journal entry status -- Need to generate this within IF <condition>
57244    ----------------------------------------------------------------------------------
57245    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57246          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57247          ,p_balance_type_code => l_balance_type_code
57248          );
57249 
57250    -------------------------------------------------------------------------------------------
57251    -- 4262811 - Generate the Accrual Reversal lines
57252    -------------------------------------------------------------------------------------------
57253    BEGIN
57254       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57255                               (g_array_event(p_event_id).array_value_num('header_index'));
57256       IF l_acc_rev_flag IS NULL THEN
57257          l_acc_rev_flag := 'N';
57258       END IF;
57259    EXCEPTION
57260       WHEN OTHERS THEN
57261          l_acc_rev_flag := 'N';
57262    END;
57263    --
57264    IF (l_acc_rev_flag = 'Y') THEN
57265 
57266        -- 4645092  ------------------------------------------------------------------------------
57267        -- To allow MPA report to determine if it should generate report process
57268        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57269        ------------------------------------------------------------------------------------------
57270 
57271        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57272        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57273 
57274        --
57275        -- Update the line information that should be overwritten
57276        --
57277        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57278                                          p_header_num   => 1);
57279        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57280 
57281        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57282 
57283        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57284           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57285        END IF;
57286 
57290       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57287       --
57288       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57289       --
57291           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57292       ELSE
57293           ---------------------------------------------------------------------------------------------------
57294           -- 4262811a Switch Sign
57295           ---------------------------------------------------------------------------------------------------
57296           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57297           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57298                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57299           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57300                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57301           -- 5132302
57302           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57303                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57304 
57305       END IF;
57306 
57307       -- 4955764
57308       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57309       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57310 
57311 
57312       XLA_AE_LINES_PKG.ValidateCurrentLine;
57313       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57314 
57315       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57316                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57317                ,p_balance_type_code => l_balance_type_code);
57318 
57319    END IF;
57320 
57321    -----------------------------------------------------------------------------------------
57322    -- 4262811 Multiperiod Accounting
57323    -----------------------------------------------------------------------------------------
57324      -- No MPA option is assigned.
57325 
57326 
57327 END IF;
57328 END IF;
57329 --
57330 
57331 --
57332 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57333    trace
57334       (p_msg      => 'END of AcctLineType_119'
57335       ,p_level    => C_LEVEL_PROCEDURE
57336       ,p_module   => l_log_module);
57337 END IF;
57338 --
57339 EXCEPTION
57340   WHEN xla_exceptions_pkg.application_exception THEN
57341       RAISE;
57342   WHEN OTHERS THEN
57343        xla_exceptions_pkg.raise_message
57344            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_119');
57345 END AcctLineType_119;
57346 --
57347 
57348 ---------------------------------------
57349 --
57350 -- PRIVATE FUNCTION
57351 --         AcctLineType_120
57352 --
57353 ---------------------------------------
57354 PROCEDURE AcctLineType_120 (
57355   p_application_id        IN NUMBER
57356  ,p_event_id              IN NUMBER
57357  ,p_calculate_acctd_flag  IN VARCHAR2
57358  ,p_calculate_g_l_flag    IN VARCHAR2
57359  ,p_actual_flag           IN OUT VARCHAR2
57360  ,p_balance_type_code     OUT VARCHAR2
57361  ,p_gain_or_loss_ref      OUT VARCHAR2
57362  
57363 --Allow Account Override Flag
57364  , p_source_5            IN VARCHAR2
57365 --Provider Cost/ Revenue CCID
57366  , p_source_9            IN NUMBER
57367 --Adjustment Receiver Cost/ Revenue CCID
57368  , p_source_11            IN NUMBER
57369 --Receiver Cost/ Revenue CCID
57370  , p_source_16            IN NUMBER
57371 --Reversing Line Flag
57372  , p_source_23            IN VARCHAR2
57373 --Actual Upgrade Credit Accounting Class
57374  , p_source_24            IN VARCHAR2
57375 --Entered Currency Code
57376  , p_source_26            IN VARCHAR2
57377 --Exchange Rate Date
57378  , p_source_28            IN DATE
57379 --Exchange Rate
57380  , p_source_29            IN NUMBER
57381 --Exchange Rate Type
57382  , p_source_30            IN VARCHAR2
57383 --Actual Upgrade Debit Accounting Class
57384  , p_source_31            IN VARCHAR2
57385 --Use Actuals Upgrade Attributes Flag
57386  , p_source_32            IN VARCHAR2
57387 --Expenditure Item ID
57388  , p_source_33            IN NUMBER
57389 --Cost Distribution Line Number
57390  , p_source_34            IN NUMBER
57391 --Line Type
57392  , p_source_35            IN VARCHAR2
57393  , p_source_35_meaning    IN VARCHAR2
57394 --Reversed Line Number
57395  , p_source_36            IN NUMBER
57396 --Entered Amount
57397  , p_source_42            IN NUMBER
57398 --Accounted Amount
57399  , p_source_43            IN NUMBER
57400 --Transfer Amount Type
57401  , p_source_73            IN VARCHAR2
57402  , p_source_73_meaning    IN VARCHAR2
57403 )
57404 IS
57405 
57406 l_component_type              VARCHAR2(80);
57407 l_component_code              VARCHAR2(30);
57408 l_component_type_code         VARCHAR2(1);
57409 l_component_appl_id           INTEGER;
57410 l_amb_context_code            VARCHAR2(30);
57411 l_entity_code                 VARCHAR2(30);
57412 l_event_class_code            VARCHAR2(30);
57413 l_ae_header_id                NUMBER;
57414 l_event_type_code             VARCHAR2(30);
57415 l_line_definition_code        VARCHAR2(30);
57416 l_line_definition_owner_code  VARCHAR2(1);
57417 --
57418 -- adr variables
57419 l_segment                     VARCHAR2(30);
57420 l_ccid                        NUMBER;
57421 l_adr_transaction_coa_id      NUMBER;
57422 l_adr_accounting_coa_id       NUMBER;
57423 l_adr_flexfield_segment_code  VARCHAR2(30);
57424 l_adr_flex_value_set_id       NUMBER;
57428 
57425 l_adr_value_type_code         VARCHAR2(30);
57426 l_adr_value_combination_id    NUMBER;
57427 l_adr_value_segment_code      VARCHAR2(30);
57429 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57430 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57431 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57432 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57433 
57434 -- 4262811 Variables ------------------------------------------------------------------------------------------
57435 l_entered_amt_idx             NUMBER;
57436 l_accted_amt_idx              NUMBER;
57437 l_acc_rev_flag                VARCHAR2(1);
57438 l_accrual_line_num            NUMBER;
57439 l_tmp_amt                     NUMBER;
57440 l_acc_rev_natural_side_code   VARCHAR2(1);
57441 
57442 l_num_entries                 NUMBER;
57443 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57444 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57445 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57446 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57447 l_recog_line_1                NUMBER;
57448 l_recog_line_2                NUMBER;
57449 
57450 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57451 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57452 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57453 
57454 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57455 
57456 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57457 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57458 
57459 ---------------------------------------------------------------------------------------------------------------
57460 
57461 
57462 --
57463 -- bulk performance
57464 --
57465 l_balance_type_code           VARCHAR2(1);
57466 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57467 l_log_module                  VARCHAR2(240);
57468 
57469 --
57470 -- Upgrade strategy
57471 --
57472 l_actual_upg_option           VARCHAR2(1);
57473 l_enc_upg_option           VARCHAR2(1);
57474 
57475 --
57476 BEGIN
57477 --
57478 IF g_log_enabled THEN
57479       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
57480 END IF;
57481 --
57482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57483 
57484       trace
57485          (p_msg      => 'BEGIN of AcctLineType_120'
57486          ,p_level    => C_LEVEL_PROCEDURE
57487          ,p_module   => l_log_module);
57488 
57489 END IF;
57490 --
57491 l_component_type             := 'AMB_JLT';
57492 l_component_code             := 'PA_RECEIVER_REVENUE';
57493 l_component_type_code        := 'S';
57494 l_component_appl_id          :=  275;
57495 l_amb_context_code           := 'DEFAULT';
57496 l_entity_code                := 'EXPENDITURES';
57497 l_event_class_code           := 'BORROWED_AND_LENT';
57498 l_event_type_code            := 'BORROWED_AND_LENT_ALL';
57499 l_line_definition_owner_code := 'S';
57500 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
57501 --
57502 l_balance_type_code          := 'A';
57503 l_segment                     := NULL;
57504 l_ccid                        := NULL;
57505 l_adr_transaction_coa_id      := NULL;
57506 l_adr_accounting_coa_id       := NULL;
57507 l_adr_flexfield_segment_code  := NULL;
57508 l_adr_flex_value_set_id       := NULL;
57509 l_adr_value_type_code         := NULL;
57510 l_adr_value_combination_id    := NULL;
57511 l_adr_value_segment_code      := NULL;
57512 
57513 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57514 l_bflow_class_code           := '';    -- 4219869 Business Flow
57515 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57516 l_budgetary_control_flag     := 'N';
57517 
57518 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57519 l_bflow_applied_to_amt       := NULL; -- 5132302
57520 l_entered_amt_idx            := NULL;          -- 4262811
57521 l_accted_amt_idx             := NULL;          -- 4262811
57522 l_acc_rev_flag               := NULL;          -- 4262811
57523 l_accrual_line_num           := NULL;          -- 4262811
57524 l_tmp_amt                    := NULL;          -- 4262811
57525 --
57526  
57527 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57528     l_balance_type_code <> 'B' THEN
57529 IF NVL(p_source_73,'
57530 ') =  'REVENUE_TRANSFER'
57531  THEN 
57532 
57533    --
57534    XLA_AE_LINES_PKG.SetNewLine;
57535 
57536    p_balance_type_code          := l_balance_type_code;
57537    -- set the flag so later we will know whether the gain loss line needs to be created
57538    
57539    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57540      p_actual_flag :='A';
57541    END IF;
57542 
57543    --
57544    -- bulk performance
57545    --
57546    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57547                                       p_header_num   => 0); -- 4262811
57548    --
57549    -- set accounting line options
57550    --
57551    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57552            p_natural_side_code          => 'D'
57553          , p_gain_or_loss_flag          => 'N'
57554          , p_gl_transfer_mode_code      => 'S'
57555          , p_acct_entry_type_code       => 'A'
57556          , p_switch_side_flag           => 'Y'
57557          , p_merge_duplicate_code       => 'N'
57558          );
57559    --
57560    l_acc_rev_natural_side_code := 'C';  -- 4262811
57561    -- 
57562    --
57563    -- set accounting line type info
57564    --
57568       ,p_line_definition_owner_code => l_line_definition_owner_code
57565    xla_ae_lines_pkg.SetAcctLineType
57566       (p_component_type             => l_component_type
57567       ,p_event_type_code            => l_event_type_code
57569       ,p_line_definition_code       => l_line_definition_code
57570       ,p_accounting_line_code       => l_component_code
57571       ,p_accounting_line_type_code  => l_component_type_code
57572       ,p_accounting_line_appl_id    => l_component_appl_id
57573       ,p_amb_context_code           => l_amb_context_code
57574       ,p_entity_code                => l_entity_code
57575       ,p_event_class_code           => l_event_class_code);
57576    --
57577    -- set accounting class
57578    --
57579    xla_ae_lines_pkg.SetAcctClass(
57580            p_accounting_class_code  => 'RECEIVER_REVENUE'
57581          , p_ae_header_id           => l_ae_header_id
57582          );
57583 
57584    --
57585    -- set rounding class
57586    --
57587    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57588                       'RECEIVER_REVENUE';
57589 
57590    --
57591    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57592    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57593    --
57594    -- bulk performance
57595    --
57596    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57597 
57598    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57599       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57600 
57601    -- 4955764
57602    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57603       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57604 
57605    -- 4458381 Public Sector Enh
57606    
57607    --
57608    -- set accounting attributes for the line type
57609    --
57610    l_entered_amt_idx := 22;
57611    l_accted_amt_idx  := 27;
57612    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57613    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
57614    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
57615    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
57616    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
57617    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
57618    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
57619    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
57620    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
57621    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
57622    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
57623    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
57624    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
57625    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
57626    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
57627    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
57628    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
57629    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
57630    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
57631    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
57632    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
57633    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
57634    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
57635    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
57636    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
57637    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
57638    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
57639    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
57640    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
57641    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
57642    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
57643    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
57644    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
57645    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
57646    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
57647    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
57648    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
57649    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
57650    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
57651    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
57652    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
57653    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
57654    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
57655    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
57656    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
57657    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
57658    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
57659    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
57660    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
57661    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
57662    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
57663    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
57664    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
57665    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
57666    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
57667    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
57668    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
57672    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
57669    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
57670    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
57671    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
57673 
57674    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57675    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57676 
57677    ---------------------------------------------------------------------------------------------------------------
57678    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57679    ---------------------------------------------------------------------------------------------------------------
57680    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57681 
57682    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57683    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57684 
57685    IF xla_accounting_cache_pkg.GetValueChar
57686          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57687          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57688    AND l_bflow_method_code = 'PRIOR_ENTRY'
57689 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57690    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57691          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57692        )
57693    THEN
57694          xla_ae_lines_pkg.BflowUpgEntry
57695            (p_business_method_code    => l_bflow_method_code
57696            ,p_business_class_code     => l_bflow_class_code
57697            ,p_balance_type            => l_balance_type_code);
57698    ELSE
57699       NULL;
57700 -- No business flow processing for business flow method of NONE.
57701    END IF;
57702 
57703    --
57704    -- call analytical criteria
57705    --
57706    
57707    --
57708    -- call description
57709    --
57710    -- No description or it is inherited.
57711    --
57712    -- call ADRs
57713    -- Bug 4922099
57714    --
57715    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57716         (NVL(l_actual_upg_option, 'N') = 'O') OR
57717         (NVL(l_enc_upg_option, 'N') = 'O')
57718       )
57719    THEN
57720    NULL;
57721    --
57722    --
57723    
57724   l_ccid := AcctDerRule_23(
57725            p_application_id           => p_application_id
57726          , p_ae_header_id             => l_ae_header_id 
57727 , p_source_5 => p_source_5
57728 , p_source_11 => p_source_11
57729 , p_source_16 => p_source_16
57730          , x_transaction_coa_id       => l_adr_transaction_coa_id
57731          , x_accounting_coa_id        => l_adr_accounting_coa_id
57732          , x_value_type_code          => l_adr_value_type_code
57733          , p_side                     => 'NA'
57734    );
57735 
57736    xla_ae_lines_pkg.set_ccid(
57737     p_code_combination_id          => l_ccid
57738   , p_value_type_code              => l_adr_value_type_code
57739   , p_transaction_coa_id           => l_adr_transaction_coa_id
57740   , p_accounting_coa_id            => l_adr_accounting_coa_id
57741   , p_adr_code                     => 'PA_RECVR_COST_REV_ACCT_RULE'
57742   , p_adr_type_code                => 'S'
57743   , p_component_type               => l_component_type
57744   , p_component_code               => l_component_code
57745   , p_component_type_code          => l_component_type_code
57746   , p_component_appl_id            => l_component_appl_id
57747   , p_amb_context_code             => l_amb_context_code
57748   , p_side                         => 'NA'
57749   );
57750 
57751 
57752    --
57753    --
57754    END IF;
57755    --
57756    -- Bug 4922099
57757    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57758           (NVL(l_enc_upg_option, 'N') = 'O')
57759         ) AND
57760         (l_bflow_method_code = 'PRIOR_ENTRY')
57761       )
57762    THEN
57763       IF
57764       --
57765       1 = 2
57766       --
57767       THEN
57768       xla_accounting_err_pkg.build_message
57769                                     (p_appli_s_name            => 'XLA'
57770                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57771                                     ,p_token_1                 => 'LINE_NUMBER'
57772                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57773                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57774                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57775                                                                              l_component_type
57776                                                                             ,l_component_code
57777                                                                             ,l_component_type_code
57778                                                                             ,l_component_appl_id
57779                                                                             ,l_amb_context_code
57780                                                                             ,l_entity_code
57781                                                                             ,l_event_class_code
57782                                                                            )
57783                                     ,p_token_3                 => 'OWNER'
57784                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57785                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57789                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57786                                                                           ,p_lookup_code    => l_component_type_code
57787                                                                          )
57788                                     ,p_token_4                 => 'PRODUCT_NAME'
57790                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57791                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57792                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57793                                     ,p_ae_header_id            =>  NULL
57794                                        );
57795 
57796         IF (C_LEVEL_ERROR>= g_log_level) THEN
57797                  trace
57798                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57799                       ,p_level    => C_LEVEL_ERROR
57800                       ,p_module   => l_log_module);
57801         END IF;
57802       END IF;
57803    END IF;
57804    --
57805    --
57806    ------------------------------------------------------------------------------------------------
57807    -- 4219869 Business Flow
57808    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57809    -- Prior Entry.  Currently, the following code is always generated.
57810    ------------------------------------------------------------------------------------------------
57811    XLA_AE_LINES_PKG.ValidateCurrentLine;
57812 
57813    ------------------------------------------------------------------------------------
57814    -- 4219869 Business Flow
57815    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57816    ------------------------------------------------------------------------------------
57817    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57818 
57819    ----------------------------------------------------------------------------------
57820    -- 4219869 Business Flow
57821    -- Update journal entry status -- Need to generate this within IF <condition>
57822    ----------------------------------------------------------------------------------
57823    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57824          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57825          ,p_balance_type_code => l_balance_type_code
57826          );
57827 
57828    -------------------------------------------------------------------------------------------
57829    -- 4262811 - Generate the Accrual Reversal lines
57830    -------------------------------------------------------------------------------------------
57831    BEGIN
57832       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57833                               (g_array_event(p_event_id).array_value_num('header_index'));
57834       IF l_acc_rev_flag IS NULL THEN
57835          l_acc_rev_flag := 'N';
57836       END IF;
57837    EXCEPTION
57838       WHEN OTHERS THEN
57839          l_acc_rev_flag := 'N';
57840    END;
57841    --
57842    IF (l_acc_rev_flag = 'Y') THEN
57843 
57844        -- 4645092  ------------------------------------------------------------------------------
57845        -- To allow MPA report to determine if it should generate report process
57846        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57847        ------------------------------------------------------------------------------------------
57848 
57849        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57850        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57851 
57852        --
57853        -- Update the line information that should be overwritten
57854        --
57855        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57856                                          p_header_num   => 1);
57857        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57858 
57859        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57860 
57861        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57862           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57863        END IF;
57864 
57865       --
57866       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57867       --
57868       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57869           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57870       ELSE
57871           ---------------------------------------------------------------------------------------------------
57872           -- 4262811a Switch Sign
57873           ---------------------------------------------------------------------------------------------------
57874           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57875           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57876                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57877           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57878                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57879           -- 5132302
57880           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57881                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57882 
57883       END IF;
57884 
57885       -- 4955764
57886       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57890       XLA_AE_LINES_PKG.ValidateCurrentLine;
57887       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57888 
57889 
57891       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57892 
57893       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57894                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57895                ,p_balance_type_code => l_balance_type_code);
57896 
57897    END IF;
57898 
57899    -----------------------------------------------------------------------------------------
57900    -- 4262811 Multiperiod Accounting
57901    -----------------------------------------------------------------------------------------
57902      -- No MPA option is assigned.
57903 
57904 
57905 END IF;
57906 END IF;
57907 --
57908 
57909 --
57910 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57911    trace
57912       (p_msg      => 'END of AcctLineType_120'
57913       ,p_level    => C_LEVEL_PROCEDURE
57914       ,p_module   => l_log_module);
57915 END IF;
57916 --
57917 EXCEPTION
57918   WHEN xla_exceptions_pkg.application_exception THEN
57919       RAISE;
57920   WHEN OTHERS THEN
57921        xla_exceptions_pkg.raise_message
57922            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_120');
57923 END AcctLineType_120;
57924 --
57925 
57926 ---------------------------------------
57927 --
57928 -- PRIVATE FUNCTION
57929 --         AcctLineType_121
57930 --
57931 ---------------------------------------
57932 PROCEDURE AcctLineType_121 (
57933   p_application_id        IN NUMBER
57934  ,p_event_id              IN NUMBER
57935  ,p_calculate_acctd_flag  IN VARCHAR2
57936  ,p_calculate_g_l_flag    IN VARCHAR2
57937  ,p_actual_flag           IN OUT VARCHAR2
57938  ,p_balance_type_code     OUT VARCHAR2
57939  ,p_gain_or_loss_ref      OUT VARCHAR2
57940  
57941 --Allow Account Override Flag
57942  , p_source_5            IN VARCHAR2
57943 --Provider Cost/ Revenue CCID
57944  , p_source_9            IN NUMBER
57945 --Adjustment Receiver Cost/ Revenue CCID
57946  , p_source_11            IN NUMBER
57947 --Receiver Cost/ Revenue CCID
57948  , p_source_16            IN NUMBER
57949 --Reversing Line Flag
57950  , p_source_23            IN VARCHAR2
57951 --Actual Upgrade Credit Accounting Class
57952  , p_source_24            IN VARCHAR2
57953 --Entered Currency Code
57954  , p_source_26            IN VARCHAR2
57955 --Exchange Rate Date
57956  , p_source_28            IN DATE
57957 --Exchange Rate
57958  , p_source_29            IN NUMBER
57959 --Exchange Rate Type
57960  , p_source_30            IN VARCHAR2
57961 --Actual Upgrade Debit Accounting Class
57962  , p_source_31            IN VARCHAR2
57963 --Use Actuals Upgrade Attributes Flag
57964  , p_source_32            IN VARCHAR2
57965 --Expenditure Item ID
57966  , p_source_33            IN NUMBER
57967 --Cost Distribution Line Number
57968  , p_source_34            IN NUMBER
57969 --Line Type
57970  , p_source_35            IN VARCHAR2
57971  , p_source_35_meaning    IN VARCHAR2
57972 --Reversed Line Number
57973  , p_source_36            IN NUMBER
57974 --Entered Amount
57975  , p_source_42            IN NUMBER
57976 --Accounted Amount
57977  , p_source_43            IN NUMBER
57978 --Transfer Amount Type
57979  , p_source_73            IN VARCHAR2
57980  , p_source_73_meaning    IN VARCHAR2
57981 )
57982 IS
57983 
57984 l_component_type              VARCHAR2(80);
57985 l_component_code              VARCHAR2(30);
57986 l_component_type_code         VARCHAR2(1);
57987 l_component_appl_id           INTEGER;
57988 l_amb_context_code            VARCHAR2(30);
57989 l_entity_code                 VARCHAR2(30);
57990 l_event_class_code            VARCHAR2(30);
57991 l_ae_header_id                NUMBER;
57992 l_event_type_code             VARCHAR2(30);
57993 l_line_definition_code        VARCHAR2(30);
57994 l_line_definition_owner_code  VARCHAR2(1);
57995 --
57996 -- adr variables
57997 l_segment                     VARCHAR2(30);
57998 l_ccid                        NUMBER;
57999 l_adr_transaction_coa_id      NUMBER;
58000 l_adr_accounting_coa_id       NUMBER;
58001 l_adr_flexfield_segment_code  VARCHAR2(30);
58002 l_adr_flex_value_set_id       NUMBER;
58003 l_adr_value_type_code         VARCHAR2(30);
58004 l_adr_value_combination_id    NUMBER;
58005 l_adr_value_segment_code      VARCHAR2(30);
58006 
58007 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58008 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58009 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58010 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58011 
58012 -- 4262811 Variables ------------------------------------------------------------------------------------------
58013 l_entered_amt_idx             NUMBER;
58014 l_accted_amt_idx              NUMBER;
58015 l_acc_rev_flag                VARCHAR2(1);
58016 l_accrual_line_num            NUMBER;
58017 l_tmp_amt                     NUMBER;
58018 l_acc_rev_natural_side_code   VARCHAR2(1);
58019 
58020 l_num_entries                 NUMBER;
58021 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58022 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58023 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58024 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58025 l_recog_line_1                NUMBER;
58026 l_recog_line_2                NUMBER;
58027 
58028 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58029 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58033 
58030 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58031 
58032 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58034 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58035 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58036 
58037 ---------------------------------------------------------------------------------------------------------------
58038 
58039 
58040 --
58041 -- bulk performance
58042 --
58043 l_balance_type_code           VARCHAR2(1);
58044 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58045 l_log_module                  VARCHAR2(240);
58046 
58047 --
58048 -- Upgrade strategy
58049 --
58050 l_actual_upg_option           VARCHAR2(1);
58051 l_enc_upg_option           VARCHAR2(1);
58052 
58053 --
58054 BEGIN
58055 --
58056 IF g_log_enabled THEN
58057       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
58058 END IF;
58059 --
58060 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58061 
58062       trace
58063          (p_msg      => 'BEGIN of AcctLineType_121'
58064          ,p_level    => C_LEVEL_PROCEDURE
58065          ,p_module   => l_log_module);
58066 
58067 END IF;
58068 --
58069 l_component_type             := 'AMB_JLT';
58070 l_component_code             := 'PA_RECEIVER_REVENUE_ADJ';
58071 l_component_type_code        := 'S';
58072 l_component_appl_id          :=  275;
58073 l_amb_context_code           := 'DEFAULT';
58074 l_entity_code                := 'EXPENDITURES';
58075 l_event_class_code           := 'BORROWED_AND_LENT_ADJ';
58076 l_event_type_code            := 'BORROWED_AND_LENT_ADJ_ALL';
58077 l_line_definition_owner_code := 'S';
58078 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
58079 --
58080 l_balance_type_code          := 'A';
58081 l_segment                     := NULL;
58082 l_ccid                        := NULL;
58083 l_adr_transaction_coa_id      := NULL;
58084 l_adr_accounting_coa_id       := NULL;
58085 l_adr_flexfield_segment_code  := NULL;
58086 l_adr_flex_value_set_id       := NULL;
58087 l_adr_value_type_code         := NULL;
58088 l_adr_value_combination_id    := NULL;
58089 l_adr_value_segment_code      := NULL;
58090 
58091 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58092 l_bflow_class_code           := '';    -- 4219869 Business Flow
58093 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58094 l_budgetary_control_flag     := 'N';
58095 
58096 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58097 l_bflow_applied_to_amt       := NULL; -- 5132302
58098 l_entered_amt_idx            := NULL;          -- 4262811
58099 l_accted_amt_idx             := NULL;          -- 4262811
58100 l_acc_rev_flag               := NULL;          -- 4262811
58101 l_accrual_line_num           := NULL;          -- 4262811
58102 l_tmp_amt                    := NULL;          -- 4262811
58103 --
58104  
58105 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58106     l_balance_type_code <> 'B' THEN
58107 IF NVL(p_source_73,'
58108 ') =  'REVENUE_TRANSFER'
58109  THEN 
58110 
58111    --
58112    XLA_AE_LINES_PKG.SetNewLine;
58113 
58114    p_balance_type_code          := l_balance_type_code;
58115    -- set the flag so later we will know whether the gain loss line needs to be created
58116    
58117    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58118      p_actual_flag :='A';
58119    END IF;
58120 
58121    --
58122    -- bulk performance
58123    --
58124    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58125                                       p_header_num   => 0); -- 4262811
58126    --
58127    -- set accounting line options
58128    --
58129    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58130            p_natural_side_code          => 'D'
58131          , p_gain_or_loss_flag          => 'N'
58132          , p_gl_transfer_mode_code      => 'S'
58133          , p_acct_entry_type_code       => 'A'
58134          , p_switch_side_flag           => 'Y'
58135          , p_merge_duplicate_code       => 'N'
58136          );
58137    --
58138    l_acc_rev_natural_side_code := 'C';  -- 4262811
58139    -- 
58140    --
58141    -- set accounting line type info
58142    --
58143    xla_ae_lines_pkg.SetAcctLineType
58144       (p_component_type             => l_component_type
58145       ,p_event_type_code            => l_event_type_code
58146       ,p_line_definition_owner_code => l_line_definition_owner_code
58147       ,p_line_definition_code       => l_line_definition_code
58148       ,p_accounting_line_code       => l_component_code
58149       ,p_accounting_line_type_code  => l_component_type_code
58150       ,p_accounting_line_appl_id    => l_component_appl_id
58151       ,p_amb_context_code           => l_amb_context_code
58152       ,p_entity_code                => l_entity_code
58153       ,p_event_class_code           => l_event_class_code);
58154    --
58155    -- set accounting class
58156    --
58157    xla_ae_lines_pkg.SetAcctClass(
58158            p_accounting_class_code  => 'RECEIVER_REVENUE'
58159          , p_ae_header_id           => l_ae_header_id
58160          );
58161 
58162    --
58163    -- set rounding class
58164    --
58165    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58166                       'RECEIVER_REVENUE';
58167 
58168    --
58169    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58170    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58171    --
58172    -- bulk performance
58176    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58173    --
58174    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58175 
58177       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58178 
58179    -- 4955764
58180    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58181       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58182 
58183    -- 4458381 Public Sector Enh
58184    
58185    --
58186    -- set accounting attributes for the line type
58187    --
58188    l_entered_amt_idx := 22;
58189    l_accted_amt_idx  := 27;
58190    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58191    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
58192    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
58193    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
58194    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
58195    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
58196    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_9);
58197    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
58198    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
58199    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
58200    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
58201    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
58202    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
58203    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
58204    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
58205    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
58206    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
58207    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
58208    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
58209    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
58210    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
58211    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
58212    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_16);
58213    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
58214    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
58215    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
58216    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
58217    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
58218    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
58219    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
58220    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
58221    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
58222    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
58223    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
58224    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
58225    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
58226    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
58227    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
58228    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
58229    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
58230    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
58231    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
58232    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
58233    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
58234    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
58235    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
58236    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
58237    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
58238    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
58239    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
58240    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
58241    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
58242    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
58243    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
58244    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
58245    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
58246    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
58247    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
58248    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
58249    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
58250    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
58251 
58252    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58253    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58254 
58255    ---------------------------------------------------------------------------------------------------------------
58256    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58257    ---------------------------------------------------------------------------------------------------------------
58258    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58259 
58260    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58261    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58262 
58263    IF xla_accounting_cache_pkg.GetValueChar
58264          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58265          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58266    AND l_bflow_method_code = 'PRIOR_ENTRY'
58270        )
58267 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58268    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58269          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58271    THEN
58272          xla_ae_lines_pkg.BflowUpgEntry
58273            (p_business_method_code    => l_bflow_method_code
58274            ,p_business_class_code     => l_bflow_class_code
58275            ,p_balance_type            => l_balance_type_code);
58276    ELSE
58277       NULL;
58278 -- No business flow processing for business flow method of NONE.
58279    END IF;
58280 
58281    --
58282    -- call analytical criteria
58283    --
58284    
58285    --
58286    -- call description
58287    --
58288    -- No description or it is inherited.
58289    --
58290    -- call ADRs
58291    -- Bug 4922099
58292    --
58293    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58294         (NVL(l_actual_upg_option, 'N') = 'O') OR
58295         (NVL(l_enc_upg_option, 'N') = 'O')
58296       )
58297    THEN
58298    NULL;
58299    --
58300    --
58301    
58302   l_ccid := AcctDerRule_18(
58303            p_application_id           => p_application_id
58304          , p_ae_header_id             => l_ae_header_id 
58305 , p_source_5 => p_source_5
58306 , p_source_11 => p_source_11
58307          , x_transaction_coa_id       => l_adr_transaction_coa_id
58308          , x_accounting_coa_id        => l_adr_accounting_coa_id
58309          , x_value_type_code          => l_adr_value_type_code
58310          , p_side                     => 'NA'
58311    );
58312 
58313    xla_ae_lines_pkg.set_ccid(
58314     p_code_combination_id          => l_ccid
58315   , p_value_type_code              => l_adr_value_type_code
58316   , p_transaction_coa_id           => l_adr_transaction_coa_id
58317   , p_accounting_coa_id            => l_adr_accounting_coa_id
58318   , p_adr_code                     => 'PA_RCVR_COST_REV_ADJ_ACCT_RULE'
58319   , p_adr_type_code                => 'S'
58320   , p_component_type               => l_component_type
58321   , p_component_code               => l_component_code
58322   , p_component_type_code          => l_component_type_code
58323   , p_component_appl_id            => l_component_appl_id
58324   , p_amb_context_code             => l_amb_context_code
58325   , p_side                         => 'NA'
58326   );
58327 
58328 
58329    --
58330    --
58331    END IF;
58332    --
58333    -- Bug 4922099
58334    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58335           (NVL(l_enc_upg_option, 'N') = 'O')
58336         ) AND
58337         (l_bflow_method_code = 'PRIOR_ENTRY')
58338       )
58339    THEN
58340       IF
58341       --
58342       1 = 2
58343       --
58344       THEN
58345       xla_accounting_err_pkg.build_message
58346                                     (p_appli_s_name            => 'XLA'
58347                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58348                                     ,p_token_1                 => 'LINE_NUMBER'
58349                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58350                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58351                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58352                                                                              l_component_type
58353                                                                             ,l_component_code
58354                                                                             ,l_component_type_code
58355                                                                             ,l_component_appl_id
58356                                                                             ,l_amb_context_code
58357                                                                             ,l_entity_code
58358                                                                             ,l_event_class_code
58359                                                                            )
58360                                     ,p_token_3                 => 'OWNER'
58361                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58362                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58363                                                                           ,p_lookup_code    => l_component_type_code
58364                                                                          )
58365                                     ,p_token_4                 => 'PRODUCT_NAME'
58366                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58367                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58368                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58369                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58370                                     ,p_ae_header_id            =>  NULL
58371                                        );
58372 
58373         IF (C_LEVEL_ERROR>= g_log_level) THEN
58374                  trace
58375                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58376                       ,p_level    => C_LEVEL_ERROR
58377                       ,p_module   => l_log_module);
58378         END IF;
58379       END IF;
58380    END IF;
58381    --
58382    --
58383    ------------------------------------------------------------------------------------------------
58384    -- 4219869 Business Flow
58385    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58386    -- Prior Entry.  Currently, the following code is always generated.
58390    ------------------------------------------------------------------------------------
58387    ------------------------------------------------------------------------------------------------
58388    XLA_AE_LINES_PKG.ValidateCurrentLine;
58389 
58391    -- 4219869 Business Flow
58392    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58393    ------------------------------------------------------------------------------------
58394    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58395 
58396    ----------------------------------------------------------------------------------
58397    -- 4219869 Business Flow
58398    -- Update journal entry status -- Need to generate this within IF <condition>
58399    ----------------------------------------------------------------------------------
58400    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58401          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58402          ,p_balance_type_code => l_balance_type_code
58403          );
58404 
58405    -------------------------------------------------------------------------------------------
58406    -- 4262811 - Generate the Accrual Reversal lines
58407    -------------------------------------------------------------------------------------------
58408    BEGIN
58409       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58410                               (g_array_event(p_event_id).array_value_num('header_index'));
58411       IF l_acc_rev_flag IS NULL THEN
58412          l_acc_rev_flag := 'N';
58413       END IF;
58414    EXCEPTION
58415       WHEN OTHERS THEN
58416          l_acc_rev_flag := 'N';
58417    END;
58418    --
58419    IF (l_acc_rev_flag = 'Y') THEN
58420 
58421        -- 4645092  ------------------------------------------------------------------------------
58422        -- To allow MPA report to determine if it should generate report process
58423        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58424        ------------------------------------------------------------------------------------------
58425 
58426        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58427        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58428 
58429        --
58430        -- Update the line information that should be overwritten
58431        --
58432        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58433                                          p_header_num   => 1);
58434        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58435 
58436        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58437 
58438        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58439           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58440        END IF;
58441 
58442       --
58443       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58444       --
58445       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58446           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58447       ELSE
58448           ---------------------------------------------------------------------------------------------------
58449           -- 4262811a Switch Sign
58450           ---------------------------------------------------------------------------------------------------
58451           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58452           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58453                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58454           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58455                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58456           -- 5132302
58457           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58458                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58459 
58460       END IF;
58461 
58462       -- 4955764
58463       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58464       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58465 
58466 
58467       XLA_AE_LINES_PKG.ValidateCurrentLine;
58468       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58469 
58470       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58471                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58472                ,p_balance_type_code => l_balance_type_code);
58473 
58474    END IF;
58475 
58476    -----------------------------------------------------------------------------------------
58477    -- 4262811 Multiperiod Accounting
58478    -----------------------------------------------------------------------------------------
58479      -- No MPA option is assigned.
58480 
58481 
58482 END IF;
58483 END IF;
58484 --
58485 
58486 --
58487 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58488    trace
58489       (p_msg      => 'END of AcctLineType_121'
58490       ,p_level    => C_LEVEL_PROCEDURE
58491       ,p_module   => l_log_module);
58492 END IF;
58493 --
58494 EXCEPTION
58495   WHEN xla_exceptions_pkg.application_exception THEN
58496       RAISE;
58497   WHEN OTHERS THEN
58498        xla_exceptions_pkg.raise_message
58499            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_121');
58500 END AcctLineType_121;
58501 --
58502 
58503 ---------------------------------------
58504 --
58505 -- PRIVATE FUNCTION
58509 PROCEDURE AcctLineType_122 (
58506 --         AcctLineType_122
58507 --
58508 ---------------------------------------
58510   p_application_id        IN NUMBER
58511  ,p_event_id              IN NUMBER
58512  ,p_calculate_acctd_flag  IN VARCHAR2
58513  ,p_calculate_g_l_flag    IN VARCHAR2
58514  ,p_actual_flag           IN OUT VARCHAR2
58515  ,p_balance_type_code     OUT VARCHAR2
58516  ,p_gain_or_loss_ref      OUT VARCHAR2
58517  
58518 --Allow Account Override Flag
58519  , p_source_5            IN VARCHAR2
58520 --Provider Cost Destination CCID
58521  , p_source_12            IN NUMBER
58522 --Adjustment Provider Cost Destination CCID
58523  , p_source_13            IN NUMBER
58524 --Provider Cost Source CCID
58525  , p_source_14            IN NUMBER
58526 --Reversing Line Flag
58527  , p_source_23            IN VARCHAR2
58528 --Actual Upgrade Credit Accounting Class
58529  , p_source_24            IN VARCHAR2
58530 --Entered Currency Code
58531  , p_source_26            IN VARCHAR2
58532 --Exchange Rate Date
58533  , p_source_28            IN DATE
58534 --Exchange Rate
58535  , p_source_29            IN NUMBER
58536 --Exchange Rate Type
58537  , p_source_30            IN VARCHAR2
58538 --Actual Upgrade Debit Accounting Class
58539  , p_source_31            IN VARCHAR2
58540 --Use Actuals Upgrade Attributes Flag
58541  , p_source_32            IN VARCHAR2
58542 --Expenditure Item ID
58543  , p_source_33            IN NUMBER
58544 --Cost Distribution Line Number
58545  , p_source_34            IN NUMBER
58546 --Line Type
58547  , p_source_35            IN VARCHAR2
58548  , p_source_35_meaning    IN VARCHAR2
58549 --Reversed Line Number
58550  , p_source_36            IN NUMBER
58551 --Entered Amount
58552  , p_source_42            IN NUMBER
58553 --Accounted Amount
58554  , p_source_43            IN NUMBER
58555 )
58556 IS
58557 
58558 l_component_type              VARCHAR2(80);
58559 l_component_code              VARCHAR2(30);
58560 l_component_type_code         VARCHAR2(1);
58561 l_component_appl_id           INTEGER;
58562 l_amb_context_code            VARCHAR2(30);
58563 l_entity_code                 VARCHAR2(30);
58564 l_event_class_code            VARCHAR2(30);
58565 l_ae_header_id                NUMBER;
58566 l_event_type_code             VARCHAR2(30);
58567 l_line_definition_code        VARCHAR2(30);
58568 l_line_definition_owner_code  VARCHAR2(1);
58569 --
58570 -- adr variables
58571 l_segment                     VARCHAR2(30);
58572 l_ccid                        NUMBER;
58573 l_adr_transaction_coa_id      NUMBER;
58574 l_adr_accounting_coa_id       NUMBER;
58575 l_adr_flexfield_segment_code  VARCHAR2(30);
58576 l_adr_flex_value_set_id       NUMBER;
58577 l_adr_value_type_code         VARCHAR2(30);
58578 l_adr_value_combination_id    NUMBER;
58579 l_adr_value_segment_code      VARCHAR2(30);
58580 
58581 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58582 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58583 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58584 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58585 
58586 -- 4262811 Variables ------------------------------------------------------------------------------------------
58587 l_entered_amt_idx             NUMBER;
58588 l_accted_amt_idx              NUMBER;
58589 l_acc_rev_flag                VARCHAR2(1);
58590 l_accrual_line_num            NUMBER;
58591 l_tmp_amt                     NUMBER;
58592 l_acc_rev_natural_side_code   VARCHAR2(1);
58593 
58594 l_num_entries                 NUMBER;
58595 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58596 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58597 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58598 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58599 l_recog_line_1                NUMBER;
58600 l_recog_line_2                NUMBER;
58601 
58602 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58603 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58604 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58605 
58606 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58607 
58608 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58609 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58610 
58611 ---------------------------------------------------------------------------------------------------------------
58612 
58613 
58614 --
58615 -- bulk performance
58616 --
58617 l_balance_type_code           VARCHAR2(1);
58618 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58619 l_log_module                  VARCHAR2(240);
58620 
58621 --
58622 -- Upgrade strategy
58623 --
58624 l_actual_upg_option           VARCHAR2(1);
58625 l_enc_upg_option           VARCHAR2(1);
58626 
58627 --
58628 BEGIN
58629 --
58630 IF g_log_enabled THEN
58631       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
58632 END IF;
58633 --
58634 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58635 
58636       trace
58637          (p_msg      => 'BEGIN of AcctLineType_122'
58638          ,p_level    => C_LEVEL_PROCEDURE
58639          ,p_module   => l_log_module);
58640 
58641 END IF;
58642 --
58643 l_component_type             := 'AMB_JLT';
58644 l_component_code             := 'PA_RECLASS_DEST';
58645 l_component_type_code        := 'S';
58646 l_component_appl_id          :=  275;
58647 l_amb_context_code           := 'DEFAULT';
58648 l_entity_code                := 'EXPENDITURES';
58649 l_event_class_code           := 'PRVDR_RECVR_RECLASS';
58653 --
58650 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ALL';
58651 l_line_definition_owner_code := 'S';
58652 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
58654 l_balance_type_code          := 'A';
58655 l_segment                     := NULL;
58656 l_ccid                        := NULL;
58657 l_adr_transaction_coa_id      := NULL;
58658 l_adr_accounting_coa_id       := NULL;
58659 l_adr_flexfield_segment_code  := NULL;
58660 l_adr_flex_value_set_id       := NULL;
58661 l_adr_value_type_code         := NULL;
58662 l_adr_value_combination_id    := NULL;
58663 l_adr_value_segment_code      := NULL;
58664 
58665 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58666 l_bflow_class_code           := '';    -- 4219869 Business Flow
58667 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58668 l_budgetary_control_flag     := 'N';
58669 
58670 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58671 l_bflow_applied_to_amt       := NULL; -- 5132302
58672 l_entered_amt_idx            := NULL;          -- 4262811
58673 l_accted_amt_idx             := NULL;          -- 4262811
58674 l_acc_rev_flag               := NULL;          -- 4262811
58675 l_accrual_line_num           := NULL;          -- 4262811
58676 l_tmp_amt                    := NULL;          -- 4262811
58677 --
58678  
58679 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58680     l_balance_type_code <> 'B' THEN
58681 
58682    --
58683    XLA_AE_LINES_PKG.SetNewLine;
58684 
58685    p_balance_type_code          := l_balance_type_code;
58686    -- set the flag so later we will know whether the gain loss line needs to be created
58687    
58688    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58689      p_actual_flag :='A';
58690    END IF;
58691 
58692    --
58693    -- bulk performance
58694    --
58695    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58696                                       p_header_num   => 0); -- 4262811
58697    --
58698    -- set accounting line options
58699    --
58700    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58701            p_natural_side_code          => 'D'
58702          , p_gain_or_loss_flag          => 'N'
58703          , p_gl_transfer_mode_code      => 'S'
58704          , p_acct_entry_type_code       => 'A'
58705          , p_switch_side_flag           => 'Y'
58706          , p_merge_duplicate_code       => 'N'
58707          );
58708    --
58709    l_acc_rev_natural_side_code := 'C';  -- 4262811
58710    -- 
58711    --
58712    -- set accounting line type info
58713    --
58714    xla_ae_lines_pkg.SetAcctLineType
58715       (p_component_type             => l_component_type
58716       ,p_event_type_code            => l_event_type_code
58717       ,p_line_definition_owner_code => l_line_definition_owner_code
58718       ,p_line_definition_code       => l_line_definition_code
58719       ,p_accounting_line_code       => l_component_code
58720       ,p_accounting_line_type_code  => l_component_type_code
58721       ,p_accounting_line_appl_id    => l_component_appl_id
58722       ,p_amb_context_code           => l_amb_context_code
58723       ,p_entity_code                => l_entity_code
58724       ,p_event_class_code           => l_event_class_code);
58725    --
58726    -- set accounting class
58727    --
58728    xla_ae_lines_pkg.SetAcctClass(
58729            p_accounting_class_code  => 'RECLASS_DESTINATION'
58730          , p_ae_header_id           => l_ae_header_id
58731          );
58732 
58733    --
58734    -- set rounding class
58735    --
58736    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58737                       'RECLASS_DESTINATION';
58738 
58739    --
58740    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58741    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58742    --
58743    -- bulk performance
58744    --
58745    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58746 
58747    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58748       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58749 
58750    -- 4955764
58751    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58752       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58753 
58754    -- 4458381 Public Sector Enh
58755    
58756    --
58757    -- set accounting attributes for the line type
58758    --
58759    l_entered_amt_idx := 22;
58760    l_accted_amt_idx  := 27;
58761    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58762    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
58763    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
58764    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
58765    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
58766    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
58767    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_14);
58768    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
58769    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
58770    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
58771    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
58772    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
58773    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
58774    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
58775    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
58776    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
58780    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
58777    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
58778    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
58779    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
58781    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
58782    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
58783    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_12);
58784    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
58785    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
58786    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
58787    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
58788    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
58789    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
58790    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
58791    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
58792    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
58793    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
58794    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
58795    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
58796    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
58797    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
58798    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
58799    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
58800    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
58801    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
58802    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
58803    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
58804    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
58805    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
58806    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
58807    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
58808    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
58809    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
58810    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
58811    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
58812    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
58813    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
58814    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
58815    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
58816    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
58817    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
58818    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
58819    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
58820    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
58821    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
58822 
58823    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58824    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58825 
58826    ---------------------------------------------------------------------------------------------------------------
58827    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58828    ---------------------------------------------------------------------------------------------------------------
58829    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58830 
58831    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58832    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58833 
58834    IF xla_accounting_cache_pkg.GetValueChar
58835          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58836          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58837    AND l_bflow_method_code = 'PRIOR_ENTRY'
58838 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58839    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58840          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58841        )
58842    THEN
58843          xla_ae_lines_pkg.BflowUpgEntry
58844            (p_business_method_code    => l_bflow_method_code
58845            ,p_business_class_code     => l_bflow_class_code
58846            ,p_balance_type            => l_balance_type_code);
58847    ELSE
58848       NULL;
58849 -- No business flow processing for business flow method of NONE.
58850    END IF;
58851 
58852    --
58853    -- call analytical criteria
58854    --
58855    
58856    --
58857    -- call description
58858    --
58859    -- No description or it is inherited.
58860    --
58861    -- call ADRs
58862    -- Bug 4922099
58863    --
58864    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58865         (NVL(l_actual_upg_option, 'N') = 'O') OR
58866         (NVL(l_enc_upg_option, 'N') = 'O')
58867       )
58868    THEN
58869    NULL;
58870    --
58871    --
58872    
58873   l_ccid := AcctDerRule_19(
58874            p_application_id           => p_application_id
58875          , p_ae_header_id             => l_ae_header_id 
58876 , p_source_5 => p_source_5
58877 , p_source_12 => p_source_12
58878 , p_source_13 => p_source_13
58879          , x_transaction_coa_id       => l_adr_transaction_coa_id
58880          , x_accounting_coa_id        => l_adr_accounting_coa_id
58881          , x_value_type_code          => l_adr_value_type_code
58882          , p_side                     => 'NA'
58883    );
58884 
58885    xla_ae_lines_pkg.set_ccid(
58886     p_code_combination_id          => l_ccid
58890   , p_adr_code                     => 'PA_RECLASS_DEST_ACCT_RULE'
58887   , p_value_type_code              => l_adr_value_type_code
58888   , p_transaction_coa_id           => l_adr_transaction_coa_id
58889   , p_accounting_coa_id            => l_adr_accounting_coa_id
58891   , p_adr_type_code                => 'S'
58892   , p_component_type               => l_component_type
58893   , p_component_code               => l_component_code
58894   , p_component_type_code          => l_component_type_code
58895   , p_component_appl_id            => l_component_appl_id
58896   , p_amb_context_code             => l_amb_context_code
58897   , p_side                         => 'NA'
58898   );
58899 
58900 
58901    --
58902    --
58903    END IF;
58904    --
58905    -- Bug 4922099
58906    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58907           (NVL(l_enc_upg_option, 'N') = 'O')
58908         ) AND
58909         (l_bflow_method_code = 'PRIOR_ENTRY')
58910       )
58911    THEN
58912       IF
58913       --
58914       1 = 2
58915       --
58916       THEN
58917       xla_accounting_err_pkg.build_message
58918                                     (p_appli_s_name            => 'XLA'
58919                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58920                                     ,p_token_1                 => 'LINE_NUMBER'
58921                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58922                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58923                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58924                                                                              l_component_type
58925                                                                             ,l_component_code
58926                                                                             ,l_component_type_code
58927                                                                             ,l_component_appl_id
58928                                                                             ,l_amb_context_code
58929                                                                             ,l_entity_code
58930                                                                             ,l_event_class_code
58931                                                                            )
58932                                     ,p_token_3                 => 'OWNER'
58933                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58934                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58935                                                                           ,p_lookup_code    => l_component_type_code
58936                                                                          )
58937                                     ,p_token_4                 => 'PRODUCT_NAME'
58938                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58939                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58940                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58941                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58942                                     ,p_ae_header_id            =>  NULL
58943                                        );
58944 
58945         IF (C_LEVEL_ERROR>= g_log_level) THEN
58946                  trace
58947                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58948                       ,p_level    => C_LEVEL_ERROR
58949                       ,p_module   => l_log_module);
58950         END IF;
58951       END IF;
58952    END IF;
58953    --
58954    --
58955    ------------------------------------------------------------------------------------------------
58956    -- 4219869 Business Flow
58957    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58958    -- Prior Entry.  Currently, the following code is always generated.
58959    ------------------------------------------------------------------------------------------------
58960    XLA_AE_LINES_PKG.ValidateCurrentLine;
58961 
58962    ------------------------------------------------------------------------------------
58963    -- 4219869 Business Flow
58964    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58965    ------------------------------------------------------------------------------------
58966    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58967 
58968    ----------------------------------------------------------------------------------
58969    -- 4219869 Business Flow
58970    -- Update journal entry status -- Need to generate this within IF <condition>
58971    ----------------------------------------------------------------------------------
58972    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58973          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58974          ,p_balance_type_code => l_balance_type_code
58975          );
58976 
58977    -------------------------------------------------------------------------------------------
58978    -- 4262811 - Generate the Accrual Reversal lines
58979    -------------------------------------------------------------------------------------------
58980    BEGIN
58981       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58982                               (g_array_event(p_event_id).array_value_num('header_index'));
58983       IF l_acc_rev_flag IS NULL THEN
58984          l_acc_rev_flag := 'N';
58985       END IF;
58986    EXCEPTION
58987       WHEN OTHERS THEN
58988          l_acc_rev_flag := 'N';
58989    END;
58990    --
58991    IF (l_acc_rev_flag = 'Y') THEN
58992 
58996        ------------------------------------------------------------------------------------------
58993        -- 4645092  ------------------------------------------------------------------------------
58994        -- To allow MPA report to determine if it should generate report process
58995        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58997 
58998        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58999        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59000 
59001        --
59002        -- Update the line information that should be overwritten
59003        --
59004        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59005                                          p_header_num   => 1);
59006        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59007 
59008        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59009 
59010        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59011           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59012        END IF;
59013 
59014       --
59015       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59016       --
59017       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59018           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59019       ELSE
59020           ---------------------------------------------------------------------------------------------------
59021           -- 4262811a Switch Sign
59022           ---------------------------------------------------------------------------------------------------
59023           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59024           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59025                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59026           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59027                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59028           -- 5132302
59029           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59030                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59031 
59032       END IF;
59033 
59034       -- 4955764
59035       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59036       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59037 
59038 
59039       XLA_AE_LINES_PKG.ValidateCurrentLine;
59040       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59041 
59042       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59043                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59044                ,p_balance_type_code => l_balance_type_code);
59045 
59046    END IF;
59047 
59048    -----------------------------------------------------------------------------------------
59049    -- 4262811 Multiperiod Accounting
59050    -----------------------------------------------------------------------------------------
59051      -- No MPA option is assigned.
59052 
59053 
59054 END IF;
59055 --
59056 
59057 --
59058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59059    trace
59060       (p_msg      => 'END of AcctLineType_122'
59061       ,p_level    => C_LEVEL_PROCEDURE
59062       ,p_module   => l_log_module);
59063 END IF;
59064 --
59065 EXCEPTION
59066   WHEN xla_exceptions_pkg.application_exception THEN
59067       RAISE;
59068   WHEN OTHERS THEN
59069        xla_exceptions_pkg.raise_message
59070            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_122');
59071 END AcctLineType_122;
59072 --
59073 
59074 ---------------------------------------
59075 --
59076 -- PRIVATE FUNCTION
59077 --         AcctLineType_123
59078 --
59079 ---------------------------------------
59080 PROCEDURE AcctLineType_123 (
59081   p_application_id        IN NUMBER
59082  ,p_event_id              IN NUMBER
59083  ,p_calculate_acctd_flag  IN VARCHAR2
59084  ,p_calculate_g_l_flag    IN VARCHAR2
59085  ,p_actual_flag           IN OUT VARCHAR2
59086  ,p_balance_type_code     OUT VARCHAR2
59087  ,p_gain_or_loss_ref      OUT VARCHAR2
59088  
59089 --Allow Account Override Flag
59090  , p_source_5            IN VARCHAR2
59091 --Provider Cost Destination CCID
59092  , p_source_12            IN NUMBER
59093 --Adjustment Provider Cost Destination CCID
59094  , p_source_13            IN NUMBER
59095 --Provider Cost Source CCID
59096  , p_source_14            IN NUMBER
59097 --Reversing Line Flag
59098  , p_source_23            IN VARCHAR2
59099 --Actual Upgrade Credit Accounting Class
59100  , p_source_24            IN VARCHAR2
59101 --Entered Currency Code
59102  , p_source_26            IN VARCHAR2
59103 --Exchange Rate Date
59104  , p_source_28            IN DATE
59105 --Exchange Rate
59106  , p_source_29            IN NUMBER
59107 --Exchange Rate Type
59108  , p_source_30            IN VARCHAR2
59109 --Actual Upgrade Debit Accounting Class
59110  , p_source_31            IN VARCHAR2
59111 --Use Actuals Upgrade Attributes Flag
59112  , p_source_32            IN VARCHAR2
59113 --Expenditure Item ID
59114  , p_source_33            IN NUMBER
59115 --Cost Distribution Line Number
59116  , p_source_34            IN NUMBER
59117 --Line Type
59118  , p_source_35            IN VARCHAR2
59119  , p_source_35_meaning    IN VARCHAR2
59120 --Reversed Line Number
59121  , p_source_36            IN NUMBER
59125  , p_source_43            IN NUMBER
59122 --Entered Amount
59123  , p_source_42            IN NUMBER
59124 --Accounted Amount
59126 )
59127 IS
59128 
59129 l_component_type              VARCHAR2(80);
59130 l_component_code              VARCHAR2(30);
59131 l_component_type_code         VARCHAR2(1);
59132 l_component_appl_id           INTEGER;
59133 l_amb_context_code            VARCHAR2(30);
59134 l_entity_code                 VARCHAR2(30);
59135 l_event_class_code            VARCHAR2(30);
59136 l_ae_header_id                NUMBER;
59137 l_event_type_code             VARCHAR2(30);
59138 l_line_definition_code        VARCHAR2(30);
59139 l_line_definition_owner_code  VARCHAR2(1);
59140 --
59141 -- adr variables
59142 l_segment                     VARCHAR2(30);
59143 l_ccid                        NUMBER;
59144 l_adr_transaction_coa_id      NUMBER;
59145 l_adr_accounting_coa_id       NUMBER;
59146 l_adr_flexfield_segment_code  VARCHAR2(30);
59147 l_adr_flex_value_set_id       NUMBER;
59148 l_adr_value_type_code         VARCHAR2(30);
59149 l_adr_value_combination_id    NUMBER;
59150 l_adr_value_segment_code      VARCHAR2(30);
59151 
59152 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59153 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59154 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59155 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59156 
59157 -- 4262811 Variables ------------------------------------------------------------------------------------------
59158 l_entered_amt_idx             NUMBER;
59159 l_accted_amt_idx              NUMBER;
59160 l_acc_rev_flag                VARCHAR2(1);
59161 l_accrual_line_num            NUMBER;
59162 l_tmp_amt                     NUMBER;
59163 l_acc_rev_natural_side_code   VARCHAR2(1);
59164 
59165 l_num_entries                 NUMBER;
59166 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59167 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59168 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59169 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59170 l_recog_line_1                NUMBER;
59171 l_recog_line_2                NUMBER;
59172 
59173 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59174 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59175 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59176 
59177 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59178 
59179 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59180 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59181 
59182 ---------------------------------------------------------------------------------------------------------------
59183 
59184 
59185 --
59186 -- bulk performance
59187 --
59188 l_balance_type_code           VARCHAR2(1);
59189 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59190 l_log_module                  VARCHAR2(240);
59191 
59192 --
59193 -- Upgrade strategy
59194 --
59195 l_actual_upg_option           VARCHAR2(1);
59196 l_enc_upg_option           VARCHAR2(1);
59197 
59198 --
59199 BEGIN
59200 --
59201 IF g_log_enabled THEN
59202       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
59203 END IF;
59204 --
59205 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59206 
59207       trace
59208          (p_msg      => 'BEGIN of AcctLineType_123'
59209          ,p_level    => C_LEVEL_PROCEDURE
59210          ,p_module   => l_log_module);
59211 
59212 END IF;
59213 --
59214 l_component_type             := 'AMB_JLT';
59215 l_component_code             := 'PA_RECLASS_DEST_ADJ';
59216 l_component_type_code        := 'S';
59217 l_component_appl_id          :=  275;
59218 l_amb_context_code           := 'DEFAULT';
59219 l_entity_code                := 'EXPENDITURES';
59220 l_event_class_code           := 'PRVDR_RECVR_RECLASS_ADJ';
59221 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
59222 l_line_definition_owner_code := 'S';
59223 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
59224 --
59225 l_balance_type_code          := 'A';
59226 l_segment                     := NULL;
59227 l_ccid                        := NULL;
59228 l_adr_transaction_coa_id      := NULL;
59229 l_adr_accounting_coa_id       := NULL;
59230 l_adr_flexfield_segment_code  := NULL;
59231 l_adr_flex_value_set_id       := NULL;
59232 l_adr_value_type_code         := NULL;
59233 l_adr_value_combination_id    := NULL;
59234 l_adr_value_segment_code      := NULL;
59235 
59236 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59237 l_bflow_class_code           := '';    -- 4219869 Business Flow
59238 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59239 l_budgetary_control_flag     := 'N';
59240 
59241 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59242 l_bflow_applied_to_amt       := NULL; -- 5132302
59243 l_entered_amt_idx            := NULL;          -- 4262811
59244 l_accted_amt_idx             := NULL;          -- 4262811
59245 l_acc_rev_flag               := NULL;          -- 4262811
59246 l_accrual_line_num           := NULL;          -- 4262811
59247 l_tmp_amt                    := NULL;          -- 4262811
59248 --
59249  
59250 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59251     l_balance_type_code <> 'B' THEN
59252 
59253    --
59254    XLA_AE_LINES_PKG.SetNewLine;
59255 
59256    p_balance_type_code          := l_balance_type_code;
59257    -- set the flag so later we will know whether the gain loss line needs to be created
59258    
59262 
59259    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59260      p_actual_flag :='A';
59261    END IF;
59263    --
59264    -- bulk performance
59265    --
59266    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59267                                       p_header_num   => 0); -- 4262811
59268    --
59269    -- set accounting line options
59270    --
59271    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59272            p_natural_side_code          => 'D'
59273          , p_gain_or_loss_flag          => 'N'
59274          , p_gl_transfer_mode_code      => 'S'
59275          , p_acct_entry_type_code       => 'A'
59276          , p_switch_side_flag           => 'Y'
59277          , p_merge_duplicate_code       => 'N'
59278          );
59279    --
59280    l_acc_rev_natural_side_code := 'C';  -- 4262811
59281    -- 
59282    --
59283    -- set accounting line type info
59284    --
59285    xla_ae_lines_pkg.SetAcctLineType
59286       (p_component_type             => l_component_type
59287       ,p_event_type_code            => l_event_type_code
59288       ,p_line_definition_owner_code => l_line_definition_owner_code
59289       ,p_line_definition_code       => l_line_definition_code
59290       ,p_accounting_line_code       => l_component_code
59291       ,p_accounting_line_type_code  => l_component_type_code
59292       ,p_accounting_line_appl_id    => l_component_appl_id
59293       ,p_amb_context_code           => l_amb_context_code
59294       ,p_entity_code                => l_entity_code
59295       ,p_event_class_code           => l_event_class_code);
59296    --
59297    -- set accounting class
59298    --
59299    xla_ae_lines_pkg.SetAcctClass(
59300            p_accounting_class_code  => 'RECLASS_DESTINATION'
59301          , p_ae_header_id           => l_ae_header_id
59302          );
59303 
59304    --
59305    -- set rounding class
59306    --
59307    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59308                       'RECLASS_DESTINATION';
59309 
59310    --
59311    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59312    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59313    --
59314    -- bulk performance
59315    --
59316    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59317 
59318    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59319       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59320 
59321    -- 4955764
59322    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59323       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59324 
59325    -- 4458381 Public Sector Enh
59326    
59327    --
59328    -- set accounting attributes for the line type
59329    --
59330    l_entered_amt_idx := 22;
59331    l_accted_amt_idx  := 27;
59332    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59333    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
59334    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
59335    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
59336    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
59337    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
59338    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_14);
59339    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
59340    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
59341    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
59342    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
59343    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
59344    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
59345    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
59346    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
59347    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
59348    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
59349    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
59350    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
59351    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
59352    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
59353    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
59354    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_12);
59355    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
59356    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
59357    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
59358    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
59359    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
59360    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
59361    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
59362    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
59363    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
59364    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
59365    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
59366    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
59367    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
59368    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
59369    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
59370    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
59371    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
59372    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
59376    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
59373    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
59374    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
59375    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
59377    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
59378    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
59379    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
59380    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
59381    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
59382    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
59383    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
59384    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
59385    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
59386    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
59387    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
59388    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
59389    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
59390    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
59391    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
59392    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
59393 
59394    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59395    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59396 
59397    ---------------------------------------------------------------------------------------------------------------
59398    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59399    ---------------------------------------------------------------------------------------------------------------
59400    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59401 
59402    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59403    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59404 
59405    IF xla_accounting_cache_pkg.GetValueChar
59406          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59407          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59408    AND l_bflow_method_code = 'PRIOR_ENTRY'
59409 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59410    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59411          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59412        )
59413    THEN
59414          xla_ae_lines_pkg.BflowUpgEntry
59415            (p_business_method_code    => l_bflow_method_code
59416            ,p_business_class_code     => l_bflow_class_code
59417            ,p_balance_type            => l_balance_type_code);
59418    ELSE
59419       NULL;
59420 -- No business flow processing for business flow method of NONE.
59421    END IF;
59422 
59423    --
59424    -- call analytical criteria
59425    --
59426    
59427    --
59428    -- call description
59429    --
59430    -- No description or it is inherited.
59431    --
59432    -- call ADRs
59433    -- Bug 4922099
59434    --
59435    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59436         (NVL(l_actual_upg_option, 'N') = 'O') OR
59437         (NVL(l_enc_upg_option, 'N') = 'O')
59438       )
59439    THEN
59440    NULL;
59441    --
59442    --
59443    
59444   l_ccid := AcctDerRule_20(
59445            p_application_id           => p_application_id
59446          , p_ae_header_id             => l_ae_header_id 
59447 , p_source_5 => p_source_5
59448 , p_source_13 => p_source_13
59449          , x_transaction_coa_id       => l_adr_transaction_coa_id
59450          , x_accounting_coa_id        => l_adr_accounting_coa_id
59451          , x_value_type_code          => l_adr_value_type_code
59452          , p_side                     => 'NA'
59453    );
59454 
59455    xla_ae_lines_pkg.set_ccid(
59456     p_code_combination_id          => l_ccid
59457   , p_value_type_code              => l_adr_value_type_code
59458   , p_transaction_coa_id           => l_adr_transaction_coa_id
59459   , p_accounting_coa_id            => l_adr_accounting_coa_id
59460   , p_adr_code                     => 'PA_RECLASS_DEST_ADJ_ACCT_RULE'
59461   , p_adr_type_code                => 'S'
59462   , p_component_type               => l_component_type
59463   , p_component_code               => l_component_code
59464   , p_component_type_code          => l_component_type_code
59465   , p_component_appl_id            => l_component_appl_id
59466   , p_amb_context_code             => l_amb_context_code
59467   , p_side                         => 'NA'
59468   );
59469 
59470 
59471    --
59472    --
59473    END IF;
59474    --
59475    -- Bug 4922099
59476    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59477           (NVL(l_enc_upg_option, 'N') = 'O')
59478         ) AND
59479         (l_bflow_method_code = 'PRIOR_ENTRY')
59480       )
59481    THEN
59482       IF
59483       --
59484       1 = 2
59485       --
59486       THEN
59487       xla_accounting_err_pkg.build_message
59488                                     (p_appli_s_name            => 'XLA'
59489                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59490                                     ,p_token_1                 => 'LINE_NUMBER'
59491                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59492                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59493                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59497                                                                             ,l_component_appl_id
59494                                                                              l_component_type
59495                                                                             ,l_component_code
59496                                                                             ,l_component_type_code
59498                                                                             ,l_amb_context_code
59499                                                                             ,l_entity_code
59500                                                                             ,l_event_class_code
59501                                                                            )
59502                                     ,p_token_3                 => 'OWNER'
59503                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59504                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59505                                                                           ,p_lookup_code    => l_component_type_code
59506                                                                          )
59507                                     ,p_token_4                 => 'PRODUCT_NAME'
59508                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59509                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59510                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59511                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59512                                     ,p_ae_header_id            =>  NULL
59513                                        );
59514 
59515         IF (C_LEVEL_ERROR>= g_log_level) THEN
59516                  trace
59517                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59518                       ,p_level    => C_LEVEL_ERROR
59519                       ,p_module   => l_log_module);
59520         END IF;
59521       END IF;
59522    END IF;
59523    --
59524    --
59525    ------------------------------------------------------------------------------------------------
59526    -- 4219869 Business Flow
59527    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59528    -- Prior Entry.  Currently, the following code is always generated.
59529    ------------------------------------------------------------------------------------------------
59530    XLA_AE_LINES_PKG.ValidateCurrentLine;
59531 
59532    ------------------------------------------------------------------------------------
59533    -- 4219869 Business Flow
59534    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59535    ------------------------------------------------------------------------------------
59536    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59537 
59538    ----------------------------------------------------------------------------------
59539    -- 4219869 Business Flow
59540    -- Update journal entry status -- Need to generate this within IF <condition>
59541    ----------------------------------------------------------------------------------
59542    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59543          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59544          ,p_balance_type_code => l_balance_type_code
59545          );
59546 
59547    -------------------------------------------------------------------------------------------
59548    -- 4262811 - Generate the Accrual Reversal lines
59549    -------------------------------------------------------------------------------------------
59550    BEGIN
59551       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59552                               (g_array_event(p_event_id).array_value_num('header_index'));
59553       IF l_acc_rev_flag IS NULL THEN
59554          l_acc_rev_flag := 'N';
59555       END IF;
59556    EXCEPTION
59557       WHEN OTHERS THEN
59558          l_acc_rev_flag := 'N';
59559    END;
59560    --
59561    IF (l_acc_rev_flag = 'Y') THEN
59562 
59563        -- 4645092  ------------------------------------------------------------------------------
59564        -- To allow MPA report to determine if it should generate report process
59565        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59566        ------------------------------------------------------------------------------------------
59567 
59568        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59569        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59570 
59571        --
59572        -- Update the line information that should be overwritten
59573        --
59574        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59575                                          p_header_num   => 1);
59576        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59577 
59578        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59579 
59580        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59581           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59582        END IF;
59583 
59584       --
59585       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59586       --
59587       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59588           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59589       ELSE
59590           ---------------------------------------------------------------------------------------------------
59591           -- 4262811a Switch Sign
59595                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59592           ---------------------------------------------------------------------------------------------------
59593           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59594           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59596           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59597                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59598           -- 5132302
59599           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59600                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59601 
59602       END IF;
59603 
59604       -- 4955764
59605       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59606       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59607 
59608 
59609       XLA_AE_LINES_PKG.ValidateCurrentLine;
59610       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59611 
59612       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59613                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59614                ,p_balance_type_code => l_balance_type_code);
59615 
59616    END IF;
59617 
59618    -----------------------------------------------------------------------------------------
59619    -- 4262811 Multiperiod Accounting
59620    -----------------------------------------------------------------------------------------
59621      -- No MPA option is assigned.
59622 
59623 
59624 END IF;
59625 --
59626 
59627 --
59628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59629    trace
59630       (p_msg      => 'END of AcctLineType_123'
59631       ,p_level    => C_LEVEL_PROCEDURE
59632       ,p_module   => l_log_module);
59633 END IF;
59634 --
59635 EXCEPTION
59636   WHEN xla_exceptions_pkg.application_exception THEN
59637       RAISE;
59638   WHEN OTHERS THEN
59639        xla_exceptions_pkg.raise_message
59640            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_123');
59641 END AcctLineType_123;
59642 --
59643 
59644 ---------------------------------------
59645 --
59646 -- PRIVATE FUNCTION
59647 --         AcctLineType_124
59648 --
59649 ---------------------------------------
59650 PROCEDURE AcctLineType_124 (
59651   p_application_id        IN NUMBER
59652  ,p_event_id              IN NUMBER
59653  ,p_calculate_acctd_flag  IN VARCHAR2
59654  ,p_calculate_g_l_flag    IN VARCHAR2
59655  ,p_actual_flag           IN OUT VARCHAR2
59656  ,p_balance_type_code     OUT VARCHAR2
59657  ,p_gain_or_loss_ref      OUT VARCHAR2
59658  
59659 --Allow Account Override Flag
59660  , p_source_5            IN VARCHAR2
59661 --Provider Cost Destination CCID
59662  , p_source_12            IN NUMBER
59663 --Provider Cost Source CCID
59664  , p_source_14            IN NUMBER
59665 --Adjustment Provider Cost Source CCID
59666  , p_source_15            IN NUMBER
59667 --Reversing Line Flag
59668  , p_source_23            IN VARCHAR2
59669 --Actual Upgrade Credit Accounting Class
59670  , p_source_24            IN VARCHAR2
59671 --Entered Currency Code
59672  , p_source_26            IN VARCHAR2
59673 --Exchange Rate Date
59674  , p_source_28            IN DATE
59675 --Exchange Rate
59676  , p_source_29            IN NUMBER
59677 --Exchange Rate Type
59678  , p_source_30            IN VARCHAR2
59679 --Actual Upgrade Debit Accounting Class
59680  , p_source_31            IN VARCHAR2
59681 --Use Actuals Upgrade Attributes Flag
59682  , p_source_32            IN VARCHAR2
59683 --Expenditure Item ID
59684  , p_source_33            IN NUMBER
59685 --Cost Distribution Line Number
59686  , p_source_34            IN NUMBER
59687 --Line Type
59688  , p_source_35            IN VARCHAR2
59689  , p_source_35_meaning    IN VARCHAR2
59690 --Reversed Line Number
59691  , p_source_36            IN NUMBER
59692 --Entered Amount
59693  , p_source_42            IN NUMBER
59694 --Accounted Amount
59695  , p_source_43            IN NUMBER
59696 )
59697 IS
59698 
59699 l_component_type              VARCHAR2(80);
59700 l_component_code              VARCHAR2(30);
59701 l_component_type_code         VARCHAR2(1);
59702 l_component_appl_id           INTEGER;
59703 l_amb_context_code            VARCHAR2(30);
59704 l_entity_code                 VARCHAR2(30);
59705 l_event_class_code            VARCHAR2(30);
59706 l_ae_header_id                NUMBER;
59707 l_event_type_code             VARCHAR2(30);
59708 l_line_definition_code        VARCHAR2(30);
59709 l_line_definition_owner_code  VARCHAR2(1);
59710 --
59711 -- adr variables
59712 l_segment                     VARCHAR2(30);
59713 l_ccid                        NUMBER;
59714 l_adr_transaction_coa_id      NUMBER;
59715 l_adr_accounting_coa_id       NUMBER;
59716 l_adr_flexfield_segment_code  VARCHAR2(30);
59717 l_adr_flex_value_set_id       NUMBER;
59718 l_adr_value_type_code         VARCHAR2(30);
59719 l_adr_value_combination_id    NUMBER;
59720 l_adr_value_segment_code      VARCHAR2(30);
59721 
59722 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59723 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59724 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59725 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59726 
59727 -- 4262811 Variables ------------------------------------------------------------------------------------------
59728 l_entered_amt_idx             NUMBER;
59729 l_accted_amt_idx              NUMBER;
59733 l_acc_rev_natural_side_code   VARCHAR2(1);
59730 l_acc_rev_flag                VARCHAR2(1);
59731 l_accrual_line_num            NUMBER;
59732 l_tmp_amt                     NUMBER;
59734 
59735 l_num_entries                 NUMBER;
59736 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59737 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59738 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59739 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59740 l_recog_line_1                NUMBER;
59741 l_recog_line_2                NUMBER;
59742 
59743 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59744 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59745 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59746 
59747 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59748 
59749 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59750 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59751 
59752 ---------------------------------------------------------------------------------------------------------------
59753 
59754 
59755 --
59756 -- bulk performance
59757 --
59758 l_balance_type_code           VARCHAR2(1);
59759 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59760 l_log_module                  VARCHAR2(240);
59761 
59762 --
59763 -- Upgrade strategy
59764 --
59765 l_actual_upg_option           VARCHAR2(1);
59766 l_enc_upg_option           VARCHAR2(1);
59767 
59768 --
59769 BEGIN
59770 --
59771 IF g_log_enabled THEN
59772       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
59773 END IF;
59774 --
59775 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59776 
59777       trace
59778          (p_msg      => 'BEGIN of AcctLineType_124'
59779          ,p_level    => C_LEVEL_PROCEDURE
59780          ,p_module   => l_log_module);
59781 
59782 END IF;
59783 --
59784 l_component_type             := 'AMB_JLT';
59785 l_component_code             := 'PA_RECLASS_SOURCE';
59786 l_component_type_code        := 'S';
59787 l_component_appl_id          :=  275;
59788 l_amb_context_code           := 'DEFAULT';
59789 l_entity_code                := 'EXPENDITURES';
59790 l_event_class_code           := 'PRVDR_RECVR_RECLASS';
59791 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ALL';
59792 l_line_definition_owner_code := 'S';
59793 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
59794 --
59795 l_balance_type_code          := 'A';
59796 l_segment                     := NULL;
59797 l_ccid                        := NULL;
59798 l_adr_transaction_coa_id      := NULL;
59799 l_adr_accounting_coa_id       := NULL;
59800 l_adr_flexfield_segment_code  := NULL;
59801 l_adr_flex_value_set_id       := NULL;
59802 l_adr_value_type_code         := NULL;
59803 l_adr_value_combination_id    := NULL;
59804 l_adr_value_segment_code      := NULL;
59805 
59806 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59807 l_bflow_class_code           := '';    -- 4219869 Business Flow
59808 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59809 l_budgetary_control_flag     := 'N';
59810 
59811 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59812 l_bflow_applied_to_amt       := NULL; -- 5132302
59813 l_entered_amt_idx            := NULL;          -- 4262811
59814 l_accted_amt_idx             := NULL;          -- 4262811
59815 l_acc_rev_flag               := NULL;          -- 4262811
59816 l_accrual_line_num           := NULL;          -- 4262811
59817 l_tmp_amt                    := NULL;          -- 4262811
59818 --
59819  
59820 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59821     l_balance_type_code <> 'B' THEN
59822 
59823    --
59824    XLA_AE_LINES_PKG.SetNewLine;
59825 
59826    p_balance_type_code          := l_balance_type_code;
59827    -- set the flag so later we will know whether the gain loss line needs to be created
59828    
59829    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59830      p_actual_flag :='A';
59831    END IF;
59832 
59833    --
59834    -- bulk performance
59835    --
59836    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59837                                       p_header_num   => 0); -- 4262811
59838    --
59839    -- set accounting line options
59840    --
59841    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59842            p_natural_side_code          => 'C'
59843          , p_gain_or_loss_flag          => 'N'
59844          , p_gl_transfer_mode_code      => 'S'
59845          , p_acct_entry_type_code       => 'A'
59846          , p_switch_side_flag           => 'Y'
59847          , p_merge_duplicate_code       => 'N'
59848          );
59849    --
59850    l_acc_rev_natural_side_code := 'D';  -- 4262811
59851    -- 
59852    --
59853    -- set accounting line type info
59854    --
59855    xla_ae_lines_pkg.SetAcctLineType
59856       (p_component_type             => l_component_type
59857       ,p_event_type_code            => l_event_type_code
59858       ,p_line_definition_owner_code => l_line_definition_owner_code
59859       ,p_line_definition_code       => l_line_definition_code
59860       ,p_accounting_line_code       => l_component_code
59861       ,p_accounting_line_type_code  => l_component_type_code
59862       ,p_accounting_line_appl_id    => l_component_appl_id
59863       ,p_amb_context_code           => l_amb_context_code
59864       ,p_entity_code                => l_entity_code
59865       ,p_event_class_code           => l_event_class_code);
59866    --
59867    -- set accounting class
59868    --
59872          );
59869    xla_ae_lines_pkg.SetAcctClass(
59870            p_accounting_class_code  => 'RECLASS_SOURCE'
59871          , p_ae_header_id           => l_ae_header_id
59873 
59874    --
59875    -- set rounding class
59876    --
59877    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59878                       'RECLASS_SOURCE';
59879 
59880    --
59881    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59882    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59883    --
59884    -- bulk performance
59885    --
59886    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59887 
59888    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59889       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59890 
59891    -- 4955764
59892    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59893       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59894 
59895    -- 4458381 Public Sector Enh
59896    
59897    --
59898    -- set accounting attributes for the line type
59899    --
59900    l_entered_amt_idx := 22;
59901    l_accted_amt_idx  := 27;
59902    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59903    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
59904    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
59905    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
59906    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
59907    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
59908    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_14);
59909    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
59910    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
59911    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
59912    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
59913    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
59914    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
59915    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
59916    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
59917    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
59918    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
59919    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
59920    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
59921    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
59922    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
59923    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
59924    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_12);
59925    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
59926    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
59927    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
59928    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
59929    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
59930    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
59931    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
59932    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
59933    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
59934    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
59935    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
59936    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
59937    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
59938    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
59939    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
59940    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
59941    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
59942    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
59943    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
59944    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
59945    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
59946    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
59947    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
59948    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
59949    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
59950    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
59951    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
59952    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
59953    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
59954    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
59955    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
59956    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
59957    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
59958    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
59959    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
59960    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
59961    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
59962    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
59963 
59964    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59965    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59966 
59967    ---------------------------------------------------------------------------------------------------------------
59968    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59972    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59969    ---------------------------------------------------------------------------------------------------------------
59970    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59971 
59973    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59974 
59975    IF xla_accounting_cache_pkg.GetValueChar
59976          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59977          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59978    AND l_bflow_method_code = 'PRIOR_ENTRY'
59979 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59980    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59981          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59982        )
59983    THEN
59984          xla_ae_lines_pkg.BflowUpgEntry
59985            (p_business_method_code    => l_bflow_method_code
59986            ,p_business_class_code     => l_bflow_class_code
59987            ,p_balance_type            => l_balance_type_code);
59988    ELSE
59989       NULL;
59990 -- No business flow processing for business flow method of NONE.
59991    END IF;
59992 
59993    --
59994    -- call analytical criteria
59995    --
59996    
59997    --
59998    -- call description
59999    --
60000    -- No description or it is inherited.
60001    --
60002    -- call ADRs
60003    -- Bug 4922099
60004    --
60005    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60006         (NVL(l_actual_upg_option, 'N') = 'O') OR
60007         (NVL(l_enc_upg_option, 'N') = 'O')
60008       )
60009    THEN
60010    NULL;
60011    --
60012    --
60013    
60014   l_ccid := AcctDerRule_21(
60015            p_application_id           => p_application_id
60016          , p_ae_header_id             => l_ae_header_id 
60017 , p_source_5 => p_source_5
60018 , p_source_14 => p_source_14
60019 , p_source_15 => p_source_15
60020          , x_transaction_coa_id       => l_adr_transaction_coa_id
60021          , x_accounting_coa_id        => l_adr_accounting_coa_id
60022          , x_value_type_code          => l_adr_value_type_code
60023          , p_side                     => 'NA'
60024    );
60025 
60026    xla_ae_lines_pkg.set_ccid(
60027     p_code_combination_id          => l_ccid
60028   , p_value_type_code              => l_adr_value_type_code
60029   , p_transaction_coa_id           => l_adr_transaction_coa_id
60030   , p_accounting_coa_id            => l_adr_accounting_coa_id
60031   , p_adr_code                     => 'PA_RECLASS_SOURCE_ACCT_RULE'
60032   , p_adr_type_code                => 'S'
60033   , p_component_type               => l_component_type
60034   , p_component_code               => l_component_code
60035   , p_component_type_code          => l_component_type_code
60036   , p_component_appl_id            => l_component_appl_id
60037   , p_amb_context_code             => l_amb_context_code
60038   , p_side                         => 'NA'
60039   );
60040 
60041 
60042    --
60043    --
60044    END IF;
60045    --
60046    -- Bug 4922099
60047    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60048           (NVL(l_enc_upg_option, 'N') = 'O')
60049         ) AND
60050         (l_bflow_method_code = 'PRIOR_ENTRY')
60051       )
60052    THEN
60053       IF
60054       --
60055       1 = 2
60056       --
60057       THEN
60058       xla_accounting_err_pkg.build_message
60059                                     (p_appli_s_name            => 'XLA'
60060                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60061                                     ,p_token_1                 => 'LINE_NUMBER'
60062                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60063                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60064                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60065                                                                              l_component_type
60066                                                                             ,l_component_code
60067                                                                             ,l_component_type_code
60068                                                                             ,l_component_appl_id
60069                                                                             ,l_amb_context_code
60070                                                                             ,l_entity_code
60071                                                                             ,l_event_class_code
60072                                                                            )
60073                                     ,p_token_3                 => 'OWNER'
60074                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60075                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60076                                                                           ,p_lookup_code    => l_component_type_code
60077                                                                          )
60078                                     ,p_token_4                 => 'PRODUCT_NAME'
60079                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60080                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60081                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60082                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60083                                     ,p_ae_header_id            =>  NULL
60087                  trace
60084                                        );
60085 
60086         IF (C_LEVEL_ERROR>= g_log_level) THEN
60088                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60089                       ,p_level    => C_LEVEL_ERROR
60090                       ,p_module   => l_log_module);
60091         END IF;
60092       END IF;
60093    END IF;
60094    --
60095    --
60096    ------------------------------------------------------------------------------------------------
60097    -- 4219869 Business Flow
60098    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60099    -- Prior Entry.  Currently, the following code is always generated.
60100    ------------------------------------------------------------------------------------------------
60101    XLA_AE_LINES_PKG.ValidateCurrentLine;
60102 
60103    ------------------------------------------------------------------------------------
60104    -- 4219869 Business Flow
60105    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60106    ------------------------------------------------------------------------------------
60107    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60108 
60109    ----------------------------------------------------------------------------------
60110    -- 4219869 Business Flow
60111    -- Update journal entry status -- Need to generate this within IF <condition>
60112    ----------------------------------------------------------------------------------
60113    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60114          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60115          ,p_balance_type_code => l_balance_type_code
60116          );
60117 
60118    -------------------------------------------------------------------------------------------
60119    -- 4262811 - Generate the Accrual Reversal lines
60120    -------------------------------------------------------------------------------------------
60121    BEGIN
60122       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60123                               (g_array_event(p_event_id).array_value_num('header_index'));
60124       IF l_acc_rev_flag IS NULL THEN
60125          l_acc_rev_flag := 'N';
60126       END IF;
60127    EXCEPTION
60128       WHEN OTHERS THEN
60129          l_acc_rev_flag := 'N';
60130    END;
60131    --
60132    IF (l_acc_rev_flag = 'Y') THEN
60133 
60134        -- 4645092  ------------------------------------------------------------------------------
60135        -- To allow MPA report to determine if it should generate report process
60136        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60137        ------------------------------------------------------------------------------------------
60138 
60139        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60140        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60141 
60142        --
60143        -- Update the line information that should be overwritten
60144        --
60145        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60146                                          p_header_num   => 1);
60147        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60148 
60149        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60150 
60151        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60152           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60153        END IF;
60154 
60155       --
60156       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60157       --
60158       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60159           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60160       ELSE
60161           ---------------------------------------------------------------------------------------------------
60162           -- 4262811a Switch Sign
60163           ---------------------------------------------------------------------------------------------------
60164           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60165           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60166                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60167           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60168                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60169           -- 5132302
60170           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60171                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60172 
60173       END IF;
60174 
60175       -- 4955764
60176       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60177       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60178 
60179 
60180       XLA_AE_LINES_PKG.ValidateCurrentLine;
60181       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60182 
60183       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60184                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60185                ,p_balance_type_code => l_balance_type_code);
60186 
60187    END IF;
60188 
60189    -----------------------------------------------------------------------------------------
60190    -- 4262811 Multiperiod Accounting
60191    -----------------------------------------------------------------------------------------
60192      -- No MPA option is assigned.
60193 
60194 
60195 END IF;
60199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60196 --
60197 
60198 --
60200    trace
60201       (p_msg      => 'END of AcctLineType_124'
60202       ,p_level    => C_LEVEL_PROCEDURE
60203       ,p_module   => l_log_module);
60204 END IF;
60205 --
60206 EXCEPTION
60207   WHEN xla_exceptions_pkg.application_exception THEN
60208       RAISE;
60209   WHEN OTHERS THEN
60210        xla_exceptions_pkg.raise_message
60211            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_124');
60212 END AcctLineType_124;
60213 --
60214 
60215 ---------------------------------------
60216 --
60217 -- PRIVATE FUNCTION
60218 --         AcctLineType_125
60219 --
60220 ---------------------------------------
60221 PROCEDURE AcctLineType_125 (
60222   p_application_id        IN NUMBER
60223  ,p_event_id              IN NUMBER
60224  ,p_calculate_acctd_flag  IN VARCHAR2
60225  ,p_calculate_g_l_flag    IN VARCHAR2
60226  ,p_actual_flag           IN OUT VARCHAR2
60227  ,p_balance_type_code     OUT VARCHAR2
60228  ,p_gain_or_loss_ref      OUT VARCHAR2
60229  
60230 --Allow Account Override Flag
60231  , p_source_5            IN VARCHAR2
60232 --Provider Cost Destination CCID
60233  , p_source_12            IN NUMBER
60234 --Provider Cost Source CCID
60235  , p_source_14            IN NUMBER
60236 --Adjustment Provider Cost Source CCID
60237  , p_source_15            IN NUMBER
60238 --Reversing Line Flag
60239  , p_source_23            IN VARCHAR2
60240 --Actual Upgrade Credit Accounting Class
60241  , p_source_24            IN VARCHAR2
60242 --Entered Currency Code
60243  , p_source_26            IN VARCHAR2
60244 --Exchange Rate Date
60245  , p_source_28            IN DATE
60246 --Exchange Rate
60247  , p_source_29            IN NUMBER
60248 --Exchange Rate Type
60249  , p_source_30            IN VARCHAR2
60250 --Actual Upgrade Debit Accounting Class
60251  , p_source_31            IN VARCHAR2
60252 --Use Actuals Upgrade Attributes Flag
60253  , p_source_32            IN VARCHAR2
60254 --Expenditure Item ID
60255  , p_source_33            IN NUMBER
60256 --Cost Distribution Line Number
60257  , p_source_34            IN NUMBER
60258 --Line Type
60259  , p_source_35            IN VARCHAR2
60260  , p_source_35_meaning    IN VARCHAR2
60261 --Reversed Line Number
60262  , p_source_36            IN NUMBER
60263 --Entered Amount
60264  , p_source_42            IN NUMBER
60265 --Accounted Amount
60266  , p_source_43            IN NUMBER
60267 )
60268 IS
60269 
60270 l_component_type              VARCHAR2(80);
60271 l_component_code              VARCHAR2(30);
60272 l_component_type_code         VARCHAR2(1);
60273 l_component_appl_id           INTEGER;
60274 l_amb_context_code            VARCHAR2(30);
60275 l_entity_code                 VARCHAR2(30);
60276 l_event_class_code            VARCHAR2(30);
60277 l_ae_header_id                NUMBER;
60278 l_event_type_code             VARCHAR2(30);
60279 l_line_definition_code        VARCHAR2(30);
60280 l_line_definition_owner_code  VARCHAR2(1);
60281 --
60282 -- adr variables
60283 l_segment                     VARCHAR2(30);
60284 l_ccid                        NUMBER;
60285 l_adr_transaction_coa_id      NUMBER;
60286 l_adr_accounting_coa_id       NUMBER;
60287 l_adr_flexfield_segment_code  VARCHAR2(30);
60288 l_adr_flex_value_set_id       NUMBER;
60289 l_adr_value_type_code         VARCHAR2(30);
60290 l_adr_value_combination_id    NUMBER;
60291 l_adr_value_segment_code      VARCHAR2(30);
60292 
60293 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60294 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60295 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60296 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60297 
60298 -- 4262811 Variables ------------------------------------------------------------------------------------------
60299 l_entered_amt_idx             NUMBER;
60300 l_accted_amt_idx              NUMBER;
60301 l_acc_rev_flag                VARCHAR2(1);
60302 l_accrual_line_num            NUMBER;
60303 l_tmp_amt                     NUMBER;
60304 l_acc_rev_natural_side_code   VARCHAR2(1);
60305 
60306 l_num_entries                 NUMBER;
60307 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60308 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60309 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60310 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60311 l_recog_line_1                NUMBER;
60312 l_recog_line_2                NUMBER;
60313 
60314 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60315 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60316 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60317 
60318 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60319 
60320 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60321 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60322 
60323 ---------------------------------------------------------------------------------------------------------------
60324 
60325 
60326 --
60327 -- bulk performance
60328 --
60329 l_balance_type_code           VARCHAR2(1);
60330 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60331 l_log_module                  VARCHAR2(240);
60332 
60333 --
60334 -- Upgrade strategy
60335 --
60336 l_actual_upg_option           VARCHAR2(1);
60337 l_enc_upg_option           VARCHAR2(1);
60338 
60339 --
60340 BEGIN
60341 --
60342 IF g_log_enabled THEN
60346 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60343       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
60344 END IF;
60345 --
60347 
60348       trace
60349          (p_msg      => 'BEGIN of AcctLineType_125'
60350          ,p_level    => C_LEVEL_PROCEDURE
60351          ,p_module   => l_log_module);
60352 
60353 END IF;
60354 --
60355 l_component_type             := 'AMB_JLT';
60356 l_component_code             := 'PA_RECLASS_SOURCE_ADJ';
60357 l_component_type_code        := 'S';
60358 l_component_appl_id          :=  275;
60359 l_amb_context_code           := 'DEFAULT';
60360 l_entity_code                := 'EXPENDITURES';
60361 l_event_class_code           := 'PRVDR_RECVR_RECLASS_ADJ';
60362 l_event_type_code            := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
60363 l_line_definition_owner_code := 'S';
60364 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
60365 --
60366 l_balance_type_code          := 'A';
60367 l_segment                     := NULL;
60368 l_ccid                        := NULL;
60369 l_adr_transaction_coa_id      := NULL;
60370 l_adr_accounting_coa_id       := NULL;
60371 l_adr_flexfield_segment_code  := NULL;
60372 l_adr_flex_value_set_id       := NULL;
60373 l_adr_value_type_code         := NULL;
60374 l_adr_value_combination_id    := NULL;
60375 l_adr_value_segment_code      := NULL;
60376 
60377 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60378 l_bflow_class_code           := '';    -- 4219869 Business Flow
60379 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60380 l_budgetary_control_flag     := 'N';
60381 
60382 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60383 l_bflow_applied_to_amt       := NULL; -- 5132302
60384 l_entered_amt_idx            := NULL;          -- 4262811
60385 l_accted_amt_idx             := NULL;          -- 4262811
60386 l_acc_rev_flag               := NULL;          -- 4262811
60387 l_accrual_line_num           := NULL;          -- 4262811
60388 l_tmp_amt                    := NULL;          -- 4262811
60389 --
60390  
60391 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60392     l_balance_type_code <> 'B' THEN
60393 
60394    --
60395    XLA_AE_LINES_PKG.SetNewLine;
60396 
60397    p_balance_type_code          := l_balance_type_code;
60398    -- set the flag so later we will know whether the gain loss line needs to be created
60399    
60400    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60401      p_actual_flag :='A';
60402    END IF;
60403 
60404    --
60405    -- bulk performance
60406    --
60407    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60408                                       p_header_num   => 0); -- 4262811
60409    --
60410    -- set accounting line options
60411    --
60412    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60413            p_natural_side_code          => 'C'
60414          , p_gain_or_loss_flag          => 'N'
60415          , p_gl_transfer_mode_code      => 'S'
60416          , p_acct_entry_type_code       => 'A'
60417          , p_switch_side_flag           => 'Y'
60418          , p_merge_duplicate_code       => 'N'
60419          );
60420    --
60421    l_acc_rev_natural_side_code := 'D';  -- 4262811
60422    -- 
60423    --
60424    -- set accounting line type info
60425    --
60426    xla_ae_lines_pkg.SetAcctLineType
60427       (p_component_type             => l_component_type
60428       ,p_event_type_code            => l_event_type_code
60429       ,p_line_definition_owner_code => l_line_definition_owner_code
60430       ,p_line_definition_code       => l_line_definition_code
60431       ,p_accounting_line_code       => l_component_code
60432       ,p_accounting_line_type_code  => l_component_type_code
60433       ,p_accounting_line_appl_id    => l_component_appl_id
60434       ,p_amb_context_code           => l_amb_context_code
60435       ,p_entity_code                => l_entity_code
60436       ,p_event_class_code           => l_event_class_code);
60437    --
60438    -- set accounting class
60439    --
60440    xla_ae_lines_pkg.SetAcctClass(
60441            p_accounting_class_code  => 'RECLASS_SOURCE'
60442          , p_ae_header_id           => l_ae_header_id
60443          );
60444 
60445    --
60446    -- set rounding class
60447    --
60448    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60449                       'RECLASS_SOURCE';
60450 
60451    --
60452    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60453    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60454    --
60455    -- bulk performance
60456    --
60457    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60458 
60459    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60460       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60461 
60462    -- 4955764
60463    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60464       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60465 
60466    -- 4458381 Public Sector Enh
60467    
60468    --
60469    -- set accounting attributes for the line type
60470    --
60471    l_entered_amt_idx := 22;
60472    l_accted_amt_idx  := 27;
60473    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60474    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
60475    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
60476    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
60477    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
60481    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
60478    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
60479    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_14);
60480    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
60482    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
60483    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
60484    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
60485    l_rec_acct_attrs.array_num_value(6)  := p_source_43;
60486    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
60487    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
60488    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
60489    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
60490    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
60491    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
60492    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
60493    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
60494    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
60495    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_12);
60496    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
60497    l_rec_acct_attrs.array_num_value(12)  := p_source_42;
60498    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
60499    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
60500    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
60501    l_rec_acct_attrs.array_num_value(14)  := p_source_43;
60502    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
60503    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
60504    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
60505    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
60506    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
60507    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
60508    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
60509    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
60510    l_rec_acct_attrs.array_acct_attr_code(19) := 'DISTRIBUTION_IDENTIFIER_1';
60511    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_33);
60512    l_rec_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_2';
60513    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_34);
60514    l_rec_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_TYPE';
60515    l_rec_acct_attrs.array_char_value(21)  := p_source_35;
60516    l_rec_acct_attrs.array_acct_attr_code(22) := 'ENTERED_CURRENCY_AMOUNT';
60517    l_rec_acct_attrs.array_num_value(22)  := p_source_42;
60518    l_rec_acct_attrs.array_acct_attr_code(23) := 'ENTERED_CURRENCY_CODE';
60519    l_rec_acct_attrs.array_char_value(23)  := p_source_26;
60520    l_rec_acct_attrs.array_acct_attr_code(24) := 'EXCHANGE_DATE';
60521    l_rec_acct_attrs.array_date_value(24)  := p_source_28;
60522    l_rec_acct_attrs.array_acct_attr_code(25) := 'EXCHANGE_RATE';
60523    l_rec_acct_attrs.array_num_value(25)  := p_source_29;
60524    l_rec_acct_attrs.array_acct_attr_code(26) := 'EXCHANGE_RATE_TYPE';
60525    l_rec_acct_attrs.array_char_value(26)  := p_source_30;
60526    l_rec_acct_attrs.array_acct_attr_code(27) := 'LEDGER_AMOUNT';
60527    l_rec_acct_attrs.array_num_value(27)  := p_source_43;
60528    l_rec_acct_attrs.array_acct_attr_code(28) := 'REVERSED_DISTRIBUTION_ID1';
60529    l_rec_acct_attrs.array_num_value(28)  :=  to_char(p_source_33);
60530    l_rec_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID2';
60531    l_rec_acct_attrs.array_num_value(29)  :=  to_char(p_source_36);
60532    l_rec_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_TYPE';
60533    l_rec_acct_attrs.array_char_value(30)  := p_source_35;
60534 
60535    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60536    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60537 
60538    ---------------------------------------------------------------------------------------------------------------
60539    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60540    ---------------------------------------------------------------------------------------------------------------
60541    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60542 
60543    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60544    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60545 
60546    IF xla_accounting_cache_pkg.GetValueChar
60547          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60548          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60549    AND l_bflow_method_code = 'PRIOR_ENTRY'
60550 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60551    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60552          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60553        )
60554    THEN
60555          xla_ae_lines_pkg.BflowUpgEntry
60556            (p_business_method_code    => l_bflow_method_code
60557            ,p_business_class_code     => l_bflow_class_code
60558            ,p_balance_type            => l_balance_type_code);
60559    ELSE
60560       NULL;
60561 -- No business flow processing for business flow method of NONE.
60562    END IF;
60563 
60564    --
60565    -- call analytical criteria
60566    --
60567    
60568    --
60569    -- call description
60570    --
60571    -- No description or it is inherited.
60572    --
60573    -- call ADRs
60574    -- Bug 4922099
60575    --
60576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60577         (NVL(l_actual_upg_option, 'N') = 'O') OR
60578         (NVL(l_enc_upg_option, 'N') = 'O')
60579       )
60583    --
60580    THEN
60581    NULL;
60582    --
60584    
60585   l_ccid := AcctDerRule_22(
60586            p_application_id           => p_application_id
60587          , p_ae_header_id             => l_ae_header_id 
60588 , p_source_5 => p_source_5
60589 , p_source_15 => p_source_15
60590          , x_transaction_coa_id       => l_adr_transaction_coa_id
60591          , x_accounting_coa_id        => l_adr_accounting_coa_id
60592          , x_value_type_code          => l_adr_value_type_code
60593          , p_side                     => 'NA'
60594    );
60595 
60596    xla_ae_lines_pkg.set_ccid(
60597     p_code_combination_id          => l_ccid
60598   , p_value_type_code              => l_adr_value_type_code
60599   , p_transaction_coa_id           => l_adr_transaction_coa_id
60600   , p_accounting_coa_id            => l_adr_accounting_coa_id
60601   , p_adr_code                     => 'PA_RECLASS_SRC_ADJ_ACCT_RULE'
60602   , p_adr_type_code                => 'S'
60603   , p_component_type               => l_component_type
60604   , p_component_code               => l_component_code
60605   , p_component_type_code          => l_component_type_code
60606   , p_component_appl_id            => l_component_appl_id
60607   , p_amb_context_code             => l_amb_context_code
60608   , p_side                         => 'NA'
60609   );
60610 
60611 
60612    --
60613    --
60614    END IF;
60615    --
60616    -- Bug 4922099
60617    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60618           (NVL(l_enc_upg_option, 'N') = 'O')
60619         ) AND
60620         (l_bflow_method_code = 'PRIOR_ENTRY')
60621       )
60622    THEN
60623       IF
60624       --
60625       1 = 2
60626       --
60627       THEN
60628       xla_accounting_err_pkg.build_message
60629                                     (p_appli_s_name            => 'XLA'
60630                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60631                                     ,p_token_1                 => 'LINE_NUMBER'
60632                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60633                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60634                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60635                                                                              l_component_type
60636                                                                             ,l_component_code
60637                                                                             ,l_component_type_code
60638                                                                             ,l_component_appl_id
60639                                                                             ,l_amb_context_code
60640                                                                             ,l_entity_code
60641                                                                             ,l_event_class_code
60642                                                                            )
60643                                     ,p_token_3                 => 'OWNER'
60644                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60645                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60646                                                                           ,p_lookup_code    => l_component_type_code
60647                                                                          )
60648                                     ,p_token_4                 => 'PRODUCT_NAME'
60649                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60650                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60651                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60652                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60653                                     ,p_ae_header_id            =>  NULL
60654                                        );
60655 
60656         IF (C_LEVEL_ERROR>= g_log_level) THEN
60657                  trace
60658                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60659                       ,p_level    => C_LEVEL_ERROR
60660                       ,p_module   => l_log_module);
60661         END IF;
60662       END IF;
60663    END IF;
60664    --
60665    --
60666    ------------------------------------------------------------------------------------------------
60667    -- 4219869 Business Flow
60668    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60669    -- Prior Entry.  Currently, the following code is always generated.
60670    ------------------------------------------------------------------------------------------------
60671    XLA_AE_LINES_PKG.ValidateCurrentLine;
60672 
60673    ------------------------------------------------------------------------------------
60674    -- 4219869 Business Flow
60675    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60676    ------------------------------------------------------------------------------------
60677    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60678 
60679    ----------------------------------------------------------------------------------
60680    -- 4219869 Business Flow
60681    -- Update journal entry status -- Need to generate this within IF <condition>
60682    ----------------------------------------------------------------------------------
60683    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60684          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60685          ,p_balance_type_code => l_balance_type_code
60686          );
60687 
60691    BEGIN
60688    -------------------------------------------------------------------------------------------
60689    -- 4262811 - Generate the Accrual Reversal lines
60690    -------------------------------------------------------------------------------------------
60692       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60693                               (g_array_event(p_event_id).array_value_num('header_index'));
60694       IF l_acc_rev_flag IS NULL THEN
60695          l_acc_rev_flag := 'N';
60696       END IF;
60697    EXCEPTION
60698       WHEN OTHERS THEN
60699          l_acc_rev_flag := 'N';
60700    END;
60701    --
60702    IF (l_acc_rev_flag = 'Y') THEN
60703 
60704        -- 4645092  ------------------------------------------------------------------------------
60705        -- To allow MPA report to determine if it should generate report process
60706        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60707        ------------------------------------------------------------------------------------------
60708 
60709        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60710        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60711 
60712        --
60713        -- Update the line information that should be overwritten
60714        --
60715        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60716                                          p_header_num   => 1);
60717        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60718 
60719        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60720 
60721        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60722           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60723        END IF;
60724 
60725       --
60726       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60727       --
60728       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60729           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60730       ELSE
60731           ---------------------------------------------------------------------------------------------------
60732           -- 4262811a Switch Sign
60733           ---------------------------------------------------------------------------------------------------
60734           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60735           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60736                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60737           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60738                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60739           -- 5132302
60740           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60741                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60742 
60743       END IF;
60744 
60745       -- 4955764
60746       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60747       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60748 
60749 
60750       XLA_AE_LINES_PKG.ValidateCurrentLine;
60751       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60752 
60753       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60754                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60755                ,p_balance_type_code => l_balance_type_code);
60756 
60757    END IF;
60758 
60759    -----------------------------------------------------------------------------------------
60760    -- 4262811 Multiperiod Accounting
60761    -----------------------------------------------------------------------------------------
60762      -- No MPA option is assigned.
60763 
60764 
60765 END IF;
60766 --
60767 
60768 --
60769 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60770    trace
60771       (p_msg      => 'END of AcctLineType_125'
60772       ,p_level    => C_LEVEL_PROCEDURE
60773       ,p_module   => l_log_module);
60774 END IF;
60775 --
60776 EXCEPTION
60777   WHEN xla_exceptions_pkg.application_exception THEN
60778       RAISE;
60779   WHEN OTHERS THEN
60780        xla_exceptions_pkg.raise_message
60781            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_125');
60782 END AcctLineType_125;
60783 --
60784 
60785 ---------------------------------------
60786 --
60787 -- PRIVATE FUNCTION
60788 --         AcctLineType_126
60789 --
60790 ---------------------------------------
60791 PROCEDURE AcctLineType_126 (
60792   p_application_id        IN NUMBER
60793  ,p_event_id              IN NUMBER
60794  ,p_calculate_acctd_flag  IN VARCHAR2
60795  ,p_calculate_g_l_flag    IN VARCHAR2
60796  ,p_actual_flag           IN OUT VARCHAR2
60797  ,p_balance_type_code     OUT VARCHAR2
60798  ,p_gain_or_loss_ref      OUT VARCHAR2
60799  
60800 --Actual Upgrade Credit Accounting Class
60801  , p_source_24            IN VARCHAR2
60802 --Entered Currency Code
60803  , p_source_26            IN VARCHAR2
60804 --Exchange Rate Date
60805  , p_source_28            IN DATE
60806 --Exchange Rate
60807  , p_source_29            IN NUMBER
60808 --Exchange Rate Type
60809  , p_source_30            IN VARCHAR2
60810 --Actual Upgrade Debit Accounting Class
60811  , p_source_31            IN VARCHAR2
60812 --Use Actuals Upgrade Attributes Flag
60813  , p_source_32            IN VARCHAR2
60814 --Entered Amount
60818 --Revenue Distribution Type
60815  , p_source_42            IN NUMBER
60816 --Accounted Amount
60817  , p_source_43            IN NUMBER
60819  , p_source_46            IN VARCHAR2
60820 --Crediting Revenue Flag
60821  , p_source_48            IN VARCHAR2
60822 --Revenue First Distribution ID
60823  , p_source_49            IN NUMBER
60824 --Revenue Second Distribution ID
60825  , p_source_50            IN NUMBER
60826 --Event ID
60827  , p_source_51            IN NUMBER
60828 --Actual Upgrade Credit CCID
60829  , p_source_64            IN NUMBER
60830 --Actual Upgrade Debit CCID
60831  , p_source_65            IN NUMBER
60832 --Application ID
60833  , p_source_66            IN NUMBER
60834 --Revenue Entity Code
60835  , p_source_67            IN VARCHAR2
60836 --Crediting Revenue First Distribution ID
60837  , p_source_68            IN NUMBER
60838 --Project ID
60839  , p_source_69            IN NUMBER
60840 --Crediting Revenue Second Distribution ID
60841  , p_source_70            IN NUMBER
60842 --Draft Revenue Number Credited
60843  , p_source_71            IN NUMBER
60844 )
60845 IS
60846 
60847 l_component_type              VARCHAR2(80);
60848 l_component_code              VARCHAR2(30);
60849 l_component_type_code         VARCHAR2(1);
60850 l_component_appl_id           INTEGER;
60851 l_amb_context_code            VARCHAR2(30);
60852 l_entity_code                 VARCHAR2(30);
60853 l_event_class_code            VARCHAR2(30);
60854 l_ae_header_id                NUMBER;
60855 l_event_type_code             VARCHAR2(30);
60856 l_line_definition_code        VARCHAR2(30);
60857 l_line_definition_owner_code  VARCHAR2(1);
60858 --
60859 -- adr variables
60860 l_segment                     VARCHAR2(30);
60861 l_ccid                        NUMBER;
60862 l_adr_transaction_coa_id      NUMBER;
60863 l_adr_accounting_coa_id       NUMBER;
60864 l_adr_flexfield_segment_code  VARCHAR2(30);
60865 l_adr_flex_value_set_id       NUMBER;
60866 l_adr_value_type_code         VARCHAR2(30);
60867 l_adr_value_combination_id    NUMBER;
60868 l_adr_value_segment_code      VARCHAR2(30);
60869 
60870 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60871 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60872 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60873 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60874 
60875 -- 4262811 Variables ------------------------------------------------------------------------------------------
60876 l_entered_amt_idx             NUMBER;
60877 l_accted_amt_idx              NUMBER;
60878 l_acc_rev_flag                VARCHAR2(1);
60879 l_accrual_line_num            NUMBER;
60880 l_tmp_amt                     NUMBER;
60881 l_acc_rev_natural_side_code   VARCHAR2(1);
60882 
60883 l_num_entries                 NUMBER;
60884 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60885 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60886 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60887 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60888 l_recog_line_1                NUMBER;
60889 l_recog_line_2                NUMBER;
60890 
60891 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60892 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60893 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60894 
60895 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60896 
60897 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60898 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60899 
60900 ---------------------------------------------------------------------------------------------------------------
60901 
60902 
60903 --
60904 -- bulk performance
60905 --
60906 l_balance_type_code           VARCHAR2(1);
60907 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60908 l_log_module                  VARCHAR2(240);
60909 
60910 --
60911 -- Upgrade strategy
60912 --
60913 l_actual_upg_option           VARCHAR2(1);
60914 l_enc_upg_option           VARCHAR2(1);
60915 
60916 --
60917 BEGIN
60918 --
60919 IF g_log_enabled THEN
60920       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
60921 END IF;
60922 --
60923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60924 
60925       trace
60926          (p_msg      => 'BEGIN of AcctLineType_126'
60927          ,p_level    => C_LEVEL_PROCEDURE
60928          ,p_module   => l_log_module);
60929 
60930 END IF;
60931 --
60932 l_component_type             := 'AMB_JLT';
60933 l_component_code             := 'PA_REV_ADJ';
60934 l_component_type_code        := 'S';
60935 l_component_appl_id          :=  275;
60936 l_amb_context_code           := 'DEFAULT';
60937 l_entity_code                := 'REVENUE';
60938 l_event_class_code           := 'REVENUE_ADJ';
60939 l_event_type_code            := 'REVENUE_ADJ_ALL';
60940 l_line_definition_owner_code := 'S';
60941 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
60942 --
60943 l_balance_type_code          := 'A';
60944 l_segment                     := NULL;
60945 l_ccid                        := NULL;
60946 l_adr_transaction_coa_id      := NULL;
60947 l_adr_accounting_coa_id       := NULL;
60948 l_adr_flexfield_segment_code  := NULL;
60949 l_adr_flex_value_set_id       := NULL;
60950 l_adr_value_type_code         := NULL;
60951 l_adr_value_combination_id    := NULL;
60952 l_adr_value_segment_code      := NULL;
60953 
60954 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
60955 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
60959 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60956 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
60957 l_budgetary_control_flag     := 'N';
60958 
60960 l_bflow_applied_to_amt       := NULL; -- 5132302
60961 l_entered_amt_idx            := NULL;          -- 4262811
60962 l_accted_amt_idx             := NULL;          -- 4262811
60963 l_acc_rev_flag               := NULL;          -- 4262811
60964 l_accrual_line_num           := NULL;          -- 4262811
60965 l_tmp_amt                    := NULL;          -- 4262811
60966 --
60967  
60968 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60969     l_balance_type_code <> 'B' THEN
60970 IF NVL(p_source_46,'
60971 ') =  'Revenue - Normal Revenue' AND 
60972 NVL(p_source_48,'
60973 ') =  'Y'
60974  THEN 
60975 
60976    --
60977    XLA_AE_LINES_PKG.SetNewLine;
60978 
60979    p_balance_type_code          := l_balance_type_code;
60980    -- set the flag so later we will know whether the gain loss line needs to be created
60981    
60982    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60983      p_actual_flag :='A';
60984    END IF;
60985 
60986    --
60987    -- bulk performance
60988    --
60989    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60990                                       p_header_num   => 0); -- 4262811
60991    --
60992    -- set accounting line options
60993    --
60994    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60995            p_natural_side_code          => 'D'
60996          , p_gain_or_loss_flag          => 'N'
60997          , p_gl_transfer_mode_code      => 'S'
60998          , p_acct_entry_type_code       => 'A'
60999          , p_switch_side_flag           => 'Y'
61000          , p_merge_duplicate_code       => 'N'
61001          );
61002    --
61003    l_acc_rev_natural_side_code := 'C';  -- 4262811
61004    -- 
61005    --
61006    -- set accounting line type info
61007    --
61008    xla_ae_lines_pkg.SetAcctLineType
61009       (p_component_type             => l_component_type
61010       ,p_event_type_code            => l_event_type_code
61011       ,p_line_definition_owner_code => l_line_definition_owner_code
61012       ,p_line_definition_code       => l_line_definition_code
61013       ,p_accounting_line_code       => l_component_code
61014       ,p_accounting_line_type_code  => l_component_type_code
61015       ,p_accounting_line_appl_id    => l_component_appl_id
61016       ,p_amb_context_code           => l_amb_context_code
61017       ,p_entity_code                => l_entity_code
61018       ,p_event_class_code           => l_event_class_code);
61019    --
61020    -- set accounting class
61021    --
61022    xla_ae_lines_pkg.SetAcctClass(
61023            p_accounting_class_code  => 'REVENUE_ADJ'
61024          , p_ae_header_id           => l_ae_header_id
61025          );
61026 
61027    --
61028    -- set rounding class
61029    --
61030    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61031                       'REVENUE_ADJ';
61032 
61033    --
61034    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61035    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61036    --
61037    -- bulk performance
61038    --
61039    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61040 
61041    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61042       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61043 
61044    -- 4955764
61045    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61046       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61047 
61048    -- 4458381 Public Sector Enh
61049    
61050    --
61051    -- set accounting attributes for the line type
61052    --
61053    l_entered_amt_idx := 28;
61054    l_accted_amt_idx  := 31;
61055    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61056    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
61057    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
61058    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
61059    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
61060    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
61061    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
61062    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
61063    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
61064    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
61065    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
61066    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
61067    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
61068    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
61069    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
61070    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
61071    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
61072    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
61073    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
61074    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
61075    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
61076    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
61077    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
61078    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
61079    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
61083    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
61080    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
61081    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
61082    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
61084    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
61085    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
61086    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
61087    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
61088    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
61089    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
61090    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
61091    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
61092    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61093    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
61094    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
61095    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
61096    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
61097    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
61098    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61099    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
61100    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
61101    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
61102    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
61103    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
61104    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
61105    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
61106    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
61107    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
61108    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
61109    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
61110    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
61111    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
61112    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
61113    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
61114    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
61115    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
61116    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
61117    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
61118 
61119    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61120    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61121 
61122    ---------------------------------------------------------------------------------------------------------------
61123    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61124    ---------------------------------------------------------------------------------------------------------------
61125    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61126 
61127    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61128    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61129 
61130    IF xla_accounting_cache_pkg.GetValueChar
61131          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61132          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61133    AND l_bflow_method_code = 'PRIOR_ENTRY'
61134 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61135    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61136          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61137        )
61138    THEN
61139          xla_ae_lines_pkg.BflowUpgEntry
61140            (p_business_method_code    => l_bflow_method_code
61141            ,p_business_class_code     => l_bflow_class_code
61142            ,p_balance_type            => l_balance_type_code);
61143    ELSE
61144       NULL;
61145 XLA_AE_LINES_PKG.business_flow_validation(
61146                                 p_business_method_code     => l_bflow_method_code
61147                                ,p_business_class_code      => l_bflow_class_code
61148                                ,p_inherit_description_flag => l_inherit_desc_flag);
61149    END IF;
61150 
61151    --
61152    -- call analytical criteria
61153    --
61154    -- Inherited Analytical Criteria for business flow method of Prior Entry.
61155    --
61156    -- call description
61157    --
61158    -- No description or it is inherited.
61159    --
61160    -- call ADRs
61161    -- Bug 4922099
61162    --
61163    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61164         (NVL(l_actual_upg_option, 'N') = 'O') OR
61165         (NVL(l_enc_upg_option, 'N') = 'O')
61166       )
61167    THEN
61168    NULL;
61169    --
61170    --
61171    
61172    --
61173    --
61174    END IF;
61175    --
61176    -- Bug 4922099
61177    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61178           (NVL(l_enc_upg_option, 'N') = 'O')
61179         ) AND
61180         (l_bflow_method_code = 'PRIOR_ENTRY')
61181       )
61182    THEN
61183       IF
61184       --
61185       1 = 1
61186       --
61187       THEN
61188       xla_accounting_err_pkg.build_message
61189                                     (p_appli_s_name            => 'XLA'
61190                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61191                                     ,p_token_1                 => 'LINE_NUMBER'
61195                                                                              l_component_type
61192                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61193                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61194                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61196                                                                             ,l_component_code
61197                                                                             ,l_component_type_code
61198                                                                             ,l_component_appl_id
61199                                                                             ,l_amb_context_code
61200                                                                             ,l_entity_code
61201                                                                             ,l_event_class_code
61202                                                                            )
61203                                     ,p_token_3                 => 'OWNER'
61204                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61205                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61206                                                                           ,p_lookup_code    => l_component_type_code
61207                                                                          )
61208                                     ,p_token_4                 => 'PRODUCT_NAME'
61209                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61210                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61211                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61212                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61213                                     ,p_ae_header_id            =>  NULL
61214                                        );
61215 
61216         IF (C_LEVEL_ERROR>= g_log_level) THEN
61217                  trace
61218                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61219                       ,p_level    => C_LEVEL_ERROR
61220                       ,p_module   => l_log_module);
61221         END IF;
61222       END IF;
61223    END IF;
61224    --
61225    --
61226    ------------------------------------------------------------------------------------------------
61227    -- 4219869 Business Flow
61228    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61229    -- Prior Entry.  Currently, the following code is always generated.
61230    ------------------------------------------------------------------------------------------------
61231    -- No ValidateCurrentLine for business flow method of Prior Entry
61232 
61233    ------------------------------------------------------------------------------------
61234    -- 4219869 Business Flow
61235    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61236    ------------------------------------------------------------------------------------
61237    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61238 
61239    ----------------------------------------------------------------------------------
61240    -- 4219869 Business Flow
61241    -- Update journal entry status -- Need to generate this within IF <condition>
61242    ----------------------------------------------------------------------------------
61243    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61244          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61245          ,p_balance_type_code => l_balance_type_code
61246          );
61247 
61248    -------------------------------------------------------------------------------------------
61249    -- 4262811 - Generate the Accrual Reversal lines
61250    -------------------------------------------------------------------------------------------
61251    BEGIN
61252       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61253                               (g_array_event(p_event_id).array_value_num('header_index'));
61254       IF l_acc_rev_flag IS NULL THEN
61255          l_acc_rev_flag := 'N';
61256       END IF;
61257    EXCEPTION
61258       WHEN OTHERS THEN
61259          l_acc_rev_flag := 'N';
61260    END;
61261    --
61262    IF (l_acc_rev_flag = 'Y') THEN
61263 
61264        -- 4645092  ------------------------------------------------------------------------------
61265        -- To allow MPA report to determine if it should generate report process
61266        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61267        ------------------------------------------------------------------------------------------
61268 
61269        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61270        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61271 
61272        --
61273        -- Update the line information that should be overwritten
61274        --
61275        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61276                                          p_header_num   => 1);
61277        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61278 
61279        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61280 
61281        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61282           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61283        END IF;
61284 
61285       --
61286       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61287       --
61288       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61292           -- 4262811a Switch Sign
61289           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61290       ELSE
61291           ---------------------------------------------------------------------------------------------------
61293           ---------------------------------------------------------------------------------------------------
61294           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61295           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61296                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61297           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61298                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61299           -- 5132302
61300           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61301                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61302 
61303       END IF;
61304 
61305       -- 4955764
61306       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61307       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61308 
61309 
61310       XLA_AE_LINES_PKG.ValidateCurrentLine;
61311       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61312 
61313       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61314                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61315                ,p_balance_type_code => l_balance_type_code);
61316 
61317    END IF;
61318 
61319    -----------------------------------------------------------------------------------------
61320    -- 4262811 Multiperiod Accounting
61321    -----------------------------------------------------------------------------------------
61322      -- No MPA option is assigned.
61323 
61324 
61325 END IF;
61326 END IF;
61327 --
61328 
61329 --
61330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61331    trace
61332       (p_msg      => 'END of AcctLineType_126'
61333       ,p_level    => C_LEVEL_PROCEDURE
61334       ,p_module   => l_log_module);
61335 END IF;
61336 --
61337 EXCEPTION
61338   WHEN xla_exceptions_pkg.application_exception THEN
61339       RAISE;
61340   WHEN OTHERS THEN
61341        xla_exceptions_pkg.raise_message
61342            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_126');
61343 END AcctLineType_126;
61344 --
61345 
61346 ---------------------------------------
61347 --
61348 -- PRIVATE FUNCTION
61349 --         AcctLineType_127
61350 --
61351 ---------------------------------------
61352 PROCEDURE AcctLineType_127 (
61353   p_application_id        IN NUMBER
61354  ,p_event_id              IN NUMBER
61355  ,p_calculate_acctd_flag  IN VARCHAR2
61356  ,p_calculate_g_l_flag    IN VARCHAR2
61357  ,p_actual_flag           IN OUT VARCHAR2
61358  ,p_balance_type_code     OUT VARCHAR2
61359  ,p_gain_or_loss_ref      OUT VARCHAR2
61360  
61361 --Budget Code Combination ID
61362  , p_source_3            IN NUMBER
61363 --Cost CCID
61364  , p_source_4            IN NUMBER
61365 --Allow Account Override Flag
61366  , p_source_5            IN VARCHAR2
61367 --Adjustment Cost CCID
61368  , p_source_6            IN NUMBER
61369 --Cost Clearing CCID
61370  , p_source_7            IN NUMBER
61371 --Reversing Line Flag
61372  , p_source_23            IN VARCHAR2
61373 --Actual Upgrade Credit Accounting Class
61374  , p_source_24            IN VARCHAR2
61375 --Entered Currency Code
61376  , p_source_26            IN VARCHAR2
61377 --Exchange Rate Date
61378  , p_source_28            IN DATE
61379 --Exchange Rate
61380  , p_source_29            IN NUMBER
61381 --Exchange Rate Type
61382  , p_source_30            IN VARCHAR2
61383 --Actual Upgrade Debit Accounting Class
61384  , p_source_31            IN VARCHAR2
61385 --Use Actuals Upgrade Attributes Flag
61386  , p_source_32            IN VARCHAR2
61387 --Expenditure Item ID
61388  , p_source_33            IN NUMBER
61389 --Cost Distribution Line Number
61390  , p_source_34            IN NUMBER
61391 --Line Type
61392  , p_source_35            IN VARCHAR2
61393  , p_source_35_meaning    IN VARCHAR2
61394 --Reversed Line Number
61395  , p_source_36            IN NUMBER
61396 --Encumbrance Upgrade Credit Accounting Class
61397  , p_source_41            IN VARCHAR2
61398 --Use Encumbrance Upgrade Attributes Flag
61399  , p_source_44            IN VARCHAR2
61400 --Entered Burdened Cost
61401  , p_source_52            IN NUMBER
61402 --Accounted Burdened Cost
61403  , p_source_53            IN NUMBER
61404 --Encumbrance Amount
61405  , p_source_54            IN NUMBER
61406 --Project Encumbrance Applied to Application Identifier
61407  , p_source_55            IN NUMBER
61408 --Project Encumbrance Applied to Distribution Type
61409  , p_source_56            IN VARCHAR2
61410 --Project Encumbrance Applied to Entity Code
61411  , p_source_57            IN VARCHAR2
61412 --Project Encumbrance Applied to First Distribution ID
61413  , p_source_58            IN NUMBER
61414 --Project Encumbrance Applied to First System Transaction ID
61415  , p_source_59            IN NUMBER
61416 --Project Encumbrance Applied to Second Distribution ID
61417  , p_source_60            IN VARCHAR2
61418 --Encumbrance Upgrade Debit Accounting Class
61419  , p_source_61            IN VARCHAR2
61420 --Encumbrance Type ID
61421  , p_source_62            IN NUMBER
61422 --Project Encumbrance Type ID
61423  , p_source_63            IN NUMBER
61424 )
61425 IS
61426 
61430 l_component_appl_id           INTEGER;
61427 l_component_type              VARCHAR2(80);
61428 l_component_code              VARCHAR2(30);
61429 l_component_type_code         VARCHAR2(1);
61431 l_amb_context_code            VARCHAR2(30);
61432 l_entity_code                 VARCHAR2(30);
61433 l_event_class_code            VARCHAR2(30);
61434 l_ae_header_id                NUMBER;
61435 l_event_type_code             VARCHAR2(30);
61436 l_line_definition_code        VARCHAR2(30);
61437 l_line_definition_owner_code  VARCHAR2(1);
61438 --
61439 -- adr variables
61440 l_segment                     VARCHAR2(30);
61441 l_ccid                        NUMBER;
61442 l_adr_transaction_coa_id      NUMBER;
61443 l_adr_accounting_coa_id       NUMBER;
61444 l_adr_flexfield_segment_code  VARCHAR2(30);
61445 l_adr_flex_value_set_id       NUMBER;
61446 l_adr_value_type_code         VARCHAR2(30);
61447 l_adr_value_combination_id    NUMBER;
61448 l_adr_value_segment_code      VARCHAR2(30);
61449 
61450 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61451 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61452 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61453 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61454 
61455 -- 4262811 Variables ------------------------------------------------------------------------------------------
61456 l_entered_amt_idx             NUMBER;
61457 l_accted_amt_idx              NUMBER;
61458 l_acc_rev_flag                VARCHAR2(1);
61459 l_accrual_line_num            NUMBER;
61460 l_tmp_amt                     NUMBER;
61461 l_acc_rev_natural_side_code   VARCHAR2(1);
61462 
61463 l_num_entries                 NUMBER;
61464 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61465 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61466 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61467 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61468 l_recog_line_1                NUMBER;
61469 l_recog_line_2                NUMBER;
61470 
61471 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61472 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61473 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61474 
61475 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61476 
61477 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61478 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61479 
61480 ---------------------------------------------------------------------------------------------------------------
61481 
61482 
61483 --
61484 -- bulk performance
61485 --
61486 l_balance_type_code           VARCHAR2(1);
61487 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61488 l_log_module                  VARCHAR2(240);
61489 
61490 --
61491 -- Upgrade strategy
61492 --
61493 l_actual_upg_option           VARCHAR2(1);
61494 l_enc_upg_option           VARCHAR2(1);
61495 
61496 --
61497 BEGIN
61498 --
61499 IF g_log_enabled THEN
61500       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
61501 END IF;
61502 --
61503 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61504 
61505       trace
61506          (p_msg      => 'BEGIN of AcctLineType_127'
61507          ,p_level    => C_LEVEL_PROCEDURE
61508          ,p_module   => l_log_module);
61509 
61510 END IF;
61511 --
61512 l_component_type             := 'AMB_JLT';
61513 l_component_code             := 'PA_TOT_BURDENED_COST';
61514 l_component_type_code        := 'S';
61515 l_component_appl_id          :=  275;
61516 l_amb_context_code           := 'DEFAULT';
61517 l_entity_code                := 'EXPENDITURES';
61518 l_event_class_code           := 'TOT_BURDENED_COST';
61519 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
61520 l_line_definition_owner_code := 'S';
61521 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
61522 --
61523 l_balance_type_code          := 'A';
61524 l_segment                     := NULL;
61525 l_ccid                        := NULL;
61526 l_adr_transaction_coa_id      := NULL;
61527 l_adr_accounting_coa_id       := NULL;
61528 l_adr_flexfield_segment_code  := NULL;
61529 l_adr_flex_value_set_id       := NULL;
61530 l_adr_value_type_code         := NULL;
61531 l_adr_value_combination_id    := NULL;
61532 l_adr_value_segment_code      := NULL;
61533 
61534 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61535 l_bflow_class_code           := '';    -- 4219869 Business Flow
61536 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61537 l_budgetary_control_flag     := 'N';
61538 
61539 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61540 l_bflow_applied_to_amt       := NULL; -- 5132302
61541 l_entered_amt_idx            := NULL;          -- 4262811
61542 l_accted_amt_idx             := NULL;          -- 4262811
61543 l_acc_rev_flag               := NULL;          -- 4262811
61544 l_accrual_line_num           := NULL;          -- 4262811
61545 l_tmp_amt                    := NULL;          -- 4262811
61546 --
61547  
61548 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61549     l_balance_type_code <> 'B' THEN
61550 IF NVL(p_source_35,'
61551 ') =  'D'
61552  THEN 
61553 
61554    --
61555    XLA_AE_LINES_PKG.SetNewLine;
61556 
61557    p_balance_type_code          := l_balance_type_code;
61558    -- set the flag so later we will know whether the gain loss line needs to be created
61559    
61560    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61561      p_actual_flag :='A';
61562    END IF;
61563 
61564    --
61568                                       p_header_num   => 0); -- 4262811
61565    -- bulk performance
61566    --
61567    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61569    --
61570    -- set accounting line options
61571    --
61572    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61573            p_natural_side_code          => 'D'
61574          , p_gain_or_loss_flag          => 'N'
61575          , p_gl_transfer_mode_code      => 'S'
61576          , p_acct_entry_type_code       => 'A'
61577          , p_switch_side_flag           => 'Y'
61578          , p_merge_duplicate_code       => 'N'
61579          );
61580    --
61581    l_acc_rev_natural_side_code := 'C';  -- 4262811
61582    -- 
61583    --
61584    -- set accounting line type info
61585    --
61586    xla_ae_lines_pkg.SetAcctLineType
61587       (p_component_type             => l_component_type
61588       ,p_event_type_code            => l_event_type_code
61589       ,p_line_definition_owner_code => l_line_definition_owner_code
61590       ,p_line_definition_code       => l_line_definition_code
61591       ,p_accounting_line_code       => l_component_code
61592       ,p_accounting_line_type_code  => l_component_type_code
61593       ,p_accounting_line_appl_id    => l_component_appl_id
61594       ,p_amb_context_code           => l_amb_context_code
61595       ,p_entity_code                => l_entity_code
61596       ,p_event_class_code           => l_event_class_code);
61597    --
61598    -- set accounting class
61599    --
61600    xla_ae_lines_pkg.SetAcctClass(
61601            p_accounting_class_code  => 'COST'
61602          , p_ae_header_id           => l_ae_header_id
61603          );
61604 
61605    --
61606    -- set rounding class
61607    --
61608    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61609                       'COST';
61610 
61611    --
61612    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61613    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61614    --
61615    -- bulk performance
61616    --
61617    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61618 
61619    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61620       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61621 
61622    -- 4955764
61623    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61624       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61625 
61626    -- 4458381 Public Sector Enh
61627    
61628    --
61629    -- set accounting attributes for the line type
61630    --
61631    l_entered_amt_idx := 40;
61632    l_accted_amt_idx  := 46;
61633    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
61634    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
61635    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
61636    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
61637    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
61638    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
61639    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
61640    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
61641    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
61642    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
61643    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
61644    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
61645    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
61646    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
61647    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
61648    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
61649    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
61650    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
61651    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
61652    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
61653    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
61654    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
61655    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
61656    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
61657    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
61658    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
61659    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
61660    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
61661    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
61662    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
61663    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
61664    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
61665    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
61666    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
61667    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
61668    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
61669    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
61670    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
61671    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
61672    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
61673    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
61674    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61675    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
61676    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
61680    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61677    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
61678    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
61679    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
61681    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
61682    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
61683    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
61684    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
61685    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
61686    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
61687    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
61688    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
61689    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
61690    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
61691    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
61692    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
61693    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
61694    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
61695    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
61696    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
61697    l_rec_acct_attrs.array_char_value(32)  := 
61698 xla_ae_sources_pkg.GetSystemSourceChar(
61699    p_source_code           => 'XLA_CURRENCY_CODE'
61700  , p_source_type_code      => 'Y'
61701  , p_source_application_id =>  602
61702 );
61703    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
61704    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
61705    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
61706    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
61707    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
61708    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
61709    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
61710    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
61711    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
61712    l_rec_acct_attrs.array_char_value(37)  := 
61713 xla_ae_sources_pkg.GetSystemSourceChar(
61714    p_source_code           => 'XLA_CURRENCY_CODE'
61715  , p_source_type_code      => 'Y'
61716  , p_source_application_id =>  602
61717 );
61718    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
61719    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
61720    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
61721    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
61722    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
61723    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
61724    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
61725    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
61726    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
61727    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
61728    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
61729    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
61730    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
61731    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
61732    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
61733    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_33);
61734    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
61735    l_rec_acct_attrs.array_num_value(46)  := p_source_53;
61736    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
61737    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_33);
61738    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
61739    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_36);
61740    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
61741    l_rec_acct_attrs.array_char_value(49)  := p_source_35;
61742    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
61743    l_rec_acct_attrs.array_num_value(50)  := p_source_62;
61744    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
61745    l_rec_acct_attrs.array_num_value(51)  := p_source_63;
61746 
61747    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61748    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61749 
61750    ---------------------------------------------------------------------------------------------------------------
61751    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61752    ---------------------------------------------------------------------------------------------------------------
61753    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61754 
61755    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61756    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61757 
61758    IF xla_accounting_cache_pkg.GetValueChar
61759          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61760          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61761    AND l_bflow_method_code = 'PRIOR_ENTRY'
61762 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61763    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61764          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61765        )
61766    THEN
61767          xla_ae_lines_pkg.BflowUpgEntry
61768            (p_business_method_code    => l_bflow_method_code
61769            ,p_business_class_code     => l_bflow_class_code
61770            ,p_balance_type            => l_balance_type_code);
61771    ELSE
61772       NULL;
61776    --
61773 -- No business flow processing for business flow method of NONE.
61774    END IF;
61775 
61777    -- call analytical criteria
61778    --
61779    
61780    --
61781    -- call description
61782    --
61783    -- No description or it is inherited.
61784    --
61785    -- call ADRs
61786    -- Bug 4922099
61787    --
61788    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61789         (NVL(l_actual_upg_option, 'N') = 'O') OR
61790         (NVL(l_enc_upg_option, 'N') = 'O')
61791       )
61792    THEN
61793    NULL;
61794    --
61795    --
61796    
61797   l_ccid := AcctDerRule_12(
61798            p_application_id           => p_application_id
61799          , p_ae_header_id             => l_ae_header_id 
61800 , p_source_4 => p_source_4
61801 , p_source_5 => p_source_5
61802 , p_source_6 => p_source_6
61803          , x_transaction_coa_id       => l_adr_transaction_coa_id
61804          , x_accounting_coa_id        => l_adr_accounting_coa_id
61805          , x_value_type_code          => l_adr_value_type_code
61806          , p_side                     => 'NA'
61807    );
61808 
61809    xla_ae_lines_pkg.set_ccid(
61810     p_code_combination_id          => l_ccid
61811   , p_value_type_code              => l_adr_value_type_code
61812   , p_transaction_coa_id           => l_adr_transaction_coa_id
61813   , p_accounting_coa_id            => l_adr_accounting_coa_id
61814   , p_adr_code                     => 'PA_COST_ACCT_RULE'
61815   , p_adr_type_code                => 'S'
61816   , p_component_type               => l_component_type
61817   , p_component_code               => l_component_code
61818   , p_component_type_code          => l_component_type_code
61819   , p_component_appl_id            => l_component_appl_id
61820   , p_amb_context_code             => l_amb_context_code
61821   , p_side                         => 'NA'
61822   );
61823 
61824 
61825    --
61826    --
61827    END IF;
61828    --
61829    -- Bug 4922099
61830    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61831           (NVL(l_enc_upg_option, 'N') = 'O')
61832         ) AND
61833         (l_bflow_method_code = 'PRIOR_ENTRY')
61834       )
61835    THEN
61836       IF
61837       --
61838       1 = 2
61839       --
61840       THEN
61841       xla_accounting_err_pkg.build_message
61842                                     (p_appli_s_name            => 'XLA'
61843                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61844                                     ,p_token_1                 => 'LINE_NUMBER'
61845                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61846                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61847                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61848                                                                              l_component_type
61849                                                                             ,l_component_code
61850                                                                             ,l_component_type_code
61851                                                                             ,l_component_appl_id
61852                                                                             ,l_amb_context_code
61853                                                                             ,l_entity_code
61854                                                                             ,l_event_class_code
61855                                                                            )
61856                                     ,p_token_3                 => 'OWNER'
61857                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61858                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61859                                                                           ,p_lookup_code    => l_component_type_code
61860                                                                          )
61861                                     ,p_token_4                 => 'PRODUCT_NAME'
61862                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61863                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61864                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61865                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61866                                     ,p_ae_header_id            =>  NULL
61867                                        );
61868 
61869         IF (C_LEVEL_ERROR>= g_log_level) THEN
61870                  trace
61871                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61872                       ,p_level    => C_LEVEL_ERROR
61873                       ,p_module   => l_log_module);
61874         END IF;
61875       END IF;
61876    END IF;
61877    --
61878    --
61879    ------------------------------------------------------------------------------------------------
61880    -- 4219869 Business Flow
61881    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61882    -- Prior Entry.  Currently, the following code is always generated.
61883    ------------------------------------------------------------------------------------------------
61884    XLA_AE_LINES_PKG.ValidateCurrentLine;
61885 
61886    ------------------------------------------------------------------------------------
61887    -- 4219869 Business Flow
61888    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61889    ------------------------------------------------------------------------------------
61890    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61894    -- Update journal entry status -- Need to generate this within IF <condition>
61891 
61892    ----------------------------------------------------------------------------------
61893    -- 4219869 Business Flow
61895    ----------------------------------------------------------------------------------
61896    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61897          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61898          ,p_balance_type_code => l_balance_type_code
61899          );
61900 
61901    -------------------------------------------------------------------------------------------
61902    -- 4262811 - Generate the Accrual Reversal lines
61903    -------------------------------------------------------------------------------------------
61904    BEGIN
61905       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61906                               (g_array_event(p_event_id).array_value_num('header_index'));
61907       IF l_acc_rev_flag IS NULL THEN
61908          l_acc_rev_flag := 'N';
61909       END IF;
61910    EXCEPTION
61911       WHEN OTHERS THEN
61912          l_acc_rev_flag := 'N';
61913    END;
61914    --
61915    IF (l_acc_rev_flag = 'Y') THEN
61916 
61917        -- 4645092  ------------------------------------------------------------------------------
61918        -- To allow MPA report to determine if it should generate report process
61919        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61920        ------------------------------------------------------------------------------------------
61921 
61922        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61923        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61924 
61925        --
61926        -- Update the line information that should be overwritten
61927        --
61928        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61929                                          p_header_num   => 1);
61930        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61931 
61932        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61933 
61934        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61935           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61936        END IF;
61937 
61938       --
61939       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61940       --
61941       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61942           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61943       ELSE
61944           ---------------------------------------------------------------------------------------------------
61945           -- 4262811a Switch Sign
61946           ---------------------------------------------------------------------------------------------------
61947           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61948           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61949                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61950           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61951                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61952           -- 5132302
61953           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61954                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61955 
61956       END IF;
61957 
61958       -- 4955764
61959       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61960       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61961 
61962 
61963       XLA_AE_LINES_PKG.ValidateCurrentLine;
61964       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61965 
61966       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61967                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61968                ,p_balance_type_code => l_balance_type_code);
61969 
61970    END IF;
61971 
61972    -----------------------------------------------------------------------------------------
61973    -- 4262811 Multiperiod Accounting
61974    -----------------------------------------------------------------------------------------
61975      -- No MPA option is assigned.
61976 
61977 
61978 END IF;
61979 END IF;
61980 --
61981 
61982 --
61983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61984    trace
61985       (p_msg      => 'END of AcctLineType_127'
61986       ,p_level    => C_LEVEL_PROCEDURE
61987       ,p_module   => l_log_module);
61988 END IF;
61989 --
61990 EXCEPTION
61991   WHEN xla_exceptions_pkg.application_exception THEN
61992       RAISE;
61993   WHEN OTHERS THEN
61994        xla_exceptions_pkg.raise_message
61995            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_127');
61996 END AcctLineType_127;
61997 --
61998 
61999 ---------------------------------------
62000 --
62001 -- PRIVATE FUNCTION
62002 --         AcctLineType_128
62003 --
62004 ---------------------------------------
62005 PROCEDURE AcctLineType_128 (
62006   p_application_id        IN NUMBER
62007  ,p_event_id              IN NUMBER
62008  ,p_calculate_acctd_flag  IN VARCHAR2
62009  ,p_calculate_g_l_flag    IN VARCHAR2
62010  ,p_actual_flag           IN OUT VARCHAR2
62011  ,p_balance_type_code     OUT VARCHAR2
62012  ,p_gain_or_loss_ref      OUT VARCHAR2
62013  
62014 --Budget Code Combination ID
62018 --Allow Account Override Flag
62015  , p_source_3            IN NUMBER
62016 --Cost CCID
62017  , p_source_4            IN NUMBER
62019  , p_source_5            IN VARCHAR2
62020 --Adjustment Cost CCID
62021  , p_source_6            IN NUMBER
62022 --Cost Clearing CCID
62023  , p_source_7            IN NUMBER
62024 --Reversing Line Flag
62025  , p_source_23            IN VARCHAR2
62026 --Actual Upgrade Credit Accounting Class
62027  , p_source_24            IN VARCHAR2
62028 --Entered Currency Code
62029  , p_source_26            IN VARCHAR2
62030 --Exchange Rate Date
62031  , p_source_28            IN DATE
62032 --Exchange Rate
62033  , p_source_29            IN NUMBER
62034 --Exchange Rate Type
62035  , p_source_30            IN VARCHAR2
62036 --Actual Upgrade Debit Accounting Class
62037  , p_source_31            IN VARCHAR2
62038 --Use Actuals Upgrade Attributes Flag
62039  , p_source_32            IN VARCHAR2
62040 --Expenditure Item ID
62041  , p_source_33            IN NUMBER
62042 --Cost Distribution Line Number
62043  , p_source_34            IN NUMBER
62044 --Line Type
62045  , p_source_35            IN VARCHAR2
62046  , p_source_35_meaning    IN VARCHAR2
62047 --Reversed Line Number
62048  , p_source_36            IN NUMBER
62049 --Use Encumbrance Upgrade Attributes Flag
62050  , p_source_44            IN VARCHAR2
62051 --Entered Burdened Cost
62052  , p_source_52            IN NUMBER
62053 --Accounted Burdened Cost
62054  , p_source_53            IN NUMBER
62055 --Encumbrance Amount
62056  , p_source_54            IN NUMBER
62057 --Project Encumbrance Applied to Application Identifier
62058  , p_source_55            IN NUMBER
62059 --Project Encumbrance Applied to Distribution Type
62060  , p_source_56            IN VARCHAR2
62061 --Project Encumbrance Applied to Entity Code
62062  , p_source_57            IN VARCHAR2
62063 --Project Encumbrance Applied to First Distribution ID
62064  , p_source_58            IN NUMBER
62065 --Project Encumbrance Applied to First System Transaction ID
62066  , p_source_59            IN NUMBER
62067 --Project Encumbrance Applied to Second Distribution ID
62068  , p_source_60            IN VARCHAR2
62069 --Encumbrance Upgrade Debit Accounting Class
62070  , p_source_61            IN VARCHAR2
62071 --Encumbrance Type ID
62072  , p_source_62            IN NUMBER
62073 --Project Encumbrance Type ID
62074  , p_source_63            IN NUMBER
62075 )
62076 IS
62077 
62078 l_component_type              VARCHAR2(80);
62079 l_component_code              VARCHAR2(30);
62080 l_component_type_code         VARCHAR2(1);
62081 l_component_appl_id           INTEGER;
62082 l_amb_context_code            VARCHAR2(30);
62083 l_entity_code                 VARCHAR2(30);
62084 l_event_class_code            VARCHAR2(30);
62085 l_ae_header_id                NUMBER;
62086 l_event_type_code             VARCHAR2(30);
62087 l_line_definition_code        VARCHAR2(30);
62088 l_line_definition_owner_code  VARCHAR2(1);
62089 --
62090 -- adr variables
62091 l_segment                     VARCHAR2(30);
62092 l_ccid                        NUMBER;
62093 l_adr_transaction_coa_id      NUMBER;
62094 l_adr_accounting_coa_id       NUMBER;
62095 l_adr_flexfield_segment_code  VARCHAR2(30);
62096 l_adr_flex_value_set_id       NUMBER;
62097 l_adr_value_type_code         VARCHAR2(30);
62098 l_adr_value_combination_id    NUMBER;
62099 l_adr_value_segment_code      VARCHAR2(30);
62100 
62101 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62102 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62103 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62104 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62105 
62106 -- 4262811 Variables ------------------------------------------------------------------------------------------
62107 l_entered_amt_idx             NUMBER;
62108 l_accted_amt_idx              NUMBER;
62109 l_acc_rev_flag                VARCHAR2(1);
62110 l_accrual_line_num            NUMBER;
62111 l_tmp_amt                     NUMBER;
62112 l_acc_rev_natural_side_code   VARCHAR2(1);
62113 
62114 l_num_entries                 NUMBER;
62115 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62116 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62117 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62118 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62119 l_recog_line_1                NUMBER;
62120 l_recog_line_2                NUMBER;
62121 
62122 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62123 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62124 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62125 
62126 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62127 
62128 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62129 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62130 
62131 ---------------------------------------------------------------------------------------------------------------
62132 
62133 
62134 --
62135 -- bulk performance
62136 --
62137 l_balance_type_code           VARCHAR2(1);
62138 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62139 l_log_module                  VARCHAR2(240);
62140 
62141 --
62142 -- Upgrade strategy
62143 --
62144 l_actual_upg_option           VARCHAR2(1);
62145 l_enc_upg_option           VARCHAR2(1);
62146 
62147 --
62148 BEGIN
62149 --
62150 IF g_log_enabled THEN
62151       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
62152 END IF;
62153 --
62154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62155 
62159          ,p_module   => l_log_module);
62156       trace
62157          (p_msg      => 'BEGIN of AcctLineType_128'
62158          ,p_level    => C_LEVEL_PROCEDURE
62160 
62161 END IF;
62162 --
62163 l_component_type             := 'AMB_JLT';
62164 l_component_code             := 'PA_TOT_BURDENED_COST_ADJ';
62165 l_component_type_code        := 'S';
62166 l_component_appl_id          :=  275;
62167 l_amb_context_code           := 'DEFAULT';
62168 l_entity_code                := 'EXPENDITURES';
62169 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
62170 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
62171 l_line_definition_owner_code := 'S';
62172 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
62173 --
62174 l_balance_type_code          := 'A';
62175 l_segment                     := NULL;
62176 l_ccid                        := NULL;
62177 l_adr_transaction_coa_id      := NULL;
62178 l_adr_accounting_coa_id       := NULL;
62179 l_adr_flexfield_segment_code  := NULL;
62180 l_adr_flex_value_set_id       := NULL;
62181 l_adr_value_type_code         := NULL;
62182 l_adr_value_combination_id    := NULL;
62183 l_adr_value_segment_code      := NULL;
62184 
62185 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62186 l_bflow_class_code           := '';    -- 4219869 Business Flow
62187 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62188 l_budgetary_control_flag     := 'N';
62189 
62190 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62191 l_bflow_applied_to_amt       := NULL; -- 5132302
62192 l_entered_amt_idx            := NULL;          -- 4262811
62193 l_accted_amt_idx             := NULL;          -- 4262811
62194 l_acc_rev_flag               := NULL;          -- 4262811
62195 l_accrual_line_num           := NULL;          -- 4262811
62196 l_tmp_amt                    := NULL;          -- 4262811
62197 --
62198  
62199 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62200     l_balance_type_code <> 'B' THEN
62201 IF NVL(p_source_35,'
62202 ') =  'D'
62203  THEN 
62204 
62205    --
62206    XLA_AE_LINES_PKG.SetNewLine;
62207 
62208    p_balance_type_code          := l_balance_type_code;
62209    -- set the flag so later we will know whether the gain loss line needs to be created
62210    
62211    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62212      p_actual_flag :='A';
62213    END IF;
62214 
62215    --
62216    -- bulk performance
62217    --
62218    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62219                                       p_header_num   => 0); -- 4262811
62220    --
62221    -- set accounting line options
62222    --
62223    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62224            p_natural_side_code          => 'D'
62225          , p_gain_or_loss_flag          => 'N'
62226          , p_gl_transfer_mode_code      => 'S'
62227          , p_acct_entry_type_code       => 'A'
62228          , p_switch_side_flag           => 'Y'
62229          , p_merge_duplicate_code       => 'N'
62230          );
62231    --
62232    l_acc_rev_natural_side_code := 'C';  -- 4262811
62233    -- 
62234    --
62235    -- set accounting line type info
62236    --
62237    xla_ae_lines_pkg.SetAcctLineType
62238       (p_component_type             => l_component_type
62239       ,p_event_type_code            => l_event_type_code
62240       ,p_line_definition_owner_code => l_line_definition_owner_code
62241       ,p_line_definition_code       => l_line_definition_code
62242       ,p_accounting_line_code       => l_component_code
62243       ,p_accounting_line_type_code  => l_component_type_code
62244       ,p_accounting_line_appl_id    => l_component_appl_id
62245       ,p_amb_context_code           => l_amb_context_code
62246       ,p_entity_code                => l_entity_code
62247       ,p_event_class_code           => l_event_class_code);
62248    --
62249    -- set accounting class
62250    --
62251    xla_ae_lines_pkg.SetAcctClass(
62252            p_accounting_class_code  => 'COST'
62253          , p_ae_header_id           => l_ae_header_id
62254          );
62255 
62256    --
62257    -- set rounding class
62258    --
62259    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62260                       'COST';
62261 
62262    --
62263    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62264    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62265    --
62266    -- bulk performance
62267    --
62268    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62269 
62270    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62271       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62272 
62273    -- 4955764
62274    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62275       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62276 
62277    -- 4458381 Public Sector Enh
62278    
62279    --
62280    -- set accounting attributes for the line type
62281    --
62282    l_entered_amt_idx := 35;
62283    l_accted_amt_idx  := 40;
62284    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
62285    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
62286    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
62287    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
62288    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
62289    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
62290    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
62294    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
62291    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
62292    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
62293    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
62295    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
62296    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
62297    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
62298    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
62299    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
62300    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
62301    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
62302    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
62303    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
62304    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
62305    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
62306    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
62307    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
62308    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
62309    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
62310    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
62311    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
62312    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
62313    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
62314    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
62315    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
62316    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
62317    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
62318    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
62319    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
62320    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
62321    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
62322    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
62323    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
62324    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
62325    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
62326    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
62327    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
62328    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
62329    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
62330    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
62331    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
62332    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
62333    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
62334    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
62335    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
62336    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
62337    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
62338    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
62339    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
62340    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
62341    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
62342    l_rec_acct_attrs.array_char_value(29)  := p_source_61;
62343    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
62344    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
62345    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
62346    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
62347    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
62348    l_rec_acct_attrs.array_char_value(32)  := 
62349 xla_ae_sources_pkg.GetSystemSourceChar(
62350    p_source_code           => 'XLA_CURRENCY_CODE'
62351  , p_source_type_code      => 'Y'
62352  , p_source_application_id =>  602
62353 );
62354    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
62355    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
62356    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
62357    l_rec_acct_attrs.array_char_value(34)  := p_source_44;
62358    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
62359    l_rec_acct_attrs.array_num_value(35)  := p_source_52;
62360    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
62361    l_rec_acct_attrs.array_char_value(36)  := p_source_26;
62362    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
62363    l_rec_acct_attrs.array_date_value(37)  := p_source_28;
62364    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
62365    l_rec_acct_attrs.array_num_value(38)  := p_source_29;
62366    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
62367    l_rec_acct_attrs.array_char_value(39)  := p_source_30;
62368    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
62369    l_rec_acct_attrs.array_num_value(40)  := p_source_53;
62370    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
62371    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_33);
62372    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
62373    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_36);
62374    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
62375    l_rec_acct_attrs.array_char_value(43)  := p_source_35;
62376    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
62377    l_rec_acct_attrs.array_num_value(44)  := p_source_62;
62378    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
62379    l_rec_acct_attrs.array_num_value(45)  := p_source_63;
62380 
62381    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62385    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62382    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62383 
62384    ---------------------------------------------------------------------------------------------------------------
62386    ---------------------------------------------------------------------------------------------------------------
62387    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62388 
62389    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62390    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62391 
62392    IF xla_accounting_cache_pkg.GetValueChar
62393          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62394          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62395    AND l_bflow_method_code = 'PRIOR_ENTRY'
62396 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62397    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62398          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62399        )
62400    THEN
62401          xla_ae_lines_pkg.BflowUpgEntry
62402            (p_business_method_code    => l_bflow_method_code
62403            ,p_business_class_code     => l_bflow_class_code
62404            ,p_balance_type            => l_balance_type_code);
62405    ELSE
62406       NULL;
62407 -- No business flow processing for business flow method of NONE.
62408    END IF;
62409 
62410    --
62411    -- call analytical criteria
62412    --
62413    
62414    --
62415    -- call description
62416    --
62417    -- No description or it is inherited.
62418    --
62419    -- call ADRs
62420    -- Bug 4922099
62421    --
62422    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62423         (NVL(l_actual_upg_option, 'N') = 'O') OR
62424         (NVL(l_enc_upg_option, 'N') = 'O')
62425       )
62426    THEN
62427    NULL;
62428    --
62429    --
62430    
62431   l_ccid := AcctDerRule_13(
62432            p_application_id           => p_application_id
62433          , p_ae_header_id             => l_ae_header_id 
62434 , p_source_5 => p_source_5
62435 , p_source_6 => p_source_6
62436          , x_transaction_coa_id       => l_adr_transaction_coa_id
62437          , x_accounting_coa_id        => l_adr_accounting_coa_id
62438          , x_value_type_code          => l_adr_value_type_code
62439          , p_side                     => 'NA'
62440    );
62441 
62442    xla_ae_lines_pkg.set_ccid(
62443     p_code_combination_id          => l_ccid
62444   , p_value_type_code              => l_adr_value_type_code
62445   , p_transaction_coa_id           => l_adr_transaction_coa_id
62446   , p_accounting_coa_id            => l_adr_accounting_coa_id
62447   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
62448   , p_adr_type_code                => 'S'
62449   , p_component_type               => l_component_type
62450   , p_component_code               => l_component_code
62451   , p_component_type_code          => l_component_type_code
62452   , p_component_appl_id            => l_component_appl_id
62453   , p_amb_context_code             => l_amb_context_code
62454   , p_side                         => 'NA'
62455   );
62456 
62457 
62458    --
62459    --
62460    END IF;
62461    --
62462    -- Bug 4922099
62463    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62464           (NVL(l_enc_upg_option, 'N') = 'O')
62465         ) AND
62466         (l_bflow_method_code = 'PRIOR_ENTRY')
62467       )
62468    THEN
62469       IF
62470       --
62471       1 = 2
62472       --
62473       THEN
62474       xla_accounting_err_pkg.build_message
62475                                     (p_appli_s_name            => 'XLA'
62476                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62477                                     ,p_token_1                 => 'LINE_NUMBER'
62478                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62479                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62480                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62481                                                                              l_component_type
62482                                                                             ,l_component_code
62483                                                                             ,l_component_type_code
62484                                                                             ,l_component_appl_id
62485                                                                             ,l_amb_context_code
62486                                                                             ,l_entity_code
62487                                                                             ,l_event_class_code
62488                                                                            )
62489                                     ,p_token_3                 => 'OWNER'
62490                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62491                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62492                                                                           ,p_lookup_code    => l_component_type_code
62493                                                                          )
62494                                     ,p_token_4                 => 'PRODUCT_NAME'
62495                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62496                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62500                                        );
62497                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62498                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62499                                     ,p_ae_header_id            =>  NULL
62501 
62502         IF (C_LEVEL_ERROR>= g_log_level) THEN
62503                  trace
62504                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62505                       ,p_level    => C_LEVEL_ERROR
62506                       ,p_module   => l_log_module);
62507         END IF;
62508       END IF;
62509    END IF;
62510    --
62511    --
62512    ------------------------------------------------------------------------------------------------
62513    -- 4219869 Business Flow
62514    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62515    -- Prior Entry.  Currently, the following code is always generated.
62516    ------------------------------------------------------------------------------------------------
62517    XLA_AE_LINES_PKG.ValidateCurrentLine;
62518 
62519    ------------------------------------------------------------------------------------
62520    -- 4219869 Business Flow
62521    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62522    ------------------------------------------------------------------------------------
62523    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62524 
62525    ----------------------------------------------------------------------------------
62526    -- 4219869 Business Flow
62527    -- Update journal entry status -- Need to generate this within IF <condition>
62528    ----------------------------------------------------------------------------------
62529    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62530          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62531          ,p_balance_type_code => l_balance_type_code
62532          );
62533 
62534    -------------------------------------------------------------------------------------------
62535    -- 4262811 - Generate the Accrual Reversal lines
62536    -------------------------------------------------------------------------------------------
62537    BEGIN
62538       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62539                               (g_array_event(p_event_id).array_value_num('header_index'));
62540       IF l_acc_rev_flag IS NULL THEN
62541          l_acc_rev_flag := 'N';
62542       END IF;
62543    EXCEPTION
62544       WHEN OTHERS THEN
62545          l_acc_rev_flag := 'N';
62546    END;
62547    --
62548    IF (l_acc_rev_flag = 'Y') THEN
62549 
62550        -- 4645092  ------------------------------------------------------------------------------
62551        -- To allow MPA report to determine if it should generate report process
62552        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62553        ------------------------------------------------------------------------------------------
62554 
62555        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62556        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62557 
62558        --
62559        -- Update the line information that should be overwritten
62560        --
62561        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62562                                          p_header_num   => 1);
62563        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62564 
62565        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62566 
62567        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62568           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62569        END IF;
62570 
62571       --
62572       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62573       --
62574       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62575           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62576       ELSE
62577           ---------------------------------------------------------------------------------------------------
62578           -- 4262811a Switch Sign
62579           ---------------------------------------------------------------------------------------------------
62580           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62581           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62582                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62583           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62584                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62585           -- 5132302
62586           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62587                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62588 
62589       END IF;
62590 
62591       -- 4955764
62592       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62593       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62594 
62595 
62596       XLA_AE_LINES_PKG.ValidateCurrentLine;
62597       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62598 
62599       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62600                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62601                ,p_balance_type_code => l_balance_type_code);
62602 
62603    END IF;
62604 
62608      -- No MPA option is assigned.
62605    -----------------------------------------------------------------------------------------
62606    -- 4262811 Multiperiod Accounting
62607    -----------------------------------------------------------------------------------------
62609 
62610 
62611 END IF;
62612 END IF;
62613 --
62614 
62615 --
62616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62617    trace
62618       (p_msg      => 'END of AcctLineType_128'
62619       ,p_level    => C_LEVEL_PROCEDURE
62620       ,p_module   => l_log_module);
62621 END IF;
62622 --
62623 EXCEPTION
62624   WHEN xla_exceptions_pkg.application_exception THEN
62625       RAISE;
62626   WHEN OTHERS THEN
62627        xla_exceptions_pkg.raise_message
62628            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_128');
62629 END AcctLineType_128;
62630 --
62631 
62632 ---------------------------------------
62633 --
62634 -- PRIVATE FUNCTION
62635 --         AcctLineType_129
62636 --
62637 ---------------------------------------
62638 PROCEDURE AcctLineType_129 (
62639   p_application_id        IN NUMBER
62640  ,p_event_id              IN NUMBER
62641  ,p_calculate_acctd_flag  IN VARCHAR2
62642  ,p_calculate_g_l_flag    IN VARCHAR2
62643  ,p_actual_flag           IN OUT VARCHAR2
62644  ,p_balance_type_code     OUT VARCHAR2
62645  ,p_gain_or_loss_ref      OUT VARCHAR2
62646  
62647 --Budget Code Combination ID
62648  , p_source_3            IN NUMBER
62649 --Cost CCID
62650  , p_source_4            IN NUMBER
62651 --Allow Account Override Flag
62652  , p_source_5            IN VARCHAR2
62653 --Cost Clearing CCID
62654  , p_source_7            IN NUMBER
62655 --Adjustment Cost Clearing CCID
62656  , p_source_8            IN NUMBER
62657 --Reversing Line Flag
62658  , p_source_23            IN VARCHAR2
62659 --Actual Upgrade Credit Accounting Class
62660  , p_source_24            IN VARCHAR2
62661 --Entered Currency Code
62662  , p_source_26            IN VARCHAR2
62663 --Exchange Rate Date
62664  , p_source_28            IN DATE
62665 --Exchange Rate
62666  , p_source_29            IN NUMBER
62667 --Exchange Rate Type
62668  , p_source_30            IN VARCHAR2
62669 --Actual Upgrade Debit Accounting Class
62670  , p_source_31            IN VARCHAR2
62671 --Use Actuals Upgrade Attributes Flag
62672  , p_source_32            IN VARCHAR2
62673 --Expenditure Item ID
62674  , p_source_33            IN NUMBER
62675 --Cost Distribution Line Number
62676  , p_source_34            IN NUMBER
62677 --Line Type
62678  , p_source_35            IN VARCHAR2
62679  , p_source_35_meaning    IN VARCHAR2
62680 --Reversed Line Number
62681  , p_source_36            IN NUMBER
62682 --Encumbrance Upgrade Credit Accounting Class
62683  , p_source_41            IN VARCHAR2
62684 --Use Encumbrance Upgrade Attributes Flag
62685  , p_source_44            IN VARCHAR2
62686 --Entered Burdened Cost
62687  , p_source_52            IN NUMBER
62688 --Accounted Burdened Cost
62689  , p_source_53            IN NUMBER
62690 --Encumbrance Amount
62691  , p_source_54            IN NUMBER
62692 --Project Encumbrance Applied to Application Identifier
62693  , p_source_55            IN NUMBER
62694 --Project Encumbrance Applied to Distribution Type
62695  , p_source_56            IN VARCHAR2
62696 --Project Encumbrance Applied to Entity Code
62697  , p_source_57            IN VARCHAR2
62698 --Project Encumbrance Applied to First Distribution ID
62699  , p_source_58            IN NUMBER
62700 --Project Encumbrance Applied to First System Transaction ID
62701  , p_source_59            IN NUMBER
62702 --Project Encumbrance Applied to Second Distribution ID
62703  , p_source_60            IN VARCHAR2
62704 --Encumbrance Upgrade Debit Accounting Class
62705  , p_source_61            IN VARCHAR2
62706 --Encumbrance Type ID
62707  , p_source_62            IN NUMBER
62708 --Project Encumbrance Type ID
62709  , p_source_63            IN NUMBER
62710 )
62711 IS
62712 
62713 l_component_type              VARCHAR2(80);
62714 l_component_code              VARCHAR2(30);
62715 l_component_type_code         VARCHAR2(1);
62716 l_component_appl_id           INTEGER;
62717 l_amb_context_code            VARCHAR2(30);
62718 l_entity_code                 VARCHAR2(30);
62719 l_event_class_code            VARCHAR2(30);
62720 l_ae_header_id                NUMBER;
62721 l_event_type_code             VARCHAR2(30);
62722 l_line_definition_code        VARCHAR2(30);
62723 l_line_definition_owner_code  VARCHAR2(1);
62724 --
62725 -- adr variables
62726 l_segment                     VARCHAR2(30);
62727 l_ccid                        NUMBER;
62728 l_adr_transaction_coa_id      NUMBER;
62729 l_adr_accounting_coa_id       NUMBER;
62730 l_adr_flexfield_segment_code  VARCHAR2(30);
62731 l_adr_flex_value_set_id       NUMBER;
62732 l_adr_value_type_code         VARCHAR2(30);
62733 l_adr_value_combination_id    NUMBER;
62734 l_adr_value_segment_code      VARCHAR2(30);
62735 
62736 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62737 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62738 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62739 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62740 
62741 -- 4262811 Variables ------------------------------------------------------------------------------------------
62742 l_entered_amt_idx             NUMBER;
62743 l_accted_amt_idx              NUMBER;
62744 l_acc_rev_flag                VARCHAR2(1);
62745 l_accrual_line_num            NUMBER;
62746 l_tmp_amt                     NUMBER;
62747 l_acc_rev_natural_side_code   VARCHAR2(1);
62748 
62749 l_num_entries                 NUMBER;
62750 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62754 l_recog_line_1                NUMBER;
62751 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62752 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62753 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62755 l_recog_line_2                NUMBER;
62756 
62757 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62758 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62759 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62760 
62761 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62762 
62763 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62764 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62765 
62766 ---------------------------------------------------------------------------------------------------------------
62767 
62768 
62769 --
62770 -- bulk performance
62771 --
62772 l_balance_type_code           VARCHAR2(1);
62773 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62774 l_log_module                  VARCHAR2(240);
62775 
62776 --
62777 -- Upgrade strategy
62778 --
62779 l_actual_upg_option           VARCHAR2(1);
62780 l_enc_upg_option           VARCHAR2(1);
62781 
62782 --
62783 BEGIN
62784 --
62785 IF g_log_enabled THEN
62786       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
62787 END IF;
62788 --
62789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62790 
62791       trace
62792          (p_msg      => 'BEGIN of AcctLineType_129'
62793          ,p_level    => C_LEVEL_PROCEDURE
62794          ,p_module   => l_log_module);
62795 
62796 END IF;
62797 --
62798 l_component_type             := 'AMB_JLT';
62799 l_component_code             := 'PA_TOT_BURDENED_COST_CLEARING';
62800 l_component_type_code        := 'S';
62801 l_component_appl_id          :=  275;
62802 l_amb_context_code           := 'DEFAULT';
62803 l_entity_code                := 'EXPENDITURES';
62804 l_event_class_code           := 'TOT_BURDENED_COST';
62805 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
62806 l_line_definition_owner_code := 'S';
62807 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
62808 --
62809 l_balance_type_code          := 'A';
62810 l_segment                     := NULL;
62811 l_ccid                        := NULL;
62812 l_adr_transaction_coa_id      := NULL;
62813 l_adr_accounting_coa_id       := NULL;
62814 l_adr_flexfield_segment_code  := NULL;
62815 l_adr_flex_value_set_id       := NULL;
62816 l_adr_value_type_code         := NULL;
62817 l_adr_value_combination_id    := NULL;
62818 l_adr_value_segment_code      := NULL;
62819 
62820 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62821 l_bflow_class_code           := '';    -- 4219869 Business Flow
62822 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62823 l_budgetary_control_flag     := 'N';
62824 
62825 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62826 l_bflow_applied_to_amt       := NULL; -- 5132302
62827 l_entered_amt_idx            := NULL;          -- 4262811
62828 l_accted_amt_idx             := NULL;          -- 4262811
62829 l_acc_rev_flag               := NULL;          -- 4262811
62830 l_accrual_line_num           := NULL;          -- 4262811
62831 l_tmp_amt                    := NULL;          -- 4262811
62832 --
62833  
62834 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62835     l_balance_type_code <> 'B' THEN
62836 IF NVL(p_source_35,'
62837 ') =  'C'
62838  THEN 
62839 
62840    --
62841    XLA_AE_LINES_PKG.SetNewLine;
62842 
62843    p_balance_type_code          := l_balance_type_code;
62844    -- set the flag so later we will know whether the gain loss line needs to be created
62845    
62846    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62847      p_actual_flag :='A';
62848    END IF;
62849 
62850    --
62851    -- bulk performance
62852    --
62853    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62854                                       p_header_num   => 0); -- 4262811
62855    --
62856    -- set accounting line options
62857    --
62858    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62859            p_natural_side_code          => 'C'
62860          , p_gain_or_loss_flag          => 'N'
62861          , p_gl_transfer_mode_code      => 'S'
62862          , p_acct_entry_type_code       => 'A'
62863          , p_switch_side_flag           => 'Y'
62864          , p_merge_duplicate_code       => 'N'
62865          );
62866    --
62867    l_acc_rev_natural_side_code := 'D';  -- 4262811
62868    -- 
62869    --
62870    -- set accounting line type info
62871    --
62872    xla_ae_lines_pkg.SetAcctLineType
62873       (p_component_type             => l_component_type
62874       ,p_event_type_code            => l_event_type_code
62875       ,p_line_definition_owner_code => l_line_definition_owner_code
62876       ,p_line_definition_code       => l_line_definition_code
62877       ,p_accounting_line_code       => l_component_code
62878       ,p_accounting_line_type_code  => l_component_type_code
62879       ,p_accounting_line_appl_id    => l_component_appl_id
62880       ,p_amb_context_code           => l_amb_context_code
62881       ,p_entity_code                => l_entity_code
62882       ,p_event_class_code           => l_event_class_code);
62883    --
62884    -- set accounting class
62885    --
62886    xla_ae_lines_pkg.SetAcctClass(
62887            p_accounting_class_code  => 'COST_CLEARING'
62888          , p_ae_header_id           => l_ae_header_id
62889          );
62890 
62891    --
62892    -- set rounding class
62896 
62893    --
62894    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62895                       'COST_CLEARING';
62897    --
62898    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62899    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62900    --
62901    -- bulk performance
62902    --
62903    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62904 
62905    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62906       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62907 
62908    -- 4955764
62909    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62910       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62911 
62912    -- 4458381 Public Sector Enh
62913    
62914    --
62915    -- set accounting attributes for the line type
62916    --
62917    l_entered_amt_idx := 40;
62918    l_accted_amt_idx  := 46;
62919    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
62920    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
62921    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
62922    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
62923    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
62924    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
62925    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
62926    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
62927    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
62928    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
62929    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
62930    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
62931    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
62932    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
62933    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
62934    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
62935    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
62936    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
62937    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
62938    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
62939    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
62940    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
62941    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
62942    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
62943    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
62944    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
62945    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
62946    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
62947    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
62948    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
62949    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
62950    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
62951    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
62952    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
62953    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
62954    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
62955    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
62956    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
62957    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
62958    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
62959    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
62960    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
62961    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
62962    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
62963    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
62964    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
62965    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
62966    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
62967    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
62968    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
62969    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
62970    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
62971    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
62972    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
62973    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
62974    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
62975    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
62976    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_ACCT_CLASS';
62977    l_rec_acct_attrs.array_char_value(29)  := p_source_41;
62978    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_CCID';
62979    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
62980    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_AMT';
62981    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
62982    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_ENTERED_CURR';
62983    l_rec_acct_attrs.array_char_value(32)  := 
62984 xla_ae_sources_pkg.GetSystemSourceChar(
62985    p_source_code           => 'XLA_CURRENCY_CODE'
62986  , p_source_type_code      => 'Y'
62987  , p_source_application_id =>  602
62988 );
62989    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_CR_LEDGER_AMT';
62990    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
62991    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_ACCT_CLASS';
62995    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_AMT';
62992    l_rec_acct_attrs.array_char_value(34)  := p_source_61;
62993    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_CCID';
62994    l_rec_acct_attrs.array_num_value(35)  := p_source_3;
62996    l_rec_acct_attrs.array_num_value(36)  := p_source_54;
62997    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_ENTERED_CURR';
62998    l_rec_acct_attrs.array_char_value(37)  := 
62999 xla_ae_sources_pkg.GetSystemSourceChar(
63000    p_source_code           => 'XLA_CURRENCY_CODE'
63001  , p_source_type_code      => 'Y'
63002  , p_source_application_id =>  602
63003 );
63004    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_DR_LEDGER_AMT';
63005    l_rec_acct_attrs.array_num_value(38)  := p_source_54;
63006    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENC_UPG_OPTION';
63007    l_rec_acct_attrs.array_char_value(39)  := p_source_44;
63008    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_AMOUNT';
63009    l_rec_acct_attrs.array_num_value(40)  := p_source_52;
63010    l_rec_acct_attrs.array_acct_attr_code(41) := 'ENTERED_CURRENCY_CODE';
63011    l_rec_acct_attrs.array_char_value(41)  := p_source_26;
63012    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_DATE';
63013    l_rec_acct_attrs.array_date_value(42)  := p_source_28;
63014    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE';
63015    l_rec_acct_attrs.array_num_value(43)  := p_source_29;
63016    l_rec_acct_attrs.array_acct_attr_code(44) := 'EXCHANGE_RATE_TYPE';
63017    l_rec_acct_attrs.array_char_value(44)  := p_source_30;
63018    l_rec_acct_attrs.array_acct_attr_code(45) := 'GAIN_LOSS_REFERENCE';
63019    l_rec_acct_attrs.array_num_value(45)  :=  to_char(p_source_33);
63020    l_rec_acct_attrs.array_acct_attr_code(46) := 'LEDGER_AMOUNT';
63021    l_rec_acct_attrs.array_num_value(46)  := p_source_53;
63022    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID1';
63023    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_33);
63024    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_ID2';
63025    l_rec_acct_attrs.array_num_value(48)  :=  to_char(p_source_36);
63026    l_rec_acct_attrs.array_acct_attr_code(49) := 'REVERSED_DISTRIBUTION_TYPE';
63027    l_rec_acct_attrs.array_char_value(49)  := p_source_35;
63028    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_CR_ENC_TYPE_ID';
63029    l_rec_acct_attrs.array_num_value(50)  := p_source_62;
63030    l_rec_acct_attrs.array_acct_attr_code(51) := 'UPG_DR_ENC_TYPE_ID';
63031    l_rec_acct_attrs.array_num_value(51)  := p_source_63;
63032 
63033    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63034    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63035 
63036    ---------------------------------------------------------------------------------------------------------------
63037    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63038    ---------------------------------------------------------------------------------------------------------------
63039    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63040 
63041    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63042    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63043 
63044    IF xla_accounting_cache_pkg.GetValueChar
63045          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63046          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63047    AND l_bflow_method_code = 'PRIOR_ENTRY'
63048 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63049    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63050          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63051        )
63052    THEN
63053          xla_ae_lines_pkg.BflowUpgEntry
63054            (p_business_method_code    => l_bflow_method_code
63055            ,p_business_class_code     => l_bflow_class_code
63056            ,p_balance_type            => l_balance_type_code);
63057    ELSE
63058       NULL;
63059 -- No business flow processing for business flow method of NONE.
63060    END IF;
63061 
63062    --
63063    -- call analytical criteria
63064    --
63065    
63066    --
63067    -- call description
63068    --
63069    -- No description or it is inherited.
63070    --
63071    -- call ADRs
63072    -- Bug 4922099
63073    --
63074    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63075         (NVL(l_actual_upg_option, 'N') = 'O') OR
63076         (NVL(l_enc_upg_option, 'N') = 'O')
63077       )
63078    THEN
63079    NULL;
63080    --
63081    --
63082    
63083   l_ccid := AcctDerRule_14(
63084            p_application_id           => p_application_id
63085          , p_ae_header_id             => l_ae_header_id 
63086 , p_source_5 => p_source_5
63087 , p_source_7 => p_source_7
63088 , p_source_8 => p_source_8
63089          , x_transaction_coa_id       => l_adr_transaction_coa_id
63090          , x_accounting_coa_id        => l_adr_accounting_coa_id
63091          , x_value_type_code          => l_adr_value_type_code
63092          , p_side                     => 'NA'
63093    );
63094 
63095    xla_ae_lines_pkg.set_ccid(
63096     p_code_combination_id          => l_ccid
63097   , p_value_type_code              => l_adr_value_type_code
63098   , p_transaction_coa_id           => l_adr_transaction_coa_id
63099   , p_accounting_coa_id            => l_adr_accounting_coa_id
63100   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
63101   , p_adr_type_code                => 'S'
63102   , p_component_type               => l_component_type
63103   , p_component_code               => l_component_code
63104   , p_component_type_code          => l_component_type_code
63105   , p_component_appl_id            => l_component_appl_id
63109 
63106   , p_amb_context_code             => l_amb_context_code
63107   , p_side                         => 'NA'
63108   );
63110 
63111    --
63112    --
63113    END IF;
63114    --
63115    -- Bug 4922099
63116    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63117           (NVL(l_enc_upg_option, 'N') = 'O')
63118         ) AND
63119         (l_bflow_method_code = 'PRIOR_ENTRY')
63120       )
63121    THEN
63122       IF
63123       --
63124       1 = 2
63125       --
63126       THEN
63127       xla_accounting_err_pkg.build_message
63128                                     (p_appli_s_name            => 'XLA'
63129                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63130                                     ,p_token_1                 => 'LINE_NUMBER'
63131                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63132                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63133                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63134                                                                              l_component_type
63135                                                                             ,l_component_code
63136                                                                             ,l_component_type_code
63137                                                                             ,l_component_appl_id
63138                                                                             ,l_amb_context_code
63139                                                                             ,l_entity_code
63140                                                                             ,l_event_class_code
63141                                                                            )
63142                                     ,p_token_3                 => 'OWNER'
63143                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63144                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63145                                                                           ,p_lookup_code    => l_component_type_code
63146                                                                          )
63147                                     ,p_token_4                 => 'PRODUCT_NAME'
63148                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63149                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63150                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63151                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63152                                     ,p_ae_header_id            =>  NULL
63153                                        );
63154 
63155         IF (C_LEVEL_ERROR>= g_log_level) THEN
63156                  trace
63157                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63158                       ,p_level    => C_LEVEL_ERROR
63159                       ,p_module   => l_log_module);
63160         END IF;
63161       END IF;
63162    END IF;
63163    --
63164    --
63165    ------------------------------------------------------------------------------------------------
63166    -- 4219869 Business Flow
63167    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63168    -- Prior Entry.  Currently, the following code is always generated.
63169    ------------------------------------------------------------------------------------------------
63170    XLA_AE_LINES_PKG.ValidateCurrentLine;
63171 
63172    ------------------------------------------------------------------------------------
63173    -- 4219869 Business Flow
63174    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63175    ------------------------------------------------------------------------------------
63176    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63177 
63178    ----------------------------------------------------------------------------------
63179    -- 4219869 Business Flow
63180    -- Update journal entry status -- Need to generate this within IF <condition>
63181    ----------------------------------------------------------------------------------
63182    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63183          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63184          ,p_balance_type_code => l_balance_type_code
63185          );
63186 
63187    -------------------------------------------------------------------------------------------
63188    -- 4262811 - Generate the Accrual Reversal lines
63189    -------------------------------------------------------------------------------------------
63190    BEGIN
63191       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63192                               (g_array_event(p_event_id).array_value_num('header_index'));
63193       IF l_acc_rev_flag IS NULL THEN
63194          l_acc_rev_flag := 'N';
63195       END IF;
63196    EXCEPTION
63197       WHEN OTHERS THEN
63198          l_acc_rev_flag := 'N';
63199    END;
63200    --
63201    IF (l_acc_rev_flag = 'Y') THEN
63202 
63203        -- 4645092  ------------------------------------------------------------------------------
63204        -- To allow MPA report to determine if it should generate report process
63205        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63206        ------------------------------------------------------------------------------------------
63207 
63208        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63209        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63210 
63211        --
63212        -- Update the line information that should be overwritten
63213        --
63217 
63214        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63215                                          p_header_num   => 1);
63216        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63218        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63219 
63220        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63221           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63222        END IF;
63223 
63224       --
63225       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63226       --
63227       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63228           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63229       ELSE
63230           ---------------------------------------------------------------------------------------------------
63231           -- 4262811a Switch Sign
63232           ---------------------------------------------------------------------------------------------------
63233           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63234           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63235                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63236           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63237                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63238           -- 5132302
63239           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63240                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63241 
63242       END IF;
63243 
63244       -- 4955764
63245       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63246       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63247 
63248 
63249       XLA_AE_LINES_PKG.ValidateCurrentLine;
63250       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63251 
63252       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63253                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63254                ,p_balance_type_code => l_balance_type_code);
63255 
63256    END IF;
63257 
63258    -----------------------------------------------------------------------------------------
63259    -- 4262811 Multiperiod Accounting
63260    -----------------------------------------------------------------------------------------
63261      -- No MPA option is assigned.
63262 
63263 
63264 END IF;
63265 END IF;
63266 --
63267 
63268 --
63269 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63270    trace
63271       (p_msg      => 'END of AcctLineType_129'
63272       ,p_level    => C_LEVEL_PROCEDURE
63273       ,p_module   => l_log_module);
63274 END IF;
63275 --
63276 EXCEPTION
63277   WHEN xla_exceptions_pkg.application_exception THEN
63278       RAISE;
63279   WHEN OTHERS THEN
63280        xla_exceptions_pkg.raise_message
63281            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_129');
63282 END AcctLineType_129;
63283 --
63284 
63285 ---------------------------------------
63286 --
63287 -- PRIVATE FUNCTION
63288 --         AcctLineType_130
63289 --
63290 ---------------------------------------
63291 PROCEDURE AcctLineType_130 (
63292   p_application_id        IN NUMBER
63293  ,p_event_id              IN NUMBER
63294  ,p_calculate_acctd_flag  IN VARCHAR2
63295  ,p_calculate_g_l_flag    IN VARCHAR2
63296  ,p_actual_flag           IN OUT VARCHAR2
63297  ,p_balance_type_code     OUT VARCHAR2
63298  ,p_gain_or_loss_ref      OUT VARCHAR2
63299  
63300 --Budget Code Combination ID
63301  , p_source_3            IN NUMBER
63302 --Cost CCID
63303  , p_source_4            IN NUMBER
63304 --Allow Account Override Flag
63305  , p_source_5            IN VARCHAR2
63306 --Cost Clearing CCID
63307  , p_source_7            IN NUMBER
63308 --Adjustment Cost Clearing CCID
63309  , p_source_8            IN NUMBER
63310 --Reversing Line Flag
63311  , p_source_23            IN VARCHAR2
63312 --Actual Upgrade Credit Accounting Class
63313  , p_source_24            IN VARCHAR2
63314 --Entered Currency Code
63315  , p_source_26            IN VARCHAR2
63316 --Exchange Rate Date
63317  , p_source_28            IN DATE
63318 --Exchange Rate
63319  , p_source_29            IN NUMBER
63320 --Exchange Rate Type
63321  , p_source_30            IN VARCHAR2
63322 --Actual Upgrade Debit Accounting Class
63323  , p_source_31            IN VARCHAR2
63324 --Use Actuals Upgrade Attributes Flag
63325  , p_source_32            IN VARCHAR2
63326 --Expenditure Item ID
63327  , p_source_33            IN NUMBER
63328 --Cost Distribution Line Number
63329  , p_source_34            IN NUMBER
63330 --Line Type
63331  , p_source_35            IN VARCHAR2
63332  , p_source_35_meaning    IN VARCHAR2
63333 --Reversed Line Number
63334  , p_source_36            IN NUMBER
63335 --Use Encumbrance Upgrade Attributes Flag
63336  , p_source_44            IN VARCHAR2
63337 --Entered Burdened Cost
63338  , p_source_52            IN NUMBER
63339 --Accounted Burdened Cost
63340  , p_source_53            IN NUMBER
63341 --Encumbrance Amount
63342  , p_source_54            IN NUMBER
63343 --Project Encumbrance Applied to Application Identifier
63344  , p_source_55            IN NUMBER
63345 --Project Encumbrance Applied to Distribution Type
63346  , p_source_56            IN VARCHAR2
63350  , p_source_58            IN NUMBER
63347 --Project Encumbrance Applied to Entity Code
63348  , p_source_57            IN VARCHAR2
63349 --Project Encumbrance Applied to First Distribution ID
63351 --Project Encumbrance Applied to First System Transaction ID
63352  , p_source_59            IN NUMBER
63353 --Project Encumbrance Applied to Second Distribution ID
63354  , p_source_60            IN VARCHAR2
63355 --Encumbrance Upgrade Debit Accounting Class
63356  , p_source_61            IN VARCHAR2
63357 --Encumbrance Type ID
63358  , p_source_62            IN NUMBER
63359 --Project Encumbrance Type ID
63360  , p_source_63            IN NUMBER
63361 )
63362 IS
63363 
63364 l_component_type              VARCHAR2(80);
63365 l_component_code              VARCHAR2(30);
63366 l_component_type_code         VARCHAR2(1);
63367 l_component_appl_id           INTEGER;
63368 l_amb_context_code            VARCHAR2(30);
63369 l_entity_code                 VARCHAR2(30);
63370 l_event_class_code            VARCHAR2(30);
63371 l_ae_header_id                NUMBER;
63372 l_event_type_code             VARCHAR2(30);
63373 l_line_definition_code        VARCHAR2(30);
63374 l_line_definition_owner_code  VARCHAR2(1);
63375 --
63376 -- adr variables
63377 l_segment                     VARCHAR2(30);
63378 l_ccid                        NUMBER;
63379 l_adr_transaction_coa_id      NUMBER;
63380 l_adr_accounting_coa_id       NUMBER;
63381 l_adr_flexfield_segment_code  VARCHAR2(30);
63382 l_adr_flex_value_set_id       NUMBER;
63383 l_adr_value_type_code         VARCHAR2(30);
63384 l_adr_value_combination_id    NUMBER;
63385 l_adr_value_segment_code      VARCHAR2(30);
63386 
63387 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63388 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63389 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63390 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63391 
63392 -- 4262811 Variables ------------------------------------------------------------------------------------------
63393 l_entered_amt_idx             NUMBER;
63394 l_accted_amt_idx              NUMBER;
63395 l_acc_rev_flag                VARCHAR2(1);
63396 l_accrual_line_num            NUMBER;
63397 l_tmp_amt                     NUMBER;
63398 l_acc_rev_natural_side_code   VARCHAR2(1);
63399 
63400 l_num_entries                 NUMBER;
63401 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63402 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63403 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63404 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63405 l_recog_line_1                NUMBER;
63406 l_recog_line_2                NUMBER;
63407 
63408 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63409 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63410 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63411 
63412 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63413 
63414 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63415 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63416 
63417 ---------------------------------------------------------------------------------------------------------------
63418 
63419 
63420 --
63421 -- bulk performance
63422 --
63423 l_balance_type_code           VARCHAR2(1);
63424 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63425 l_log_module                  VARCHAR2(240);
63426 
63427 --
63428 -- Upgrade strategy
63429 --
63430 l_actual_upg_option           VARCHAR2(1);
63431 l_enc_upg_option           VARCHAR2(1);
63432 
63433 --
63434 BEGIN
63435 --
63436 IF g_log_enabled THEN
63437       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_130';
63438 END IF;
63439 --
63440 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63441 
63442       trace
63443          (p_msg      => 'BEGIN of AcctLineType_130'
63444          ,p_level    => C_LEVEL_PROCEDURE
63445          ,p_module   => l_log_module);
63446 
63447 END IF;
63448 --
63449 l_component_type             := 'AMB_JLT';
63450 l_component_code             := 'PA_TOT_BURDENED_COST_CLEAR_ADJ';
63451 l_component_type_code        := 'S';
63452 l_component_appl_id          :=  275;
63453 l_amb_context_code           := 'DEFAULT';
63454 l_entity_code                := 'EXPENDITURES';
63455 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
63456 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
63457 l_line_definition_owner_code := 'S';
63458 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
63459 --
63460 l_balance_type_code          := 'A';
63461 l_segment                     := NULL;
63462 l_ccid                        := NULL;
63463 l_adr_transaction_coa_id      := NULL;
63464 l_adr_accounting_coa_id       := NULL;
63465 l_adr_flexfield_segment_code  := NULL;
63466 l_adr_flex_value_set_id       := NULL;
63467 l_adr_value_type_code         := NULL;
63468 l_adr_value_combination_id    := NULL;
63469 l_adr_value_segment_code      := NULL;
63470 
63471 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63472 l_bflow_class_code           := '';    -- 4219869 Business Flow
63473 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63474 l_budgetary_control_flag     := 'N';
63475 
63476 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63477 l_bflow_applied_to_amt       := NULL; -- 5132302
63478 l_entered_amt_idx            := NULL;          -- 4262811
63479 l_accted_amt_idx             := NULL;          -- 4262811
63480 l_acc_rev_flag               := NULL;          -- 4262811
63484  
63481 l_accrual_line_num           := NULL;          -- 4262811
63482 l_tmp_amt                    := NULL;          -- 4262811
63483 --
63485 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63486     l_balance_type_code <> 'B' THEN
63487 IF NVL(p_source_35,'
63488 ') =  'C'
63489  THEN 
63490 
63491    --
63492    XLA_AE_LINES_PKG.SetNewLine;
63493 
63494    p_balance_type_code          := l_balance_type_code;
63495    -- set the flag so later we will know whether the gain loss line needs to be created
63496    
63497    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63498      p_actual_flag :='A';
63499    END IF;
63500 
63501    --
63502    -- bulk performance
63503    --
63504    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63505                                       p_header_num   => 0); -- 4262811
63506    --
63507    -- set accounting line options
63508    --
63509    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63510            p_natural_side_code          => 'C'
63511          , p_gain_or_loss_flag          => 'N'
63512          , p_gl_transfer_mode_code      => 'S'
63513          , p_acct_entry_type_code       => 'A'
63514          , p_switch_side_flag           => 'Y'
63515          , p_merge_duplicate_code       => 'N'
63516          );
63517    --
63518    l_acc_rev_natural_side_code := 'D';  -- 4262811
63519    -- 
63520    --
63521    -- set accounting line type info
63522    --
63523    xla_ae_lines_pkg.SetAcctLineType
63524       (p_component_type             => l_component_type
63525       ,p_event_type_code            => l_event_type_code
63526       ,p_line_definition_owner_code => l_line_definition_owner_code
63527       ,p_line_definition_code       => l_line_definition_code
63528       ,p_accounting_line_code       => l_component_code
63529       ,p_accounting_line_type_code  => l_component_type_code
63530       ,p_accounting_line_appl_id    => l_component_appl_id
63531       ,p_amb_context_code           => l_amb_context_code
63532       ,p_entity_code                => l_entity_code
63533       ,p_event_class_code           => l_event_class_code);
63534    --
63535    -- set accounting class
63536    --
63537    xla_ae_lines_pkg.SetAcctClass(
63538            p_accounting_class_code  => 'COST_CLEARING'
63539          , p_ae_header_id           => l_ae_header_id
63540          );
63541 
63542    --
63543    -- set rounding class
63544    --
63545    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63546                       'COST_CLEARING';
63547 
63548    --
63549    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63550    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63551    --
63552    -- bulk performance
63553    --
63554    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63555 
63556    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63557       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63558 
63559    -- 4955764
63560    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63561       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63562 
63563    -- 4458381 Public Sector Enh
63564    
63565    --
63566    -- set accounting attributes for the line type
63567    --
63568    l_entered_amt_idx := 35;
63569    l_accted_amt_idx  := 40;
63570    l_bflow_applied_to_amt_idx  := 19;  -- 5132302
63571    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
63572    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
63573    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
63574    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
63575    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
63576    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
63577    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
63578    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
63579    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
63580    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
63581    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
63582    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
63583    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
63584    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
63585    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
63586    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
63587    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
63588    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
63589    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
63590    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
63591    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
63592    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
63593    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
63594    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
63595    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
63596    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
63597    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
63598    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
63599    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
63600    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
63601    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
63602    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
63606    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
63603    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
63604    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
63605    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
63607    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_AMOUNT';
63608    l_rec_acct_attrs.array_num_value(19)  := p_source_54;
63609    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_APPLICATION_ID';
63610    l_rec_acct_attrs.array_num_value(20)  := p_source_55;
63611    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_DISTRIBUTION_TYPE';
63612    l_rec_acct_attrs.array_char_value(21)  := p_source_56;
63613    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_ENTITY_CODE';
63614    l_rec_acct_attrs.array_char_value(22)  := p_source_57;
63615    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_DIST_ID';
63616    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_58);
63617    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
63618    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_59);
63619    l_rec_acct_attrs.array_acct_attr_code(25) := 'APPLIED_TO_SECOND_DIST_ID';
63620    l_rec_acct_attrs.array_char_value(25)  := p_source_60;
63621    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_1';
63622    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_33);
63623    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_IDENTIFIER_2';
63624    l_rec_acct_attrs.array_num_value(27)  :=  to_char(p_source_34);
63625    l_rec_acct_attrs.array_acct_attr_code(28) := 'DISTRIBUTION_TYPE';
63626    l_rec_acct_attrs.array_char_value(28)  := p_source_35;
63627    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_ACCT_CLASS';
63628    l_rec_acct_attrs.array_char_value(29)  := p_source_61;
63629    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_CCID';
63630    l_rec_acct_attrs.array_num_value(30)  := p_source_3;
63631    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_AMT';
63632    l_rec_acct_attrs.array_num_value(31)  := p_source_54;
63633    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_ENTERED_CURR';
63634    l_rec_acct_attrs.array_char_value(32)  := 
63635 xla_ae_sources_pkg.GetSystemSourceChar(
63636    p_source_code           => 'XLA_CURRENCY_CODE'
63637  , p_source_type_code      => 'Y'
63638  , p_source_application_id =>  602
63639 );
63640    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_LEDGER_AMT';
63641    l_rec_acct_attrs.array_num_value(33)  := p_source_54;
63642    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_OPTION';
63643    l_rec_acct_attrs.array_char_value(34)  := p_source_44;
63644    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_AMOUNT';
63645    l_rec_acct_attrs.array_num_value(35)  := p_source_52;
63646    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENTERED_CURRENCY_CODE';
63647    l_rec_acct_attrs.array_char_value(36)  := p_source_26;
63648    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_DATE';
63649    l_rec_acct_attrs.array_date_value(37)  := p_source_28;
63650    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE';
63651    l_rec_acct_attrs.array_num_value(38)  := p_source_29;
63652    l_rec_acct_attrs.array_acct_attr_code(39) := 'EXCHANGE_RATE_TYPE';
63653    l_rec_acct_attrs.array_char_value(39)  := p_source_30;
63654    l_rec_acct_attrs.array_acct_attr_code(40) := 'LEDGER_AMOUNT';
63655    l_rec_acct_attrs.array_num_value(40)  := p_source_53;
63656    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID1';
63657    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_33);
63658    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_ID2';
63659    l_rec_acct_attrs.array_num_value(42)  :=  to_char(p_source_36);
63660    l_rec_acct_attrs.array_acct_attr_code(43) := 'REVERSED_DISTRIBUTION_TYPE';
63661    l_rec_acct_attrs.array_char_value(43)  := p_source_35;
63662    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_CR_ENC_TYPE_ID';
63663    l_rec_acct_attrs.array_num_value(44)  := p_source_62;
63664    l_rec_acct_attrs.array_acct_attr_code(45) := 'UPG_DR_ENC_TYPE_ID';
63665    l_rec_acct_attrs.array_num_value(45)  := p_source_63;
63666 
63667    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63668    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63669 
63670    ---------------------------------------------------------------------------------------------------------------
63671    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63672    ---------------------------------------------------------------------------------------------------------------
63673    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63674 
63675    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63676    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63677 
63678    IF xla_accounting_cache_pkg.GetValueChar
63679          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63680          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63681    AND l_bflow_method_code = 'PRIOR_ENTRY'
63682 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63683    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63684          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63685        )
63686    THEN
63687          xla_ae_lines_pkg.BflowUpgEntry
63688            (p_business_method_code    => l_bflow_method_code
63689            ,p_business_class_code     => l_bflow_class_code
63690            ,p_balance_type            => l_balance_type_code);
63691    ELSE
63692       NULL;
63693 -- No business flow processing for business flow method of NONE.
63694    END IF;
63695 
63696    --
63697    -- call analytical criteria
63698    --
63699    
63700    --
63701    -- call description
63702    --
63706    -- Bug 4922099
63703    -- No description or it is inherited.
63704    --
63705    -- call ADRs
63707    --
63708    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63709         (NVL(l_actual_upg_option, 'N') = 'O') OR
63710         (NVL(l_enc_upg_option, 'N') = 'O')
63711       )
63712    THEN
63713    NULL;
63714    --
63715    --
63716    
63717   l_ccid := AcctDerRule_15(
63718            p_application_id           => p_application_id
63719          , p_ae_header_id             => l_ae_header_id 
63720 , p_source_5 => p_source_5
63721 , p_source_8 => p_source_8
63722          , x_transaction_coa_id       => l_adr_transaction_coa_id
63723          , x_accounting_coa_id        => l_adr_accounting_coa_id
63724          , x_value_type_code          => l_adr_value_type_code
63725          , p_side                     => 'NA'
63726    );
63727 
63728    xla_ae_lines_pkg.set_ccid(
63729     p_code_combination_id          => l_ccid
63730   , p_value_type_code              => l_adr_value_type_code
63731   , p_transaction_coa_id           => l_adr_transaction_coa_id
63732   , p_accounting_coa_id            => l_adr_accounting_coa_id
63733   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
63734   , p_adr_type_code                => 'S'
63735   , p_component_type               => l_component_type
63736   , p_component_code               => l_component_code
63737   , p_component_type_code          => l_component_type_code
63738   , p_component_appl_id            => l_component_appl_id
63739   , p_amb_context_code             => l_amb_context_code
63740   , p_side                         => 'NA'
63741   );
63742 
63743 
63744    --
63745    --
63746    END IF;
63747    --
63748    -- Bug 4922099
63749    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63750           (NVL(l_enc_upg_option, 'N') = 'O')
63751         ) AND
63752         (l_bflow_method_code = 'PRIOR_ENTRY')
63753       )
63754    THEN
63755       IF
63756       --
63757       1 = 2
63758       --
63759       THEN
63760       xla_accounting_err_pkg.build_message
63761                                     (p_appli_s_name            => 'XLA'
63762                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63763                                     ,p_token_1                 => 'LINE_NUMBER'
63764                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63765                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63766                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63767                                                                              l_component_type
63768                                                                             ,l_component_code
63769                                                                             ,l_component_type_code
63770                                                                             ,l_component_appl_id
63771                                                                             ,l_amb_context_code
63772                                                                             ,l_entity_code
63773                                                                             ,l_event_class_code
63774                                                                            )
63775                                     ,p_token_3                 => 'OWNER'
63776                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63777                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63778                                                                           ,p_lookup_code    => l_component_type_code
63779                                                                          )
63780                                     ,p_token_4                 => 'PRODUCT_NAME'
63781                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63782                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63783                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63784                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63785                                     ,p_ae_header_id            =>  NULL
63786                                        );
63787 
63788         IF (C_LEVEL_ERROR>= g_log_level) THEN
63789                  trace
63790                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63791                       ,p_level    => C_LEVEL_ERROR
63792                       ,p_module   => l_log_module);
63793         END IF;
63794       END IF;
63795    END IF;
63796    --
63797    --
63798    ------------------------------------------------------------------------------------------------
63799    -- 4219869 Business Flow
63800    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63801    -- Prior Entry.  Currently, the following code is always generated.
63802    ------------------------------------------------------------------------------------------------
63803    XLA_AE_LINES_PKG.ValidateCurrentLine;
63804 
63805    ------------------------------------------------------------------------------------
63806    -- 4219869 Business Flow
63807    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63808    ------------------------------------------------------------------------------------
63809    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63810 
63811    ----------------------------------------------------------------------------------
63812    -- 4219869 Business Flow
63813    -- Update journal entry status -- Need to generate this within IF <condition>
63817          ,p_balance_type_code => l_balance_type_code
63814    ----------------------------------------------------------------------------------
63815    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63816          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63818          );
63819 
63820    -------------------------------------------------------------------------------------------
63821    -- 4262811 - Generate the Accrual Reversal lines
63822    -------------------------------------------------------------------------------------------
63823    BEGIN
63824       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63825                               (g_array_event(p_event_id).array_value_num('header_index'));
63826       IF l_acc_rev_flag IS NULL THEN
63827          l_acc_rev_flag := 'N';
63828       END IF;
63829    EXCEPTION
63830       WHEN OTHERS THEN
63831          l_acc_rev_flag := 'N';
63832    END;
63833    --
63834    IF (l_acc_rev_flag = 'Y') THEN
63835 
63836        -- 4645092  ------------------------------------------------------------------------------
63837        -- To allow MPA report to determine if it should generate report process
63838        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63839        ------------------------------------------------------------------------------------------
63840 
63841        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63842        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63843 
63844        --
63845        -- Update the line information that should be overwritten
63846        --
63847        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63848                                          p_header_num   => 1);
63849        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63850 
63851        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63852 
63853        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63854           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63855        END IF;
63856 
63857       --
63858       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63859       --
63860       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63861           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63862       ELSE
63863           ---------------------------------------------------------------------------------------------------
63864           -- 4262811a Switch Sign
63865           ---------------------------------------------------------------------------------------------------
63866           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63867           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63868                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63869           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63870                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63871           -- 5132302
63872           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63873                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63874 
63875       END IF;
63876 
63877       -- 4955764
63878       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63879       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63880 
63881 
63882       XLA_AE_LINES_PKG.ValidateCurrentLine;
63883       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63884 
63885       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63886                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63887                ,p_balance_type_code => l_balance_type_code);
63888 
63889    END IF;
63890 
63891    -----------------------------------------------------------------------------------------
63892    -- 4262811 Multiperiod Accounting
63893    -----------------------------------------------------------------------------------------
63894      -- No MPA option is assigned.
63895 
63896 
63897 END IF;
63898 END IF;
63899 --
63900 
63901 --
63902 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63903    trace
63904       (p_msg      => 'END of AcctLineType_130'
63905       ,p_level    => C_LEVEL_PROCEDURE
63906       ,p_module   => l_log_module);
63907 END IF;
63908 --
63909 EXCEPTION
63910   WHEN xla_exceptions_pkg.application_exception THEN
63911       RAISE;
63912   WHEN OTHERS THEN
63913        xla_exceptions_pkg.raise_message
63914            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_130');
63915 END AcctLineType_130;
63916 --
63917 
63918 ---------------------------------------
63919 --
63920 -- PRIVATE FUNCTION
63921 --         AcctLineType_131
63922 --
63923 ---------------------------------------
63924 PROCEDURE AcctLineType_131 (
63925   p_application_id        IN NUMBER
63926  ,p_event_id              IN NUMBER
63927  ,p_calculate_acctd_flag  IN VARCHAR2
63928  ,p_calculate_g_l_flag    IN VARCHAR2
63929  ,p_actual_flag           IN OUT VARCHAR2
63930  ,p_balance_type_code     OUT VARCHAR2
63931  ,p_gain_or_loss_ref      OUT VARCHAR2
63932  
63933 --Budget Code Combination ID
63934  , p_source_3            IN NUMBER
63935 --Cost CCID
63936  , p_source_4            IN NUMBER
63937 --Allow Account Override Flag
63938  , p_source_5            IN VARCHAR2
63939 --Adjustment Cost CCID
63943 --Reversing Line Flag
63940  , p_source_6            IN NUMBER
63941 --Cost Clearing CCID
63942  , p_source_7            IN NUMBER
63944  , p_source_23            IN VARCHAR2
63945 --Actual Upgrade Credit Accounting Class
63946  , p_source_24            IN VARCHAR2
63947 --Entered Currency Code
63948  , p_source_26            IN VARCHAR2
63949 --Exchange Rate Date
63950  , p_source_28            IN DATE
63951 --Exchange Rate
63952  , p_source_29            IN NUMBER
63953 --Exchange Rate Type
63954  , p_source_30            IN VARCHAR2
63955 --Actual Upgrade Debit Accounting Class
63956  , p_source_31            IN VARCHAR2
63957 --Use Actuals Upgrade Attributes Flag
63958  , p_source_32            IN VARCHAR2
63959 --Expenditure Item ID
63960  , p_source_33            IN NUMBER
63961 --Cost Distribution Line Number
63962  , p_source_34            IN NUMBER
63963 --Line Type
63964  , p_source_35            IN VARCHAR2
63965  , p_source_35_meaning    IN VARCHAR2
63966 --Reversed Line Number
63967  , p_source_36            IN NUMBER
63968 --Use Encumbrance Upgrade Attributes Flag
63969  , p_source_44            IN VARCHAR2
63970 --Entered Burdened Cost
63971  , p_source_52            IN NUMBER
63972 --Accounted Burdened Cost
63973  , p_source_53            IN NUMBER
63974 --Encumbrance Amount
63975  , p_source_54            IN NUMBER
63976 --Project Encumbrance Applied to Application Identifier
63977  , p_source_55            IN NUMBER
63978 --Project Encumbrance Applied to Distribution Type
63979  , p_source_56            IN VARCHAR2
63980 --Project Encumbrance Applied to Entity Code
63981  , p_source_57            IN VARCHAR2
63982 --Project Encumbrance Applied to First Distribution ID
63983  , p_source_58            IN NUMBER
63984 --Project Encumbrance Applied to First System Transaction ID
63985  , p_source_59            IN NUMBER
63986 --Project Encumbrance Applied to Second Distribution ID
63987  , p_source_60            IN VARCHAR2
63988 --Encumbrance Upgrade Debit Accounting Class
63989  , p_source_61            IN VARCHAR2
63990 --Encumbrance Type ID
63991  , p_source_62            IN NUMBER
63992 --Project Encumbrance Type ID
63993  , p_source_63            IN NUMBER
63994 )
63995 IS
63996 
63997 l_component_type              VARCHAR2(80);
63998 l_component_code              VARCHAR2(30);
63999 l_component_type_code         VARCHAR2(1);
64000 l_component_appl_id           INTEGER;
64001 l_amb_context_code            VARCHAR2(30);
64002 l_entity_code                 VARCHAR2(30);
64003 l_event_class_code            VARCHAR2(30);
64004 l_ae_header_id                NUMBER;
64005 l_event_type_code             VARCHAR2(30);
64006 l_line_definition_code        VARCHAR2(30);
64007 l_line_definition_owner_code  VARCHAR2(1);
64008 --
64009 -- adr variables
64010 l_segment                     VARCHAR2(30);
64011 l_ccid                        NUMBER;
64012 l_adr_transaction_coa_id      NUMBER;
64013 l_adr_accounting_coa_id       NUMBER;
64014 l_adr_flexfield_segment_code  VARCHAR2(30);
64015 l_adr_flex_value_set_id       NUMBER;
64016 l_adr_value_type_code         VARCHAR2(30);
64017 l_adr_value_combination_id    NUMBER;
64018 l_adr_value_segment_code      VARCHAR2(30);
64019 
64020 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64021 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64022 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64023 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64024 
64025 -- 4262811 Variables ------------------------------------------------------------------------------------------
64026 l_entered_amt_idx             NUMBER;
64027 l_accted_amt_idx              NUMBER;
64028 l_acc_rev_flag                VARCHAR2(1);
64029 l_accrual_line_num            NUMBER;
64030 l_tmp_amt                     NUMBER;
64031 l_acc_rev_natural_side_code   VARCHAR2(1);
64032 
64033 l_num_entries                 NUMBER;
64034 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64035 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64036 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64037 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64038 l_recog_line_1                NUMBER;
64039 l_recog_line_2                NUMBER;
64040 
64041 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64042 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64043 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64044 
64045 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64046 
64047 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64048 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64049 
64050 ---------------------------------------------------------------------------------------------------------------
64051 
64052 
64053 --
64054 -- bulk performance
64055 --
64056 l_balance_type_code           VARCHAR2(1);
64057 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64058 l_log_module                  VARCHAR2(240);
64059 
64060 --
64061 -- Upgrade strategy
64062 --
64063 l_actual_upg_option           VARCHAR2(1);
64064 l_enc_upg_option           VARCHAR2(1);
64065 
64066 --
64067 BEGIN
64068 --
64069 IF g_log_enabled THEN
64070       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_131';
64071 END IF;
64072 --
64073 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64074 
64075       trace
64076          (p_msg      => 'BEGIN of AcctLineType_131'
64077          ,p_level    => C_LEVEL_PROCEDURE
64078          ,p_module   => l_log_module);
64079 
64080 END IF;
64081 --
64085 l_component_appl_id          :=  275;
64082 l_component_type             := 'AMB_JLT';
64083 l_component_code             := 'PA_TOT_BURDEN_COST_ADJ_FED';
64084 l_component_type_code        := 'S';
64086 l_amb_context_code           := 'DEFAULT';
64087 l_entity_code                := 'EXPENDITURES';
64088 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
64089 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
64090 l_line_definition_owner_code := 'S';
64091 l_line_definition_code       := 'FV_PROJECTS_JLD';
64092 --
64093 l_balance_type_code          := 'A';
64094 l_segment                     := NULL;
64095 l_ccid                        := NULL;
64096 l_adr_transaction_coa_id      := NULL;
64097 l_adr_accounting_coa_id       := NULL;
64098 l_adr_flexfield_segment_code  := NULL;
64099 l_adr_flex_value_set_id       := NULL;
64100 l_adr_value_type_code         := NULL;
64101 l_adr_value_combination_id    := NULL;
64102 l_adr_value_segment_code      := NULL;
64103 
64104 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64105 l_bflow_class_code           := '';    -- 4219869 Business Flow
64106 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64107 l_budgetary_control_flag     := 'N';
64108 
64109 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64110 l_bflow_applied_to_amt       := NULL; -- 5132302
64111 l_entered_amt_idx            := NULL;          -- 4262811
64112 l_accted_amt_idx             := NULL;          -- 4262811
64113 l_acc_rev_flag               := NULL;          -- 4262811
64114 l_accrual_line_num           := NULL;          -- 4262811
64115 l_tmp_amt                    := NULL;          -- 4262811
64116 --
64117  
64118 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64119     l_balance_type_code <> 'B' THEN
64120 IF NVL(p_source_35,'
64121 ') =  'D'
64122  THEN 
64123 
64124    --
64125    XLA_AE_LINES_PKG.SetNewLine;
64126 
64127    p_balance_type_code          := l_balance_type_code;
64128    -- set the flag so later we will know whether the gain loss line needs to be created
64129    
64130    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64131      p_actual_flag :='A';
64132    END IF;
64133 
64134    --
64135    -- bulk performance
64136    --
64137    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64138                                       p_header_num   => 0); -- 4262811
64139    --
64140    -- set accounting line options
64141    --
64142    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64143            p_natural_side_code          => 'D'
64144          , p_gain_or_loss_flag          => 'N'
64145          , p_gl_transfer_mode_code      => 'S'
64146          , p_acct_entry_type_code       => 'A'
64147          , p_switch_side_flag           => 'Y'
64148          , p_merge_duplicate_code       => 'N'
64149          );
64150    --
64151    l_acc_rev_natural_side_code := 'C';  -- 4262811
64152    -- 
64153    --
64154    -- set accounting line type info
64155    --
64156    xla_ae_lines_pkg.SetAcctLineType
64157       (p_component_type             => l_component_type
64158       ,p_event_type_code            => l_event_type_code
64159       ,p_line_definition_owner_code => l_line_definition_owner_code
64160       ,p_line_definition_code       => l_line_definition_code
64161       ,p_accounting_line_code       => l_component_code
64162       ,p_accounting_line_type_code  => l_component_type_code
64163       ,p_accounting_line_appl_id    => l_component_appl_id
64164       ,p_amb_context_code           => l_amb_context_code
64165       ,p_entity_code                => l_entity_code
64166       ,p_event_class_code           => l_event_class_code);
64167    --
64168    -- set accounting class
64169    --
64170    xla_ae_lines_pkg.SetAcctClass(
64171            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
64172          , p_ae_header_id           => l_ae_header_id
64173          );
64174 
64175    --
64176    -- set rounding class
64177    --
64178    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64179                       'FEDERAL_PROJECT_COST';
64180 
64181    --
64182    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64183    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64184    --
64185    -- bulk performance
64186    --
64187    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64188 
64189    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64190       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64191 
64192    -- 4955764
64193    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64194       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64195 
64196    -- 4458381 Public Sector Enh
64197    
64198    --
64199    -- set accounting attributes for the line type
64200    --
64201    l_entered_amt_idx := 34;
64202    l_accted_amt_idx  := 39;
64203    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64204    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
64205    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
64206    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
64207    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
64208    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
64209    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
64210    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
64211    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
64215    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
64212    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
64213    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
64214    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
64216    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
64217    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
64218    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
64219    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
64220    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
64221    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
64222    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
64223    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
64224    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
64225    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
64226    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
64227    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
64228    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
64229    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
64230    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
64231    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
64232    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
64233    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
64234    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
64235    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
64236    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
64237    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
64238    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
64239    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
64240    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_APPLICATION_ID';
64241    l_rec_acct_attrs.array_num_value(19)  := p_source_55;
64242    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64243    l_rec_acct_attrs.array_char_value(20)  := p_source_56;
64244    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_ENTITY_CODE';
64245    l_rec_acct_attrs.array_char_value(21)  := p_source_57;
64246    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_DIST_ID';
64247    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_58);
64248    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64249    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_59);
64250    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_DIST_ID';
64251    l_rec_acct_attrs.array_char_value(24)  := p_source_60;
64252    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
64253    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_33);
64254    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
64255    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_34);
64256    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
64257    l_rec_acct_attrs.array_char_value(27)  := p_source_35;
64258    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
64259    l_rec_acct_attrs.array_char_value(28)  := p_source_61;
64260    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
64261    l_rec_acct_attrs.array_num_value(29)  := p_source_3;
64262    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
64263    l_rec_acct_attrs.array_num_value(30)  := p_source_54;
64264    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
64265    l_rec_acct_attrs.array_char_value(31)  := 
64266 xla_ae_sources_pkg.GetSystemSourceChar(
64267    p_source_code           => 'XLA_CURRENCY_CODE'
64268  , p_source_type_code      => 'Y'
64269  , p_source_application_id =>  602
64270 );
64271    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
64272    l_rec_acct_attrs.array_num_value(32)  := p_source_54;
64273    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
64274    l_rec_acct_attrs.array_char_value(33)  := p_source_44;
64275    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENTERED_CURRENCY_AMOUNT';
64276    l_rec_acct_attrs.array_num_value(34)  := p_source_52;
64277    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_CODE';
64278    l_rec_acct_attrs.array_char_value(35)  := p_source_26;
64279    l_rec_acct_attrs.array_acct_attr_code(36) := 'EXCHANGE_DATE';
64280    l_rec_acct_attrs.array_date_value(36)  := p_source_28;
64281    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_RATE';
64282    l_rec_acct_attrs.array_num_value(37)  := p_source_29;
64283    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE_TYPE';
64284    l_rec_acct_attrs.array_char_value(38)  := p_source_30;
64285    l_rec_acct_attrs.array_acct_attr_code(39) := 'LEDGER_AMOUNT';
64286    l_rec_acct_attrs.array_num_value(39)  := p_source_53;
64287    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_ID1';
64288    l_rec_acct_attrs.array_num_value(40)  :=  to_char(p_source_33);
64289    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID2';
64290    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_36);
64291    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_TYPE';
64292    l_rec_acct_attrs.array_char_value(42)  := p_source_35;
64293    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
64294    l_rec_acct_attrs.array_num_value(43)  := p_source_62;
64295    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
64296    l_rec_acct_attrs.array_num_value(44)  := p_source_63;
64297 
64298    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64299    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64300 
64301    ---------------------------------------------------------------------------------------------------------------
64302    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64306    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64303    ---------------------------------------------------------------------------------------------------------------
64304    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64305 
64307    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64308 
64309    IF xla_accounting_cache_pkg.GetValueChar
64310          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64311          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64312    AND l_bflow_method_code = 'PRIOR_ENTRY'
64313 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64314    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64315          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64316        )
64317    THEN
64318          xla_ae_lines_pkg.BflowUpgEntry
64319            (p_business_method_code    => l_bflow_method_code
64320            ,p_business_class_code     => l_bflow_class_code
64321            ,p_balance_type            => l_balance_type_code);
64322    ELSE
64323       NULL;
64324 -- No business flow processing for business flow method of NONE.
64325    END IF;
64326 
64327    --
64328    -- call analytical criteria
64329    --
64330    
64331    --
64332    -- call description
64333    --
64334    -- No description or it is inherited.
64335    --
64336    -- call ADRs
64337    -- Bug 4922099
64338    --
64339    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64340         (NVL(l_actual_upg_option, 'N') = 'O') OR
64341         (NVL(l_enc_upg_option, 'N') = 'O')
64342       )
64343    THEN
64344    NULL;
64345    --
64346    --
64347    
64348   l_ccid := AcctDerRule_13(
64349            p_application_id           => p_application_id
64350          , p_ae_header_id             => l_ae_header_id 
64351 , p_source_5 => p_source_5
64352 , p_source_6 => p_source_6
64353          , x_transaction_coa_id       => l_adr_transaction_coa_id
64354          , x_accounting_coa_id        => l_adr_accounting_coa_id
64355          , x_value_type_code          => l_adr_value_type_code
64356          , p_side                     => 'NA'
64357    );
64358 
64359    xla_ae_lines_pkg.set_ccid(
64360     p_code_combination_id          => l_ccid
64361   , p_value_type_code              => l_adr_value_type_code
64362   , p_transaction_coa_id           => l_adr_transaction_coa_id
64363   , p_accounting_coa_id            => l_adr_accounting_coa_id
64364   , p_adr_code                     => 'PA_COST_ACC_ADJ_RULE'
64365   , p_adr_type_code                => 'S'
64366   , p_component_type               => l_component_type
64367   , p_component_code               => l_component_code
64368   , p_component_type_code          => l_component_type_code
64369   , p_component_appl_id            => l_component_appl_id
64370   , p_amb_context_code             => l_amb_context_code
64371   , p_side                         => 'NA'
64372   );
64373 
64374 
64375    l_segment := AcctDerRule_4(
64376            p_application_id           => p_application_id
64377          , p_ae_header_id             => l_ae_header_id 
64378          , x_transaction_coa_id       => l_adr_transaction_coa_id
64379          , x_accounting_coa_id        => l_adr_accounting_coa_id
64380          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
64381          , x_flex_value_set_id        => l_adr_flex_value_set_id
64382          , x_value_type_code          => l_adr_value_type_code
64383          , x_value_combination_id     => l_adr_value_combination_id
64384          , x_value_segment_code       => l_adr_value_segment_code
64385          , p_side                     => 'NA'
64386          , p_override_seg_flag        => 'Y'
64387    );
64388 
64389    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
64390 
64391       xla_ae_lines_pkg.set_segment(
64392           p_to_segment_code         => 'GL_ACCOUNT'
64393         , p_segment_value           => l_segment
64394         , p_from_segment_code       => l_adr_value_segment_code
64395         , p_from_combination_id     => l_adr_value_combination_id
64396         , p_value_type_code         => l_adr_value_type_code
64397         , p_transaction_coa_id      => l_adr_transaction_coa_id
64398         , p_accounting_coa_id       => l_adr_accounting_coa_id
64399         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
64400         , p_flex_value_set_id       => l_adr_flex_value_set_id
64401         , p_adr_code                => 'FV_461001_PROJECTS'
64402         , p_adr_type_code           => 'S'
64403         , p_component_type          => l_component_type
64404         , p_component_code          => l_component_code
64405         , p_component_type_code     => l_component_type_code
64406         , p_component_appl_id       => l_component_appl_id
64407         , p_amb_context_code        => l_amb_context_code
64408         , p_entity_code             => 'EXPENDITURES'
64409         , p_event_class_code        => 'TOT_BURDENED_COST_ADJ'
64410         , p_side                    => 'NA'
64411         );
64412 
64413   END IF;
64414 
64415    --
64416    --
64417    END IF;
64418    --
64419    -- Bug 4922099
64420    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64421           (NVL(l_enc_upg_option, 'N') = 'O')
64422         ) AND
64423         (l_bflow_method_code = 'PRIOR_ENTRY')
64424       )
64425    THEN
64426       IF
64427       --
64428       1 = 2
64429       --
64430       THEN
64431       xla_accounting_err_pkg.build_message
64432                                     (p_appli_s_name            => 'XLA'
64433                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64437                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64434                                     ,p_token_1                 => 'LINE_NUMBER'
64435                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64436                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64438                                                                              l_component_type
64439                                                                             ,l_component_code
64440                                                                             ,l_component_type_code
64441                                                                             ,l_component_appl_id
64442                                                                             ,l_amb_context_code
64443                                                                             ,l_entity_code
64444                                                                             ,l_event_class_code
64445                                                                            )
64446                                     ,p_token_3                 => 'OWNER'
64447                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64448                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64449                                                                           ,p_lookup_code    => l_component_type_code
64450                                                                          )
64451                                     ,p_token_4                 => 'PRODUCT_NAME'
64452                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64453                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64454                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64455                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64456                                     ,p_ae_header_id            =>  NULL
64457                                        );
64458 
64459         IF (C_LEVEL_ERROR>= g_log_level) THEN
64460                  trace
64461                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64462                       ,p_level    => C_LEVEL_ERROR
64463                       ,p_module   => l_log_module);
64464         END IF;
64465       END IF;
64466    END IF;
64467    --
64468    --
64469    ------------------------------------------------------------------------------------------------
64470    -- 4219869 Business Flow
64471    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64472    -- Prior Entry.  Currently, the following code is always generated.
64473    ------------------------------------------------------------------------------------------------
64474    XLA_AE_LINES_PKG.ValidateCurrentLine;
64475 
64476    ------------------------------------------------------------------------------------
64477    -- 4219869 Business Flow
64478    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64479    ------------------------------------------------------------------------------------
64480    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64481 
64482    ----------------------------------------------------------------------------------
64483    -- 4219869 Business Flow
64484    -- Update journal entry status -- Need to generate this within IF <condition>
64485    ----------------------------------------------------------------------------------
64486    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64487          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64488          ,p_balance_type_code => l_balance_type_code
64489          );
64490 
64491    -------------------------------------------------------------------------------------------
64492    -- 4262811 - Generate the Accrual Reversal lines
64493    -------------------------------------------------------------------------------------------
64494    BEGIN
64495       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64496                               (g_array_event(p_event_id).array_value_num('header_index'));
64497       IF l_acc_rev_flag IS NULL THEN
64498          l_acc_rev_flag := 'N';
64499       END IF;
64500    EXCEPTION
64501       WHEN OTHERS THEN
64502          l_acc_rev_flag := 'N';
64503    END;
64504    --
64505    IF (l_acc_rev_flag = 'Y') THEN
64506 
64507        -- 4645092  ------------------------------------------------------------------------------
64508        -- To allow MPA report to determine if it should generate report process
64509        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64510        ------------------------------------------------------------------------------------------
64511 
64512        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64513        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64514 
64515        --
64516        -- Update the line information that should be overwritten
64517        --
64518        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64519                                          p_header_num   => 1);
64520        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64521 
64522        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64523 
64524        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64525           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64526        END IF;
64527 
64528       --
64529       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64530       --
64534           ---------------------------------------------------------------------------------------------------
64531       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64532           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64533       ELSE
64535           -- 4262811a Switch Sign
64536           ---------------------------------------------------------------------------------------------------
64537           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64538           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64539                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64540           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64541                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64542           -- 5132302
64543           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64544                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64545 
64546       END IF;
64547 
64548       -- 4955764
64549       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64550       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64551 
64552 
64553       XLA_AE_LINES_PKG.ValidateCurrentLine;
64554       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64555 
64556       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64557                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64558                ,p_balance_type_code => l_balance_type_code);
64559 
64560    END IF;
64561 
64562    -----------------------------------------------------------------------------------------
64563    -- 4262811 Multiperiod Accounting
64564    -----------------------------------------------------------------------------------------
64565      -- No MPA option is assigned.
64566 
64567 
64568 END IF;
64569 END IF;
64570 --
64571 
64572 --
64573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64574    trace
64575       (p_msg      => 'END of AcctLineType_131'
64576       ,p_level    => C_LEVEL_PROCEDURE
64577       ,p_module   => l_log_module);
64578 END IF;
64579 --
64580 EXCEPTION
64581   WHEN xla_exceptions_pkg.application_exception THEN
64582       RAISE;
64583   WHEN OTHERS THEN
64584        xla_exceptions_pkg.raise_message
64585            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_131');
64586 END AcctLineType_131;
64587 --
64588 
64589 ---------------------------------------
64590 --
64591 -- PRIVATE FUNCTION
64592 --         AcctLineType_132
64593 --
64594 ---------------------------------------
64595 PROCEDURE AcctLineType_132 (
64596   p_application_id        IN NUMBER
64597  ,p_event_id              IN NUMBER
64598  ,p_calculate_acctd_flag  IN VARCHAR2
64599  ,p_calculate_g_l_flag    IN VARCHAR2
64600  ,p_actual_flag           IN OUT VARCHAR2
64601  ,p_balance_type_code     OUT VARCHAR2
64602  ,p_gain_or_loss_ref      OUT VARCHAR2
64603  
64604 --Budget Code Combination ID
64605  , p_source_3            IN NUMBER
64606 --Cost CCID
64607  , p_source_4            IN NUMBER
64608 --Allow Account Override Flag
64609  , p_source_5            IN VARCHAR2
64610 --Cost Clearing CCID
64611  , p_source_7            IN NUMBER
64612 --Adjustment Cost Clearing CCID
64613  , p_source_8            IN NUMBER
64614 --Reversing Line Flag
64615  , p_source_23            IN VARCHAR2
64616 --Actual Upgrade Credit Accounting Class
64617  , p_source_24            IN VARCHAR2
64618 --Entered Currency Code
64619  , p_source_26            IN VARCHAR2
64620 --Exchange Rate Date
64621  , p_source_28            IN DATE
64622 --Exchange Rate
64623  , p_source_29            IN NUMBER
64624 --Exchange Rate Type
64625  , p_source_30            IN VARCHAR2
64626 --Actual Upgrade Debit Accounting Class
64627  , p_source_31            IN VARCHAR2
64628 --Use Actuals Upgrade Attributes Flag
64629  , p_source_32            IN VARCHAR2
64630 --Expenditure Item ID
64631  , p_source_33            IN NUMBER
64632 --Cost Distribution Line Number
64633  , p_source_34            IN NUMBER
64634 --Line Type
64635  , p_source_35            IN VARCHAR2
64636  , p_source_35_meaning    IN VARCHAR2
64637 --Reversed Line Number
64638  , p_source_36            IN NUMBER
64639 --Encumbrance Upgrade Credit Accounting Class
64640  , p_source_41            IN VARCHAR2
64641 --Use Encumbrance Upgrade Attributes Flag
64642  , p_source_44            IN VARCHAR2
64643 --Entered Burdened Cost
64644  , p_source_52            IN NUMBER
64645 --Accounted Burdened Cost
64646  , p_source_53            IN NUMBER
64647 --Encumbrance Amount
64648  , p_source_54            IN NUMBER
64649 --Project Encumbrance Applied to Application Identifier
64650  , p_source_55            IN NUMBER
64651 --Project Encumbrance Applied to Distribution Type
64652  , p_source_56            IN VARCHAR2
64653 --Project Encumbrance Applied to Entity Code
64654  , p_source_57            IN VARCHAR2
64655 --Project Encumbrance Applied to First Distribution ID
64656  , p_source_58            IN NUMBER
64657 --Project Encumbrance Applied to First System Transaction ID
64658  , p_source_59            IN NUMBER
64659 --Project Encumbrance Applied to Second Distribution ID
64660  , p_source_60            IN VARCHAR2
64661 --Encumbrance Upgrade Debit Accounting Class
64662  , p_source_61            IN VARCHAR2
64663 --Encumbrance Type ID
64664  , p_source_62            IN NUMBER
64665 --Project Encumbrance Type ID
64669 
64666  , p_source_63            IN NUMBER
64667 )
64668 IS
64670 l_component_type              VARCHAR2(80);
64671 l_component_code              VARCHAR2(30);
64672 l_component_type_code         VARCHAR2(1);
64673 l_component_appl_id           INTEGER;
64674 l_amb_context_code            VARCHAR2(30);
64675 l_entity_code                 VARCHAR2(30);
64676 l_event_class_code            VARCHAR2(30);
64677 l_ae_header_id                NUMBER;
64678 l_event_type_code             VARCHAR2(30);
64679 l_line_definition_code        VARCHAR2(30);
64680 l_line_definition_owner_code  VARCHAR2(1);
64681 --
64682 -- adr variables
64683 l_segment                     VARCHAR2(30);
64684 l_ccid                        NUMBER;
64685 l_adr_transaction_coa_id      NUMBER;
64686 l_adr_accounting_coa_id       NUMBER;
64687 l_adr_flexfield_segment_code  VARCHAR2(30);
64688 l_adr_flex_value_set_id       NUMBER;
64689 l_adr_value_type_code         VARCHAR2(30);
64690 l_adr_value_combination_id    NUMBER;
64691 l_adr_value_segment_code      VARCHAR2(30);
64692 
64693 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64694 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64695 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64696 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64697 
64698 -- 4262811 Variables ------------------------------------------------------------------------------------------
64699 l_entered_amt_idx             NUMBER;
64700 l_accted_amt_idx              NUMBER;
64701 l_acc_rev_flag                VARCHAR2(1);
64702 l_accrual_line_num            NUMBER;
64703 l_tmp_amt                     NUMBER;
64704 l_acc_rev_natural_side_code   VARCHAR2(1);
64705 
64706 l_num_entries                 NUMBER;
64707 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64708 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64709 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64710 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64711 l_recog_line_1                NUMBER;
64712 l_recog_line_2                NUMBER;
64713 
64714 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64715 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64716 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64717 
64718 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64719 
64720 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64721 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64722 
64723 ---------------------------------------------------------------------------------------------------------------
64724 
64725 
64726 --
64727 -- bulk performance
64728 --
64729 l_balance_type_code           VARCHAR2(1);
64730 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64731 l_log_module                  VARCHAR2(240);
64732 
64733 --
64734 -- Upgrade strategy
64735 --
64736 l_actual_upg_option           VARCHAR2(1);
64737 l_enc_upg_option           VARCHAR2(1);
64738 
64739 --
64740 BEGIN
64741 --
64742 IF g_log_enabled THEN
64743       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_132';
64744 END IF;
64745 --
64746 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64747 
64748       trace
64749          (p_msg      => 'BEGIN of AcctLineType_132'
64750          ,p_level    => C_LEVEL_PROCEDURE
64751          ,p_module   => l_log_module);
64752 
64753 END IF;
64754 --
64755 l_component_type             := 'AMB_JLT';
64756 l_component_code             := 'PA_TOT_BURDEN_COST_CLEAR_FED';
64757 l_component_type_code        := 'S';
64758 l_component_appl_id          :=  275;
64759 l_amb_context_code           := 'DEFAULT';
64760 l_entity_code                := 'EXPENDITURES';
64761 l_event_class_code           := 'TOT_BURDENED_COST';
64762 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
64763 l_line_definition_owner_code := 'S';
64764 l_line_definition_code       := 'FV_PROJECTS_JLD';
64765 --
64766 l_balance_type_code          := 'A';
64767 l_segment                     := NULL;
64768 l_ccid                        := NULL;
64769 l_adr_transaction_coa_id      := NULL;
64770 l_adr_accounting_coa_id       := NULL;
64771 l_adr_flexfield_segment_code  := NULL;
64772 l_adr_flex_value_set_id       := NULL;
64773 l_adr_value_type_code         := NULL;
64774 l_adr_value_combination_id    := NULL;
64775 l_adr_value_segment_code      := NULL;
64776 
64777 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64778 l_bflow_class_code           := '';    -- 4219869 Business Flow
64779 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64780 l_budgetary_control_flag     := 'N';
64781 
64782 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64783 l_bflow_applied_to_amt       := NULL; -- 5132302
64784 l_entered_amt_idx            := NULL;          -- 4262811
64785 l_accted_amt_idx             := NULL;          -- 4262811
64786 l_acc_rev_flag               := NULL;          -- 4262811
64787 l_accrual_line_num           := NULL;          -- 4262811
64788 l_tmp_amt                    := NULL;          -- 4262811
64789 --
64790  
64791 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64792     l_balance_type_code <> 'B' THEN
64793 IF NVL(p_source_35,'
64794 ') =  'C'
64795  THEN 
64796 
64797    --
64798    XLA_AE_LINES_PKG.SetNewLine;
64799 
64800    p_balance_type_code          := l_balance_type_code;
64801    -- set the flag so later we will know whether the gain loss line needs to be created
64802    
64803    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64807    --
64804      p_actual_flag :='A';
64805    END IF;
64806 
64808    -- bulk performance
64809    --
64810    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64811                                       p_header_num   => 0); -- 4262811
64812    --
64813    -- set accounting line options
64814    --
64815    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64816            p_natural_side_code          => 'C'
64817          , p_gain_or_loss_flag          => 'N'
64818          , p_gl_transfer_mode_code      => 'S'
64819          , p_acct_entry_type_code       => 'A'
64820          , p_switch_side_flag           => 'Y'
64821          , p_merge_duplicate_code       => 'N'
64822          );
64823    --
64824    l_acc_rev_natural_side_code := 'D';  -- 4262811
64825    -- 
64826    --
64827    -- set accounting line type info
64828    --
64829    xla_ae_lines_pkg.SetAcctLineType
64830       (p_component_type             => l_component_type
64831       ,p_event_type_code            => l_event_type_code
64832       ,p_line_definition_owner_code => l_line_definition_owner_code
64833       ,p_line_definition_code       => l_line_definition_code
64834       ,p_accounting_line_code       => l_component_code
64835       ,p_accounting_line_type_code  => l_component_type_code
64836       ,p_accounting_line_appl_id    => l_component_appl_id
64837       ,p_amb_context_code           => l_amb_context_code
64838       ,p_entity_code                => l_entity_code
64839       ,p_event_class_code           => l_event_class_code);
64840    --
64841    -- set accounting class
64842    --
64843    xla_ae_lines_pkg.SetAcctClass(
64844            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
64845          , p_ae_header_id           => l_ae_header_id
64846          );
64847 
64848    --
64849    -- set rounding class
64850    --
64851    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64852                       'FEDERAL_PROJECT_COST_CLEARING';
64853 
64854    --
64855    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64856    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64857    --
64858    -- bulk performance
64859    --
64860    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64861 
64862    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64863       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64864 
64865    -- 4955764
64866    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64867       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64868 
64869    -- 4458381 Public Sector Enh
64870    
64871    --
64872    -- set accounting attributes for the line type
64873    --
64874    l_entered_amt_idx := 39;
64875    l_accted_amt_idx  := 45;
64876    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64877    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
64878    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
64879    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
64880    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
64881    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
64882    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
64883    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
64884    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
64885    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
64886    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
64887    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
64888    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
64889    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
64890    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
64891    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
64892    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
64893    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
64894    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
64895    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
64896    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
64897    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
64898    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
64899    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
64900    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
64901    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
64902    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
64903    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
64904    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
64905    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
64906    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
64907    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
64908    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
64909    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
64910    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
64911    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
64912    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
64913    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_APPLICATION_ID';
64914    l_rec_acct_attrs.array_num_value(19)  := p_source_55;
64915    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64916    l_rec_acct_attrs.array_char_value(20)  := p_source_56;
64917    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_ENTITY_CODE';
64921    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64918    l_rec_acct_attrs.array_char_value(21)  := p_source_57;
64919    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_DIST_ID';
64920    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_58);
64922    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_59);
64923    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_DIST_ID';
64924    l_rec_acct_attrs.array_char_value(24)  := p_source_60;
64925    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
64926    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_33);
64927    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
64928    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_34);
64929    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
64930    l_rec_acct_attrs.array_char_value(27)  := p_source_35;
64931    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_CR_ACCT_CLASS';
64932    l_rec_acct_attrs.array_char_value(28)  := p_source_41;
64933    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_CCID';
64934    l_rec_acct_attrs.array_num_value(29)  := p_source_3;
64935    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_ENTERED_AMT';
64936    l_rec_acct_attrs.array_num_value(30)  := p_source_54;
64937    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_CURR';
64938    l_rec_acct_attrs.array_char_value(31)  := 
64939 xla_ae_sources_pkg.GetSystemSourceChar(
64940    p_source_code           => 'XLA_CURRENCY_CODE'
64941  , p_source_type_code      => 'Y'
64942  , p_source_application_id =>  602
64943 );
64944    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_LEDGER_AMT';
64945    l_rec_acct_attrs.array_num_value(32)  := p_source_54;
64946    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_ACCT_CLASS';
64947    l_rec_acct_attrs.array_char_value(33)  := p_source_61;
64948    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_CCID';
64949    l_rec_acct_attrs.array_num_value(34)  := p_source_3;
64950    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_ENTERED_AMT';
64951    l_rec_acct_attrs.array_num_value(35)  := p_source_54;
64952    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_CURR';
64953    l_rec_acct_attrs.array_char_value(36)  := 
64954 xla_ae_sources_pkg.GetSystemSourceChar(
64955    p_source_code           => 'XLA_CURRENCY_CODE'
64956  , p_source_type_code      => 'Y'
64957  , p_source_application_id =>  602
64958 );
64959    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_LEDGER_AMT';
64960    l_rec_acct_attrs.array_num_value(37)  := p_source_54;
64961    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_OPTION';
64962    l_rec_acct_attrs.array_char_value(38)  := p_source_44;
64963    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENTERED_CURRENCY_AMOUNT';
64964    l_rec_acct_attrs.array_num_value(39)  := p_source_52;
64965    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_CODE';
64966    l_rec_acct_attrs.array_char_value(40)  := p_source_26;
64967    l_rec_acct_attrs.array_acct_attr_code(41) := 'EXCHANGE_DATE';
64968    l_rec_acct_attrs.array_date_value(41)  := p_source_28;
64969    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_RATE';
64970    l_rec_acct_attrs.array_num_value(42)  := p_source_29;
64971    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE_TYPE';
64972    l_rec_acct_attrs.array_char_value(43)  := p_source_30;
64973    l_rec_acct_attrs.array_acct_attr_code(44) := 'GAIN_LOSS_REFERENCE';
64974    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_33);
64975    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
64976    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
64977    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
64978    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
64979    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
64980    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
64981    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
64982    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
64983    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
64984    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
64985    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
64986    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
64987 
64988    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64989    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64990 
64991    ---------------------------------------------------------------------------------------------------------------
64992    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64993    ---------------------------------------------------------------------------------------------------------------
64994    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64995 
64996    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64997    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64998 
64999    IF xla_accounting_cache_pkg.GetValueChar
65000          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65001          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65002    AND l_bflow_method_code = 'PRIOR_ENTRY'
65003 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65004    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65005          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65006        )
65007    THEN
65008          xla_ae_lines_pkg.BflowUpgEntry
65009            (p_business_method_code    => l_bflow_method_code
65010            ,p_business_class_code     => l_bflow_class_code
65011            ,p_balance_type            => l_balance_type_code);
65012    ELSE
65013       NULL;
65017    --
65014 -- No business flow processing for business flow method of NONE.
65015    END IF;
65016 
65018    -- call analytical criteria
65019    --
65020    
65021    --
65022    -- call description
65023    --
65024    -- No description or it is inherited.
65025    --
65026    -- call ADRs
65027    -- Bug 4922099
65028    --
65029    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65030         (NVL(l_actual_upg_option, 'N') = 'O') OR
65031         (NVL(l_enc_upg_option, 'N') = 'O')
65032       )
65033    THEN
65034    NULL;
65035    --
65036    --
65037    
65038   l_ccid := AcctDerRule_14(
65039            p_application_id           => p_application_id
65040          , p_ae_header_id             => l_ae_header_id 
65041 , p_source_5 => p_source_5
65042 , p_source_7 => p_source_7
65043 , p_source_8 => p_source_8
65044          , x_transaction_coa_id       => l_adr_transaction_coa_id
65045          , x_accounting_coa_id        => l_adr_accounting_coa_id
65046          , x_value_type_code          => l_adr_value_type_code
65047          , p_side                     => 'NA'
65048    );
65049 
65050    xla_ae_lines_pkg.set_ccid(
65051     p_code_combination_id          => l_ccid
65052   , p_value_type_code              => l_adr_value_type_code
65053   , p_transaction_coa_id           => l_adr_transaction_coa_id
65054   , p_accounting_coa_id            => l_adr_accounting_coa_id
65055   , p_adr_code                     => 'PA_COST_CLEARING_ACCT_RULE'
65056   , p_adr_type_code                => 'S'
65057   , p_component_type               => l_component_type
65058   , p_component_code               => l_component_code
65059   , p_component_type_code          => l_component_type_code
65060   , p_component_appl_id            => l_component_appl_id
65061   , p_amb_context_code             => l_amb_context_code
65062   , p_side                         => 'NA'
65063   );
65064 
65065 
65066    l_segment := AcctDerRule_5(
65067            p_application_id           => p_application_id
65068          , p_ae_header_id             => l_ae_header_id 
65069          , x_transaction_coa_id       => l_adr_transaction_coa_id
65070          , x_accounting_coa_id        => l_adr_accounting_coa_id
65071          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
65072          , x_flex_value_set_id        => l_adr_flex_value_set_id
65073          , x_value_type_code          => l_adr_value_type_code
65074          , x_value_combination_id     => l_adr_value_combination_id
65075          , x_value_segment_code       => l_adr_value_segment_code
65076          , p_side                     => 'NA'
65077          , p_override_seg_flag        => 'Y'
65078    );
65079 
65080    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
65081 
65082       xla_ae_lines_pkg.set_segment(
65083           p_to_segment_code         => 'GL_ACCOUNT'
65084         , p_segment_value           => l_segment
65085         , p_from_segment_code       => l_adr_value_segment_code
65086         , p_from_combination_id     => l_adr_value_combination_id
65087         , p_value_type_code         => l_adr_value_type_code
65088         , p_transaction_coa_id      => l_adr_transaction_coa_id
65089         , p_accounting_coa_id       => l_adr_accounting_coa_id
65090         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
65091         , p_flex_value_set_id       => l_adr_flex_value_set_id
65092         , p_adr_code                => 'FV_490201_PROJECTS'
65093         , p_adr_type_code           => 'S'
65094         , p_component_type          => l_component_type
65095         , p_component_code          => l_component_code
65096         , p_component_type_code     => l_component_type_code
65097         , p_component_appl_id       => l_component_appl_id
65098         , p_amb_context_code        => l_amb_context_code
65099         , p_entity_code             => 'EXPENDITURES'
65100         , p_event_class_code        => 'TOT_BURDENED_COST'
65101         , p_side                    => 'NA'
65102         );
65103 
65104   END IF;
65105 
65106    --
65107    --
65108    END IF;
65109    --
65110    -- Bug 4922099
65111    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65112           (NVL(l_enc_upg_option, 'N') = 'O')
65113         ) AND
65114         (l_bflow_method_code = 'PRIOR_ENTRY')
65115       )
65116    THEN
65117       IF
65118       --
65119       1 = 2
65120       --
65121       THEN
65122       xla_accounting_err_pkg.build_message
65123                                     (p_appli_s_name            => 'XLA'
65124                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65125                                     ,p_token_1                 => 'LINE_NUMBER'
65126                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65127                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65128                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65129                                                                              l_component_type
65130                                                                             ,l_component_code
65131                                                                             ,l_component_type_code
65132                                                                             ,l_component_appl_id
65133                                                                             ,l_amb_context_code
65134                                                                             ,l_entity_code
65135                                                                             ,l_event_class_code
65136                                                                            )
65137                                     ,p_token_3                 => 'OWNER'
65141                                                                          )
65138                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65139                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65140                                                                           ,p_lookup_code    => l_component_type_code
65142                                     ,p_token_4                 => 'PRODUCT_NAME'
65143                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65144                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65145                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65146                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65147                                     ,p_ae_header_id            =>  NULL
65148                                        );
65149 
65150         IF (C_LEVEL_ERROR>= g_log_level) THEN
65151                  trace
65152                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65153                       ,p_level    => C_LEVEL_ERROR
65154                       ,p_module   => l_log_module);
65155         END IF;
65156       END IF;
65157    END IF;
65158    --
65159    --
65160    ------------------------------------------------------------------------------------------------
65161    -- 4219869 Business Flow
65162    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65163    -- Prior Entry.  Currently, the following code is always generated.
65164    ------------------------------------------------------------------------------------------------
65165    XLA_AE_LINES_PKG.ValidateCurrentLine;
65166 
65167    ------------------------------------------------------------------------------------
65168    -- 4219869 Business Flow
65169    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65170    ------------------------------------------------------------------------------------
65171    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65172 
65173    ----------------------------------------------------------------------------------
65174    -- 4219869 Business Flow
65175    -- Update journal entry status -- Need to generate this within IF <condition>
65176    ----------------------------------------------------------------------------------
65177    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65178          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65179          ,p_balance_type_code => l_balance_type_code
65180          );
65181 
65182    -------------------------------------------------------------------------------------------
65183    -- 4262811 - Generate the Accrual Reversal lines
65184    -------------------------------------------------------------------------------------------
65185    BEGIN
65186       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65187                               (g_array_event(p_event_id).array_value_num('header_index'));
65188       IF l_acc_rev_flag IS NULL THEN
65189          l_acc_rev_flag := 'N';
65190       END IF;
65191    EXCEPTION
65192       WHEN OTHERS THEN
65193          l_acc_rev_flag := 'N';
65194    END;
65195    --
65196    IF (l_acc_rev_flag = 'Y') THEN
65197 
65198        -- 4645092  ------------------------------------------------------------------------------
65199        -- To allow MPA report to determine if it should generate report process
65200        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65201        ------------------------------------------------------------------------------------------
65202 
65203        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65204        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65205 
65206        --
65207        -- Update the line information that should be overwritten
65208        --
65209        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65210                                          p_header_num   => 1);
65211        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65212 
65213        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65214 
65215        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65216           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65217        END IF;
65218 
65219       --
65220       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65221       --
65222       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65223           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65224       ELSE
65225           ---------------------------------------------------------------------------------------------------
65226           -- 4262811a Switch Sign
65227           ---------------------------------------------------------------------------------------------------
65228           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65229           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65230                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65231           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65232                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65233           -- 5132302
65234           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65235                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65236 
65240       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65237       END IF;
65238 
65239       -- 4955764
65241       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65242 
65243 
65244       XLA_AE_LINES_PKG.ValidateCurrentLine;
65245       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65246 
65247       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65248                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65249                ,p_balance_type_code => l_balance_type_code);
65250 
65251    END IF;
65252 
65253    -----------------------------------------------------------------------------------------
65254    -- 4262811 Multiperiod Accounting
65255    -----------------------------------------------------------------------------------------
65256      -- No MPA option is assigned.
65257 
65258 
65259 END IF;
65260 END IF;
65261 --
65262 
65263 --
65264 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65265    trace
65266       (p_msg      => 'END of AcctLineType_132'
65267       ,p_level    => C_LEVEL_PROCEDURE
65268       ,p_module   => l_log_module);
65269 END IF;
65270 --
65271 EXCEPTION
65272   WHEN xla_exceptions_pkg.application_exception THEN
65273       RAISE;
65274   WHEN OTHERS THEN
65275        xla_exceptions_pkg.raise_message
65276            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_132');
65277 END AcctLineType_132;
65278 --
65279 
65280 ---------------------------------------
65281 --
65282 -- PRIVATE FUNCTION
65283 --         AcctLineType_133
65284 --
65285 ---------------------------------------
65286 PROCEDURE AcctLineType_133 (
65287   p_application_id        IN NUMBER
65288  ,p_event_id              IN NUMBER
65289  ,p_calculate_acctd_flag  IN VARCHAR2
65290  ,p_calculate_g_l_flag    IN VARCHAR2
65291  ,p_actual_flag           IN OUT VARCHAR2
65292  ,p_balance_type_code     OUT VARCHAR2
65293  ,p_gain_or_loss_ref      OUT VARCHAR2
65294  
65295 --Budget Code Combination ID
65296  , p_source_3            IN NUMBER
65297 --Cost CCID
65298  , p_source_4            IN NUMBER
65299 --Allow Account Override Flag
65300  , p_source_5            IN VARCHAR2
65301 --Adjustment Cost CCID
65302  , p_source_6            IN NUMBER
65303 --Cost Clearing CCID
65304  , p_source_7            IN NUMBER
65305 --Reversing Line Flag
65306  , p_source_23            IN VARCHAR2
65307 --Actual Upgrade Credit Accounting Class
65308  , p_source_24            IN VARCHAR2
65309 --Entered Currency Code
65310  , p_source_26            IN VARCHAR2
65311 --Exchange Rate Date
65312  , p_source_28            IN DATE
65313 --Exchange Rate
65314  , p_source_29            IN NUMBER
65315 --Exchange Rate Type
65316  , p_source_30            IN VARCHAR2
65317 --Actual Upgrade Debit Accounting Class
65318  , p_source_31            IN VARCHAR2
65319 --Use Actuals Upgrade Attributes Flag
65320  , p_source_32            IN VARCHAR2
65321 --Expenditure Item ID
65322  , p_source_33            IN NUMBER
65323 --Cost Distribution Line Number
65324  , p_source_34            IN NUMBER
65325 --Line Type
65326  , p_source_35            IN VARCHAR2
65327  , p_source_35_meaning    IN VARCHAR2
65328 --Reversed Line Number
65329  , p_source_36            IN NUMBER
65330 --Encumbrance Upgrade Credit Accounting Class
65331  , p_source_41            IN VARCHAR2
65332 --Use Encumbrance Upgrade Attributes Flag
65333  , p_source_44            IN VARCHAR2
65334 --Entered Burdened Cost
65335  , p_source_52            IN NUMBER
65336 --Accounted Burdened Cost
65337  , p_source_53            IN NUMBER
65338 --Encumbrance Amount
65339  , p_source_54            IN NUMBER
65340 --Project Encumbrance Applied to Application Identifier
65341  , p_source_55            IN NUMBER
65342 --Project Encumbrance Applied to Distribution Type
65343  , p_source_56            IN VARCHAR2
65344 --Project Encumbrance Applied to Entity Code
65345  , p_source_57            IN VARCHAR2
65346 --Project Encumbrance Applied to First Distribution ID
65347  , p_source_58            IN NUMBER
65348 --Project Encumbrance Applied to First System Transaction ID
65349  , p_source_59            IN NUMBER
65350 --Project Encumbrance Applied to Second Distribution ID
65351  , p_source_60            IN VARCHAR2
65352 --Encumbrance Upgrade Debit Accounting Class
65353  , p_source_61            IN VARCHAR2
65354 --Encumbrance Type ID
65355  , p_source_62            IN NUMBER
65356 --Project Encumbrance Type ID
65357  , p_source_63            IN NUMBER
65358 )
65359 IS
65360 
65361 l_component_type              VARCHAR2(80);
65362 l_component_code              VARCHAR2(30);
65363 l_component_type_code         VARCHAR2(1);
65364 l_component_appl_id           INTEGER;
65365 l_amb_context_code            VARCHAR2(30);
65366 l_entity_code                 VARCHAR2(30);
65367 l_event_class_code            VARCHAR2(30);
65368 l_ae_header_id                NUMBER;
65369 l_event_type_code             VARCHAR2(30);
65370 l_line_definition_code        VARCHAR2(30);
65371 l_line_definition_owner_code  VARCHAR2(1);
65372 --
65373 -- adr variables
65374 l_segment                     VARCHAR2(30);
65375 l_ccid                        NUMBER;
65376 l_adr_transaction_coa_id      NUMBER;
65377 l_adr_accounting_coa_id       NUMBER;
65378 l_adr_flexfield_segment_code  VARCHAR2(30);
65379 l_adr_flex_value_set_id       NUMBER;
65380 l_adr_value_type_code         VARCHAR2(30);
65381 l_adr_value_combination_id    NUMBER;
65382 l_adr_value_segment_code      VARCHAR2(30);
65383 
65384 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65385 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65389 -- 4262811 Variables ------------------------------------------------------------------------------------------
65386 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65387 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65388 
65390 l_entered_amt_idx             NUMBER;
65391 l_accted_amt_idx              NUMBER;
65392 l_acc_rev_flag                VARCHAR2(1);
65393 l_accrual_line_num            NUMBER;
65394 l_tmp_amt                     NUMBER;
65395 l_acc_rev_natural_side_code   VARCHAR2(1);
65396 
65397 l_num_entries                 NUMBER;
65398 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65399 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65400 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65401 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65402 l_recog_line_1                NUMBER;
65403 l_recog_line_2                NUMBER;
65404 
65405 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65406 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65407 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65408 
65409 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65410 
65411 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65412 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65413 
65414 ---------------------------------------------------------------------------------------------------------------
65415 
65416 
65417 --
65418 -- bulk performance
65419 --
65420 l_balance_type_code           VARCHAR2(1);
65421 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65422 l_log_module                  VARCHAR2(240);
65423 
65424 --
65425 -- Upgrade strategy
65426 --
65427 l_actual_upg_option           VARCHAR2(1);
65428 l_enc_upg_option           VARCHAR2(1);
65429 
65430 --
65431 BEGIN
65432 --
65433 IF g_log_enabled THEN
65434       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_133';
65435 END IF;
65436 --
65437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65438 
65439       trace
65440          (p_msg      => 'BEGIN of AcctLineType_133'
65441          ,p_level    => C_LEVEL_PROCEDURE
65442          ,p_module   => l_log_module);
65443 
65444 END IF;
65445 --
65446 l_component_type             := 'AMB_JLT';
65447 l_component_code             := 'PA_TOT_BURDEN_COST_FED';
65448 l_component_type_code        := 'S';
65449 l_component_appl_id          :=  275;
65450 l_amb_context_code           := 'DEFAULT';
65451 l_entity_code                := 'EXPENDITURES';
65452 l_event_class_code           := 'TOT_BURDENED_COST';
65453 l_event_type_code            := 'TOT_BURDENED_COST_ALL';
65454 l_line_definition_owner_code := 'S';
65455 l_line_definition_code       := 'FV_PROJECTS_JLD';
65456 --
65457 l_balance_type_code          := 'A';
65458 l_segment                     := NULL;
65459 l_ccid                        := NULL;
65460 l_adr_transaction_coa_id      := NULL;
65461 l_adr_accounting_coa_id       := NULL;
65462 l_adr_flexfield_segment_code  := NULL;
65463 l_adr_flex_value_set_id       := NULL;
65464 l_adr_value_type_code         := NULL;
65465 l_adr_value_combination_id    := NULL;
65466 l_adr_value_segment_code      := NULL;
65467 
65468 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65469 l_bflow_class_code           := '';    -- 4219869 Business Flow
65470 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65471 l_budgetary_control_flag     := 'N';
65472 
65473 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65474 l_bflow_applied_to_amt       := NULL; -- 5132302
65475 l_entered_amt_idx            := NULL;          -- 4262811
65476 l_accted_amt_idx             := NULL;          -- 4262811
65477 l_acc_rev_flag               := NULL;          -- 4262811
65478 l_accrual_line_num           := NULL;          -- 4262811
65479 l_tmp_amt                    := NULL;          -- 4262811
65480 --
65481  
65482 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65483     l_balance_type_code <> 'B' THEN
65484 IF NVL(p_source_35,'
65485 ') =  'D'
65486  THEN 
65487 
65488    --
65489    XLA_AE_LINES_PKG.SetNewLine;
65490 
65491    p_balance_type_code          := l_balance_type_code;
65492    -- set the flag so later we will know whether the gain loss line needs to be created
65493    
65494    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65495      p_actual_flag :='A';
65496    END IF;
65497 
65498    --
65499    -- bulk performance
65500    --
65501    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65502                                       p_header_num   => 0); -- 4262811
65503    --
65504    -- set accounting line options
65505    --
65506    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65507            p_natural_side_code          => 'D'
65508          , p_gain_or_loss_flag          => 'N'
65509          , p_gl_transfer_mode_code      => 'S'
65510          , p_acct_entry_type_code       => 'A'
65511          , p_switch_side_flag           => 'Y'
65512          , p_merge_duplicate_code       => 'N'
65513          );
65514    --
65515    l_acc_rev_natural_side_code := 'C';  -- 4262811
65516    -- 
65517    --
65518    -- set accounting line type info
65519    --
65520    xla_ae_lines_pkg.SetAcctLineType
65521       (p_component_type             => l_component_type
65522       ,p_event_type_code            => l_event_type_code
65523       ,p_line_definition_owner_code => l_line_definition_owner_code
65524       ,p_line_definition_code       => l_line_definition_code
65528       ,p_amb_context_code           => l_amb_context_code
65525       ,p_accounting_line_code       => l_component_code
65526       ,p_accounting_line_type_code  => l_component_type_code
65527       ,p_accounting_line_appl_id    => l_component_appl_id
65529       ,p_entity_code                => l_entity_code
65530       ,p_event_class_code           => l_event_class_code);
65531    --
65532    -- set accounting class
65533    --
65534    xla_ae_lines_pkg.SetAcctClass(
65535            p_accounting_class_code  => 'FEDERAL_PROJECT_COST'
65536          , p_ae_header_id           => l_ae_header_id
65537          );
65538 
65539    --
65540    -- set rounding class
65541    --
65542    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65543                       'FEDERAL_PROJECT_COST';
65544 
65545    --
65546    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65547    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65548    --
65549    -- bulk performance
65550    --
65551    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65552 
65553    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65554       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65555 
65556    -- 4955764
65557    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65558       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65559 
65560    -- 4458381 Public Sector Enh
65561    
65562    --
65563    -- set accounting attributes for the line type
65564    --
65565    l_entered_amt_idx := 39;
65566    l_accted_amt_idx  := 45;
65567    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65568    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
65569    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
65570    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
65571    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
65572    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
65573    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
65574    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
65575    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
65576    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
65577    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
65578    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
65579    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
65580    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
65581    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
65582    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
65583    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
65584    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
65585    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
65586    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
65587    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
65588    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
65589    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
65590    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
65591    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
65592    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
65593    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
65594    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
65595    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
65596    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
65597    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
65598    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
65599    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
65600    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
65601    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
65602    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
65603    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
65604    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_APPLICATION_ID';
65605    l_rec_acct_attrs.array_num_value(19)  := p_source_55;
65606    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_DISTRIBUTION_TYPE';
65607    l_rec_acct_attrs.array_char_value(20)  := p_source_56;
65608    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_ENTITY_CODE';
65609    l_rec_acct_attrs.array_char_value(21)  := p_source_57;
65610    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_DIST_ID';
65611    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_58);
65612    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
65613    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_59);
65614    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_DIST_ID';
65615    l_rec_acct_attrs.array_char_value(24)  := p_source_60;
65616    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
65617    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_33);
65618    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
65619    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_34);
65620    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
65621    l_rec_acct_attrs.array_char_value(27)  := p_source_35;
65622    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_CR_ACCT_CLASS';
65623    l_rec_acct_attrs.array_char_value(28)  := p_source_41;
65624    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_CR_CCID';
65625    l_rec_acct_attrs.array_num_value(29)  := p_source_3;
65626    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_CR_ENTERED_AMT';
65630 xla_ae_sources_pkg.GetSystemSourceChar(
65627    l_rec_acct_attrs.array_num_value(30)  := p_source_54;
65628    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_CR_ENTERED_CURR';
65629    l_rec_acct_attrs.array_char_value(31)  := 
65631    p_source_code           => 'XLA_CURRENCY_CODE'
65632  , p_source_type_code      => 'Y'
65633  , p_source_application_id =>  602
65634 );
65635    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_CR_LEDGER_AMT';
65636    l_rec_acct_attrs.array_num_value(32)  := p_source_54;
65637    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_DR_ACCT_CLASS';
65638    l_rec_acct_attrs.array_char_value(33)  := p_source_61;
65639    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENC_UPG_DR_CCID';
65640    l_rec_acct_attrs.array_num_value(34)  := p_source_3;
65641    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENC_UPG_DR_ENTERED_AMT';
65642    l_rec_acct_attrs.array_num_value(35)  := p_source_54;
65643    l_rec_acct_attrs.array_acct_attr_code(36) := 'ENC_UPG_DR_ENTERED_CURR';
65644    l_rec_acct_attrs.array_char_value(36)  := 
65645 xla_ae_sources_pkg.GetSystemSourceChar(
65646    p_source_code           => 'XLA_CURRENCY_CODE'
65647  , p_source_type_code      => 'Y'
65648  , p_source_application_id =>  602
65649 );
65650    l_rec_acct_attrs.array_acct_attr_code(37) := 'ENC_UPG_DR_LEDGER_AMT';
65651    l_rec_acct_attrs.array_num_value(37)  := p_source_54;
65652    l_rec_acct_attrs.array_acct_attr_code(38) := 'ENC_UPG_OPTION';
65653    l_rec_acct_attrs.array_char_value(38)  := p_source_44;
65654    l_rec_acct_attrs.array_acct_attr_code(39) := 'ENTERED_CURRENCY_AMOUNT';
65655    l_rec_acct_attrs.array_num_value(39)  := p_source_52;
65656    l_rec_acct_attrs.array_acct_attr_code(40) := 'ENTERED_CURRENCY_CODE';
65657    l_rec_acct_attrs.array_char_value(40)  := p_source_26;
65658    l_rec_acct_attrs.array_acct_attr_code(41) := 'EXCHANGE_DATE';
65659    l_rec_acct_attrs.array_date_value(41)  := p_source_28;
65660    l_rec_acct_attrs.array_acct_attr_code(42) := 'EXCHANGE_RATE';
65661    l_rec_acct_attrs.array_num_value(42)  := p_source_29;
65662    l_rec_acct_attrs.array_acct_attr_code(43) := 'EXCHANGE_RATE_TYPE';
65663    l_rec_acct_attrs.array_char_value(43)  := p_source_30;
65664    l_rec_acct_attrs.array_acct_attr_code(44) := 'GAIN_LOSS_REFERENCE';
65665    l_rec_acct_attrs.array_num_value(44)  :=  to_char(p_source_33);
65666    l_rec_acct_attrs.array_acct_attr_code(45) := 'LEDGER_AMOUNT';
65667    l_rec_acct_attrs.array_num_value(45)  := p_source_53;
65668    l_rec_acct_attrs.array_acct_attr_code(46) := 'REVERSED_DISTRIBUTION_ID1';
65669    l_rec_acct_attrs.array_num_value(46)  :=  to_char(p_source_33);
65670    l_rec_acct_attrs.array_acct_attr_code(47) := 'REVERSED_DISTRIBUTION_ID2';
65671    l_rec_acct_attrs.array_num_value(47)  :=  to_char(p_source_36);
65672    l_rec_acct_attrs.array_acct_attr_code(48) := 'REVERSED_DISTRIBUTION_TYPE';
65673    l_rec_acct_attrs.array_char_value(48)  := p_source_35;
65674    l_rec_acct_attrs.array_acct_attr_code(49) := 'UPG_CR_ENC_TYPE_ID';
65675    l_rec_acct_attrs.array_num_value(49)  := p_source_62;
65676    l_rec_acct_attrs.array_acct_attr_code(50) := 'UPG_DR_ENC_TYPE_ID';
65677    l_rec_acct_attrs.array_num_value(50)  := p_source_63;
65678 
65679    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65680    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65681 
65682    ---------------------------------------------------------------------------------------------------------------
65683    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65684    ---------------------------------------------------------------------------------------------------------------
65685    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65686 
65687    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65688    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65689 
65690    IF xla_accounting_cache_pkg.GetValueChar
65691          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65692          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65693    AND l_bflow_method_code = 'PRIOR_ENTRY'
65694 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65695    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65696          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65697        )
65698    THEN
65699          xla_ae_lines_pkg.BflowUpgEntry
65700            (p_business_method_code    => l_bflow_method_code
65701            ,p_business_class_code     => l_bflow_class_code
65702            ,p_balance_type            => l_balance_type_code);
65703    ELSE
65704       NULL;
65705 -- No business flow processing for business flow method of NONE.
65706    END IF;
65707 
65708    --
65709    -- call analytical criteria
65710    --
65711    
65712    --
65713    -- call description
65714    --
65715    -- No description or it is inherited.
65716    --
65717    -- call ADRs
65718    -- Bug 4922099
65719    --
65720    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65721         (NVL(l_actual_upg_option, 'N') = 'O') OR
65722         (NVL(l_enc_upg_option, 'N') = 'O')
65723       )
65724    THEN
65725    NULL;
65726    --
65727    --
65728    
65729   l_ccid := AcctDerRule_12(
65730            p_application_id           => p_application_id
65731          , p_ae_header_id             => l_ae_header_id 
65732 , p_source_4 => p_source_4
65733 , p_source_5 => p_source_5
65734 , p_source_6 => p_source_6
65735          , x_transaction_coa_id       => l_adr_transaction_coa_id
65736          , x_accounting_coa_id        => l_adr_accounting_coa_id
65737          , x_value_type_code          => l_adr_value_type_code
65738          , p_side                     => 'NA'
65739    );
65740 
65741    xla_ae_lines_pkg.set_ccid(
65745   , p_accounting_coa_id            => l_adr_accounting_coa_id
65742     p_code_combination_id          => l_ccid
65743   , p_value_type_code              => l_adr_value_type_code
65744   , p_transaction_coa_id           => l_adr_transaction_coa_id
65746   , p_adr_code                     => 'PA_COST_ACCT_RULE'
65747   , p_adr_type_code                => 'S'
65748   , p_component_type               => l_component_type
65749   , p_component_code               => l_component_code
65750   , p_component_type_code          => l_component_type_code
65751   , p_component_appl_id            => l_component_appl_id
65752   , p_amb_context_code             => l_amb_context_code
65753   , p_side                         => 'NA'
65754   );
65755 
65756 
65757    l_segment := AcctDerRule_4(
65758            p_application_id           => p_application_id
65759          , p_ae_header_id             => l_ae_header_id 
65760          , x_transaction_coa_id       => l_adr_transaction_coa_id
65761          , x_accounting_coa_id        => l_adr_accounting_coa_id
65762          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
65763          , x_flex_value_set_id        => l_adr_flex_value_set_id
65764          , x_value_type_code          => l_adr_value_type_code
65765          , x_value_combination_id     => l_adr_value_combination_id
65766          , x_value_segment_code       => l_adr_value_segment_code
65767          , p_side                     => 'NA'
65768          , p_override_seg_flag        => 'Y'
65769    );
65770 
65771    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
65772 
65773       xla_ae_lines_pkg.set_segment(
65774           p_to_segment_code         => 'GL_ACCOUNT'
65775         , p_segment_value           => l_segment
65776         , p_from_segment_code       => l_adr_value_segment_code
65777         , p_from_combination_id     => l_adr_value_combination_id
65778         , p_value_type_code         => l_adr_value_type_code
65779         , p_transaction_coa_id      => l_adr_transaction_coa_id
65780         , p_accounting_coa_id       => l_adr_accounting_coa_id
65781         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
65782         , p_flex_value_set_id       => l_adr_flex_value_set_id
65783         , p_adr_code                => 'FV_461001_PROJECTS'
65784         , p_adr_type_code           => 'S'
65785         , p_component_type          => l_component_type
65786         , p_component_code          => l_component_code
65787         , p_component_type_code     => l_component_type_code
65788         , p_component_appl_id       => l_component_appl_id
65789         , p_amb_context_code        => l_amb_context_code
65790         , p_entity_code             => 'EXPENDITURES'
65791         , p_event_class_code        => 'TOT_BURDENED_COST'
65792         , p_side                    => 'NA'
65793         );
65794 
65795   END IF;
65796 
65797    --
65798    --
65799    END IF;
65800    --
65801    -- Bug 4922099
65802    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65803           (NVL(l_enc_upg_option, 'N') = 'O')
65804         ) AND
65805         (l_bflow_method_code = 'PRIOR_ENTRY')
65806       )
65807    THEN
65808       IF
65809       --
65810       1 = 2
65811       --
65812       THEN
65813       xla_accounting_err_pkg.build_message
65814                                     (p_appli_s_name            => 'XLA'
65815                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65816                                     ,p_token_1                 => 'LINE_NUMBER'
65817                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65818                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65819                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65820                                                                              l_component_type
65821                                                                             ,l_component_code
65822                                                                             ,l_component_type_code
65823                                                                             ,l_component_appl_id
65824                                                                             ,l_amb_context_code
65825                                                                             ,l_entity_code
65826                                                                             ,l_event_class_code
65827                                                                            )
65828                                     ,p_token_3                 => 'OWNER'
65829                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65830                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65831                                                                           ,p_lookup_code    => l_component_type_code
65832                                                                          )
65833                                     ,p_token_4                 => 'PRODUCT_NAME'
65834                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65835                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65836                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65837                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65838                                     ,p_ae_header_id            =>  NULL
65839                                        );
65840 
65841         IF (C_LEVEL_ERROR>= g_log_level) THEN
65842                  trace
65843                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65844                       ,p_level    => C_LEVEL_ERROR
65845                       ,p_module   => l_log_module);
65846         END IF;
65850    --
65847       END IF;
65848    END IF;
65849    --
65851    ------------------------------------------------------------------------------------------------
65852    -- 4219869 Business Flow
65853    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65854    -- Prior Entry.  Currently, the following code is always generated.
65855    ------------------------------------------------------------------------------------------------
65856    XLA_AE_LINES_PKG.ValidateCurrentLine;
65857 
65858    ------------------------------------------------------------------------------------
65859    -- 4219869 Business Flow
65860    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65861    ------------------------------------------------------------------------------------
65862    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65863 
65864    ----------------------------------------------------------------------------------
65865    -- 4219869 Business Flow
65866    -- Update journal entry status -- Need to generate this within IF <condition>
65867    ----------------------------------------------------------------------------------
65868    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65869          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65870          ,p_balance_type_code => l_balance_type_code
65871          );
65872 
65873    -------------------------------------------------------------------------------------------
65874    -- 4262811 - Generate the Accrual Reversal lines
65875    -------------------------------------------------------------------------------------------
65876    BEGIN
65877       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65878                               (g_array_event(p_event_id).array_value_num('header_index'));
65879       IF l_acc_rev_flag IS NULL THEN
65880          l_acc_rev_flag := 'N';
65881       END IF;
65882    EXCEPTION
65883       WHEN OTHERS THEN
65884          l_acc_rev_flag := 'N';
65885    END;
65886    --
65887    IF (l_acc_rev_flag = 'Y') THEN
65888 
65889        -- 4645092  ------------------------------------------------------------------------------
65890        -- To allow MPA report to determine if it should generate report process
65891        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65892        ------------------------------------------------------------------------------------------
65893 
65894        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65895        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65896 
65897        --
65898        -- Update the line information that should be overwritten
65899        --
65900        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65901                                          p_header_num   => 1);
65902        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65903 
65904        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65905 
65906        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65907           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65908        END IF;
65909 
65910       --
65911       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65912       --
65913       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65914           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65915       ELSE
65916           ---------------------------------------------------------------------------------------------------
65917           -- 4262811a Switch Sign
65918           ---------------------------------------------------------------------------------------------------
65919           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65920           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65921                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65922           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65923                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65924           -- 5132302
65925           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65926                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65927 
65928       END IF;
65929 
65930       -- 4955764
65931       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65932       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65933 
65934 
65935       XLA_AE_LINES_PKG.ValidateCurrentLine;
65936       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65937 
65938       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65939                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65940                ,p_balance_type_code => l_balance_type_code);
65941 
65942    END IF;
65943 
65944    -----------------------------------------------------------------------------------------
65945    -- 4262811 Multiperiod Accounting
65946    -----------------------------------------------------------------------------------------
65947      -- No MPA option is assigned.
65948 
65949 
65950 END IF;
65951 END IF;
65952 --
65953 
65954 --
65955 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65956    trace
65957       (p_msg      => 'END of AcctLineType_133'
65958       ,p_level    => C_LEVEL_PROCEDURE
65959       ,p_module   => l_log_module);
65960 END IF;
65961 --
65962 EXCEPTION
65966        xla_exceptions_pkg.raise_message
65963   WHEN xla_exceptions_pkg.application_exception THEN
65964       RAISE;
65965   WHEN OTHERS THEN
65967            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_133');
65968 END AcctLineType_133;
65969 --
65970 
65971 ---------------------------------------
65972 --
65973 -- PRIVATE FUNCTION
65974 --         AcctLineType_134
65975 --
65976 ---------------------------------------
65977 PROCEDURE AcctLineType_134 (
65978   p_application_id        IN NUMBER
65979  ,p_event_id              IN NUMBER
65980  ,p_calculate_acctd_flag  IN VARCHAR2
65981  ,p_calculate_g_l_flag    IN VARCHAR2
65982  ,p_actual_flag           IN OUT VARCHAR2
65983  ,p_balance_type_code     OUT VARCHAR2
65984  ,p_gain_or_loss_ref      OUT VARCHAR2
65985  
65986 --Budget Code Combination ID
65987  , p_source_3            IN NUMBER
65988 --Cost CCID
65989  , p_source_4            IN NUMBER
65990 --Allow Account Override Flag
65991  , p_source_5            IN VARCHAR2
65992 --Cost Clearing CCID
65993  , p_source_7            IN NUMBER
65994 --Adjustment Cost Clearing CCID
65995  , p_source_8            IN NUMBER
65996 --Reversing Line Flag
65997  , p_source_23            IN VARCHAR2
65998 --Actual Upgrade Credit Accounting Class
65999  , p_source_24            IN VARCHAR2
66000 --Entered Currency Code
66001  , p_source_26            IN VARCHAR2
66002 --Exchange Rate Date
66003  , p_source_28            IN DATE
66004 --Exchange Rate
66005  , p_source_29            IN NUMBER
66006 --Exchange Rate Type
66007  , p_source_30            IN VARCHAR2
66008 --Actual Upgrade Debit Accounting Class
66009  , p_source_31            IN VARCHAR2
66010 --Use Actuals Upgrade Attributes Flag
66011  , p_source_32            IN VARCHAR2
66012 --Expenditure Item ID
66013  , p_source_33            IN NUMBER
66014 --Cost Distribution Line Number
66015  , p_source_34            IN NUMBER
66016 --Line Type
66017  , p_source_35            IN VARCHAR2
66018  , p_source_35_meaning    IN VARCHAR2
66019 --Reversed Line Number
66020  , p_source_36            IN NUMBER
66021 --Use Encumbrance Upgrade Attributes Flag
66022  , p_source_44            IN VARCHAR2
66023 --Entered Burdened Cost
66024  , p_source_52            IN NUMBER
66025 --Accounted Burdened Cost
66026  , p_source_53            IN NUMBER
66027 --Encumbrance Amount
66028  , p_source_54            IN NUMBER
66029 --Project Encumbrance Applied to Application Identifier
66030  , p_source_55            IN NUMBER
66031 --Project Encumbrance Applied to Distribution Type
66032  , p_source_56            IN VARCHAR2
66033 --Project Encumbrance Applied to Entity Code
66034  , p_source_57            IN VARCHAR2
66035 --Project Encumbrance Applied to First Distribution ID
66036  , p_source_58            IN NUMBER
66037 --Project Encumbrance Applied to First System Transaction ID
66038  , p_source_59            IN NUMBER
66039 --Project Encumbrance Applied to Second Distribution ID
66040  , p_source_60            IN VARCHAR2
66041 --Encumbrance Upgrade Debit Accounting Class
66042  , p_source_61            IN VARCHAR2
66043 --Encumbrance Type ID
66044  , p_source_62            IN NUMBER
66045 --Project Encumbrance Type ID
66046  , p_source_63            IN NUMBER
66047 )
66048 IS
66049 
66050 l_component_type              VARCHAR2(80);
66051 l_component_code              VARCHAR2(30);
66052 l_component_type_code         VARCHAR2(1);
66053 l_component_appl_id           INTEGER;
66054 l_amb_context_code            VARCHAR2(30);
66055 l_entity_code                 VARCHAR2(30);
66056 l_event_class_code            VARCHAR2(30);
66057 l_ae_header_id                NUMBER;
66058 l_event_type_code             VARCHAR2(30);
66059 l_line_definition_code        VARCHAR2(30);
66060 l_line_definition_owner_code  VARCHAR2(1);
66061 --
66062 -- adr variables
66063 l_segment                     VARCHAR2(30);
66064 l_ccid                        NUMBER;
66065 l_adr_transaction_coa_id      NUMBER;
66066 l_adr_accounting_coa_id       NUMBER;
66067 l_adr_flexfield_segment_code  VARCHAR2(30);
66068 l_adr_flex_value_set_id       NUMBER;
66069 l_adr_value_type_code         VARCHAR2(30);
66070 l_adr_value_combination_id    NUMBER;
66071 l_adr_value_segment_code      VARCHAR2(30);
66072 
66073 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66074 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66075 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66076 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66077 
66078 -- 4262811 Variables ------------------------------------------------------------------------------------------
66079 l_entered_amt_idx             NUMBER;
66080 l_accted_amt_idx              NUMBER;
66081 l_acc_rev_flag                VARCHAR2(1);
66082 l_accrual_line_num            NUMBER;
66083 l_tmp_amt                     NUMBER;
66084 l_acc_rev_natural_side_code   VARCHAR2(1);
66085 
66086 l_num_entries                 NUMBER;
66087 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66088 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66089 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66090 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66091 l_recog_line_1                NUMBER;
66092 l_recog_line_2                NUMBER;
66093 
66094 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66095 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66096 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66097 
66098 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66099 
66103 ---------------------------------------------------------------------------------------------------------------
66100 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66101 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66102 
66104 
66105 
66106 --
66107 -- bulk performance
66108 --
66109 l_balance_type_code           VARCHAR2(1);
66110 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66111 l_log_module                  VARCHAR2(240);
66112 
66113 --
66114 -- Upgrade strategy
66115 --
66116 l_actual_upg_option           VARCHAR2(1);
66117 l_enc_upg_option           VARCHAR2(1);
66118 
66119 --
66120 BEGIN
66121 --
66122 IF g_log_enabled THEN
66123       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_134';
66124 END IF;
66125 --
66126 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66127 
66128       trace
66129          (p_msg      => 'BEGIN of AcctLineType_134'
66130          ,p_level    => C_LEVEL_PROCEDURE
66131          ,p_module   => l_log_module);
66132 
66133 END IF;
66134 --
66135 l_component_type             := 'AMB_JLT';
66136 l_component_code             := 'PA_TOT_BURD_COST_ADJ_CLEAR_FED';
66137 l_component_type_code        := 'S';
66138 l_component_appl_id          :=  275;
66139 l_amb_context_code           := 'DEFAULT';
66140 l_entity_code                := 'EXPENDITURES';
66141 l_event_class_code           := 'TOT_BURDENED_COST_ADJ';
66142 l_event_type_code            := 'TOT_BURDENED_COST_ADJ_ALL';
66143 l_line_definition_owner_code := 'S';
66144 l_line_definition_code       := 'FV_PROJECTS_JLD';
66145 --
66146 l_balance_type_code          := 'A';
66147 l_segment                     := NULL;
66148 l_ccid                        := NULL;
66149 l_adr_transaction_coa_id      := NULL;
66150 l_adr_accounting_coa_id       := NULL;
66151 l_adr_flexfield_segment_code  := NULL;
66152 l_adr_flex_value_set_id       := NULL;
66153 l_adr_value_type_code         := NULL;
66154 l_adr_value_combination_id    := NULL;
66155 l_adr_value_segment_code      := NULL;
66156 
66157 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66158 l_bflow_class_code           := '';    -- 4219869 Business Flow
66159 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66160 l_budgetary_control_flag     := 'N';
66161 
66162 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66163 l_bflow_applied_to_amt       := NULL; -- 5132302
66164 l_entered_amt_idx            := NULL;          -- 4262811
66165 l_accted_amt_idx             := NULL;          -- 4262811
66166 l_acc_rev_flag               := NULL;          -- 4262811
66167 l_accrual_line_num           := NULL;          -- 4262811
66168 l_tmp_amt                    := NULL;          -- 4262811
66169 --
66170  
66171 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66172     l_balance_type_code <> 'B' THEN
66173 IF NVL(p_source_35,'
66174 ') =  'C'
66175  THEN 
66176 
66177    --
66178    XLA_AE_LINES_PKG.SetNewLine;
66179 
66180    p_balance_type_code          := l_balance_type_code;
66181    -- set the flag so later we will know whether the gain loss line needs to be created
66182    
66183    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66184      p_actual_flag :='A';
66185    END IF;
66186 
66187    --
66188    -- bulk performance
66189    --
66190    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66191                                       p_header_num   => 0); -- 4262811
66192    --
66193    -- set accounting line options
66194    --
66195    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66196            p_natural_side_code          => 'C'
66197          , p_gain_or_loss_flag          => 'N'
66198          , p_gl_transfer_mode_code      => 'S'
66199          , p_acct_entry_type_code       => 'A'
66200          , p_switch_side_flag           => 'Y'
66201          , p_merge_duplicate_code       => 'N'
66202          );
66203    --
66204    l_acc_rev_natural_side_code := 'D';  -- 4262811
66205    -- 
66206    --
66207    -- set accounting line type info
66208    --
66209    xla_ae_lines_pkg.SetAcctLineType
66210       (p_component_type             => l_component_type
66211       ,p_event_type_code            => l_event_type_code
66212       ,p_line_definition_owner_code => l_line_definition_owner_code
66213       ,p_line_definition_code       => l_line_definition_code
66214       ,p_accounting_line_code       => l_component_code
66215       ,p_accounting_line_type_code  => l_component_type_code
66216       ,p_accounting_line_appl_id    => l_component_appl_id
66217       ,p_amb_context_code           => l_amb_context_code
66218       ,p_entity_code                => l_entity_code
66219       ,p_event_class_code           => l_event_class_code);
66220    --
66221    -- set accounting class
66222    --
66223    xla_ae_lines_pkg.SetAcctClass(
66224            p_accounting_class_code  => 'FEDERAL_PROJECT_COST_CLEARING'
66225          , p_ae_header_id           => l_ae_header_id
66226          );
66227 
66228    --
66229    -- set rounding class
66230    --
66231    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66232                       'FEDERAL_PROJECT_COST_CLEARING';
66233 
66234    --
66235    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66236    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66237    --
66238    -- bulk performance
66239    --
66240    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66241 
66245    -- 4955764
66242    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66243       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66244 
66246    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66247       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66248 
66249    -- 4458381 Public Sector Enh
66250    
66251    --
66252    -- set accounting attributes for the line type
66253    --
66254    l_entered_amt_idx := 34;
66255    l_accted_amt_idx  := 39;
66256    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66257    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
66258    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
66259    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_ACCT_CLASS';
66260    l_rec_acct_attrs.array_char_value(2)  := p_source_24;
66261    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_CCID';
66262    l_rec_acct_attrs.array_num_value(3)  := TO_NUMBER(p_source_7);
66263    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_AMT';
66264    l_rec_acct_attrs.array_num_value(4)  := p_source_52;
66265    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_CURR';
66266    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
66267    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_LEDGER_AMT';
66268    l_rec_acct_attrs.array_num_value(6)  := p_source_53;
66269    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XDATE';
66270    l_rec_acct_attrs.array_date_value(7)  := p_source_28;
66271    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE';
66272    l_rec_acct_attrs.array_num_value(8)  := p_source_29;
66273    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE_TYPE';
66274    l_rec_acct_attrs.array_char_value(9)  := p_source_30;
66275    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_ACCT_CLASS';
66276    l_rec_acct_attrs.array_char_value(10)  := p_source_31;
66277    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_CCID';
66278    l_rec_acct_attrs.array_num_value(11)  := TO_NUMBER(p_source_4);
66279    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_AMT';
66280    l_rec_acct_attrs.array_num_value(12)  := p_source_52;
66281    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_CURR';
66282    l_rec_acct_attrs.array_char_value(13)  := p_source_26;
66283    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_LEDGER_AMT';
66284    l_rec_acct_attrs.array_num_value(14)  := p_source_53;
66285    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XDATE';
66286    l_rec_acct_attrs.array_date_value(15)  := p_source_28;
66287    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE';
66288    l_rec_acct_attrs.array_num_value(16)  := p_source_29;
66289    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE_TYPE';
66290    l_rec_acct_attrs.array_char_value(17)  := p_source_30;
66291    l_rec_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_OPTION';
66292    l_rec_acct_attrs.array_char_value(18)  := p_source_32;
66293    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_APPLICATION_ID';
66294    l_rec_acct_attrs.array_num_value(19)  := p_source_55;
66295    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_DISTRIBUTION_TYPE';
66296    l_rec_acct_attrs.array_char_value(20)  := p_source_56;
66297    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_ENTITY_CODE';
66298    l_rec_acct_attrs.array_char_value(21)  := p_source_57;
66299    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_DIST_ID';
66300    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_58);
66301    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
66302    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_59);
66303    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_DIST_ID';
66304    l_rec_acct_attrs.array_char_value(24)  := p_source_60;
66305    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
66306    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_33);
66307    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
66308    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_34);
66309    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
66310    l_rec_acct_attrs.array_char_value(27)  := p_source_35;
66311    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
66312    l_rec_acct_attrs.array_char_value(28)  := p_source_61;
66313    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
66314    l_rec_acct_attrs.array_num_value(29)  := p_source_3;
66315    l_rec_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
66316    l_rec_acct_attrs.array_num_value(30)  := p_source_54;
66317    l_rec_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
66318    l_rec_acct_attrs.array_char_value(31)  := 
66319 xla_ae_sources_pkg.GetSystemSourceChar(
66320    p_source_code           => 'XLA_CURRENCY_CODE'
66321  , p_source_type_code      => 'Y'
66322  , p_source_application_id =>  602
66323 );
66324    l_rec_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
66325    l_rec_acct_attrs.array_num_value(32)  := p_source_54;
66326    l_rec_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
66327    l_rec_acct_attrs.array_char_value(33)  := p_source_44;
66328    l_rec_acct_attrs.array_acct_attr_code(34) := 'ENTERED_CURRENCY_AMOUNT';
66329    l_rec_acct_attrs.array_num_value(34)  := p_source_52;
66330    l_rec_acct_attrs.array_acct_attr_code(35) := 'ENTERED_CURRENCY_CODE';
66331    l_rec_acct_attrs.array_char_value(35)  := p_source_26;
66332    l_rec_acct_attrs.array_acct_attr_code(36) := 'EXCHANGE_DATE';
66333    l_rec_acct_attrs.array_date_value(36)  := p_source_28;
66334    l_rec_acct_attrs.array_acct_attr_code(37) := 'EXCHANGE_RATE';
66335    l_rec_acct_attrs.array_num_value(37)  := p_source_29;
66336    l_rec_acct_attrs.array_acct_attr_code(38) := 'EXCHANGE_RATE_TYPE';
66337    l_rec_acct_attrs.array_char_value(38)  := p_source_30;
66341    l_rec_acct_attrs.array_num_value(40)  :=  to_char(p_source_33);
66338    l_rec_acct_attrs.array_acct_attr_code(39) := 'LEDGER_AMOUNT';
66339    l_rec_acct_attrs.array_num_value(39)  := p_source_53;
66340    l_rec_acct_attrs.array_acct_attr_code(40) := 'REVERSED_DISTRIBUTION_ID1';
66342    l_rec_acct_attrs.array_acct_attr_code(41) := 'REVERSED_DISTRIBUTION_ID2';
66343    l_rec_acct_attrs.array_num_value(41)  :=  to_char(p_source_36);
66344    l_rec_acct_attrs.array_acct_attr_code(42) := 'REVERSED_DISTRIBUTION_TYPE';
66345    l_rec_acct_attrs.array_char_value(42)  := p_source_35;
66346    l_rec_acct_attrs.array_acct_attr_code(43) := 'UPG_CR_ENC_TYPE_ID';
66347    l_rec_acct_attrs.array_num_value(43)  := p_source_62;
66348    l_rec_acct_attrs.array_acct_attr_code(44) := 'UPG_DR_ENC_TYPE_ID';
66349    l_rec_acct_attrs.array_num_value(44)  := p_source_63;
66350 
66351    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66352    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66353 
66354    ---------------------------------------------------------------------------------------------------------------
66355    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66356    ---------------------------------------------------------------------------------------------------------------
66357    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66358 
66359    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66360    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66361 
66362    IF xla_accounting_cache_pkg.GetValueChar
66363          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66364          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66365    AND l_bflow_method_code = 'PRIOR_ENTRY'
66366 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66367    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66368          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66369        )
66370    THEN
66371          xla_ae_lines_pkg.BflowUpgEntry
66372            (p_business_method_code    => l_bflow_method_code
66373            ,p_business_class_code     => l_bflow_class_code
66374            ,p_balance_type            => l_balance_type_code);
66375    ELSE
66376       NULL;
66377 -- No business flow processing for business flow method of NONE.
66378    END IF;
66379 
66380    --
66381    -- call analytical criteria
66382    --
66383    
66384    --
66385    -- call description
66386    --
66387    -- No description or it is inherited.
66388    --
66389    -- call ADRs
66390    -- Bug 4922099
66391    --
66392    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66393         (NVL(l_actual_upg_option, 'N') = 'O') OR
66394         (NVL(l_enc_upg_option, 'N') = 'O')
66395       )
66396    THEN
66397    NULL;
66398    --
66399    --
66400    
66401   l_ccid := AcctDerRule_15(
66402            p_application_id           => p_application_id
66403          , p_ae_header_id             => l_ae_header_id 
66404 , p_source_5 => p_source_5
66405 , p_source_8 => p_source_8
66406          , x_transaction_coa_id       => l_adr_transaction_coa_id
66407          , x_accounting_coa_id        => l_adr_accounting_coa_id
66408          , x_value_type_code          => l_adr_value_type_code
66409          , p_side                     => 'NA'
66410    );
66411 
66412    xla_ae_lines_pkg.set_ccid(
66413     p_code_combination_id          => l_ccid
66414   , p_value_type_code              => l_adr_value_type_code
66415   , p_transaction_coa_id           => l_adr_transaction_coa_id
66416   , p_accounting_coa_id            => l_adr_accounting_coa_id
66417   , p_adr_code                     => 'PA_COST_CLEARING_ADJ_ACC'
66418   , p_adr_type_code                => 'S'
66419   , p_component_type               => l_component_type
66420   , p_component_code               => l_component_code
66421   , p_component_type_code          => l_component_type_code
66422   , p_component_appl_id            => l_component_appl_id
66423   , p_amb_context_code             => l_amb_context_code
66424   , p_side                         => 'NA'
66425   );
66426 
66427 
66428    l_segment := AcctDerRule_5(
66429            p_application_id           => p_application_id
66430          , p_ae_header_id             => l_ae_header_id 
66431          , x_transaction_coa_id       => l_adr_transaction_coa_id
66432          , x_accounting_coa_id        => l_adr_accounting_coa_id
66433          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
66434          , x_flex_value_set_id        => l_adr_flex_value_set_id
66435          , x_value_type_code          => l_adr_value_type_code
66436          , x_value_combination_id     => l_adr_value_combination_id
66437          , x_value_segment_code       => l_adr_value_segment_code
66438          , p_side                     => 'NA'
66439          , p_override_seg_flag        => 'Y'
66440    );
66441 
66442    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
66443 
66444       xla_ae_lines_pkg.set_segment(
66445           p_to_segment_code         => 'GL_ACCOUNT'
66446         , p_segment_value           => l_segment
66447         , p_from_segment_code       => l_adr_value_segment_code
66448         , p_from_combination_id     => l_adr_value_combination_id
66449         , p_value_type_code         => l_adr_value_type_code
66450         , p_transaction_coa_id      => l_adr_transaction_coa_id
66451         , p_accounting_coa_id       => l_adr_accounting_coa_id
66452         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
66453         , p_flex_value_set_id       => l_adr_flex_value_set_id
66454         , p_adr_code                => 'FV_490201_PROJECTS'
66455         , p_adr_type_code           => 'S'
66459         , p_component_appl_id       => l_component_appl_id
66456         , p_component_type          => l_component_type
66457         , p_component_code          => l_component_code
66458         , p_component_type_code     => l_component_type_code
66460         , p_amb_context_code        => l_amb_context_code
66461         , p_entity_code             => 'EXPENDITURES'
66462         , p_event_class_code        => 'TOT_BURDENED_COST_ADJ'
66463         , p_side                    => 'NA'
66464         );
66465 
66466   END IF;
66467 
66468    --
66469    --
66470    END IF;
66471    --
66472    -- Bug 4922099
66473    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66474           (NVL(l_enc_upg_option, 'N') = 'O')
66475         ) AND
66476         (l_bflow_method_code = 'PRIOR_ENTRY')
66477       )
66478    THEN
66479       IF
66480       --
66481       1 = 2
66482       --
66483       THEN
66484       xla_accounting_err_pkg.build_message
66485                                     (p_appli_s_name            => 'XLA'
66486                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66487                                     ,p_token_1                 => 'LINE_NUMBER'
66488                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66489                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66490                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66491                                                                              l_component_type
66492                                                                             ,l_component_code
66493                                                                             ,l_component_type_code
66494                                                                             ,l_component_appl_id
66495                                                                             ,l_amb_context_code
66496                                                                             ,l_entity_code
66497                                                                             ,l_event_class_code
66498                                                                            )
66499                                     ,p_token_3                 => 'OWNER'
66500                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66501                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66502                                                                           ,p_lookup_code    => l_component_type_code
66503                                                                          )
66504                                     ,p_token_4                 => 'PRODUCT_NAME'
66505                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66506                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66507                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66508                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66509                                     ,p_ae_header_id            =>  NULL
66510                                        );
66511 
66512         IF (C_LEVEL_ERROR>= g_log_level) THEN
66513                  trace
66514                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66515                       ,p_level    => C_LEVEL_ERROR
66516                       ,p_module   => l_log_module);
66517         END IF;
66518       END IF;
66519    END IF;
66520    --
66521    --
66522    ------------------------------------------------------------------------------------------------
66523    -- 4219869 Business Flow
66524    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66525    -- Prior Entry.  Currently, the following code is always generated.
66526    ------------------------------------------------------------------------------------------------
66527    XLA_AE_LINES_PKG.ValidateCurrentLine;
66528 
66529    ------------------------------------------------------------------------------------
66530    -- 4219869 Business Flow
66531    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66532    ------------------------------------------------------------------------------------
66533    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66534 
66535    ----------------------------------------------------------------------------------
66536    -- 4219869 Business Flow
66537    -- Update journal entry status -- Need to generate this within IF <condition>
66538    ----------------------------------------------------------------------------------
66539    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66540          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66541          ,p_balance_type_code => l_balance_type_code
66542          );
66543 
66544    -------------------------------------------------------------------------------------------
66545    -- 4262811 - Generate the Accrual Reversal lines
66546    -------------------------------------------------------------------------------------------
66547    BEGIN
66548       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66549                               (g_array_event(p_event_id).array_value_num('header_index'));
66550       IF l_acc_rev_flag IS NULL THEN
66551          l_acc_rev_flag := 'N';
66552       END IF;
66553    EXCEPTION
66554       WHEN OTHERS THEN
66555          l_acc_rev_flag := 'N';
66556    END;
66557    --
66558    IF (l_acc_rev_flag = 'Y') THEN
66559 
66560        -- 4645092  ------------------------------------------------------------------------------
66561        -- To allow MPA report to determine if it should generate report process
66565        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66562        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66563        ------------------------------------------------------------------------------------------
66564 
66566        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66567 
66568        --
66569        -- Update the line information that should be overwritten
66570        --
66571        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66572                                          p_header_num   => 1);
66573        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66574 
66575        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66576 
66577        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66578           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66579        END IF;
66580 
66581       --
66582       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66583       --
66584       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66585           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66586       ELSE
66587           ---------------------------------------------------------------------------------------------------
66588           -- 4262811a Switch Sign
66589           ---------------------------------------------------------------------------------------------------
66590           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66591           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66592                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66593           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66594                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66595           -- 5132302
66596           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66597                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66598 
66599       END IF;
66600 
66601       -- 4955764
66602       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66603       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66604 
66605 
66606       XLA_AE_LINES_PKG.ValidateCurrentLine;
66607       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66608 
66609       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66610                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66611                ,p_balance_type_code => l_balance_type_code);
66612 
66613    END IF;
66614 
66615    -----------------------------------------------------------------------------------------
66616    -- 4262811 Multiperiod Accounting
66617    -----------------------------------------------------------------------------------------
66618      -- No MPA option is assigned.
66619 
66620 
66621 END IF;
66622 END IF;
66623 --
66624 
66625 --
66626 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66627    trace
66628       (p_msg      => 'END of AcctLineType_134'
66629       ,p_level    => C_LEVEL_PROCEDURE
66630       ,p_module   => l_log_module);
66631 END IF;
66632 --
66633 EXCEPTION
66634   WHEN xla_exceptions_pkg.application_exception THEN
66635       RAISE;
66636   WHEN OTHERS THEN
66637        xla_exceptions_pkg.raise_message
66638            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_134');
66639 END AcctLineType_134;
66640 --
66641 
66642 ---------------------------------------
66643 --
66644 -- PRIVATE FUNCTION
66645 --         AcctLineType_135
66646 --
66647 ---------------------------------------
66648 PROCEDURE AcctLineType_135 (
66649   p_application_id        IN NUMBER
66650  ,p_event_id              IN NUMBER
66651  ,p_calculate_acctd_flag  IN VARCHAR2
66652  ,p_calculate_g_l_flag    IN VARCHAR2
66653  ,p_actual_flag           IN OUT VARCHAR2
66654  ,p_balance_type_code     OUT VARCHAR2
66655  ,p_gain_or_loss_ref      OUT VARCHAR2
66656  
66657 --Unbilled Receivables CCID
66658  , p_source_20            IN NUMBER
66659 --Entered Currency Code
66660  , p_source_26            IN VARCHAR2
66661 --Exchange Rate Date
66662  , p_source_28            IN DATE
66663 --Exchange Rate
66664  , p_source_29            IN NUMBER
66665 --Exchange Rate Type
66666  , p_source_30            IN VARCHAR2
66667 --Entered Amount
66668  , p_source_42            IN NUMBER
66669 --Accounted Amount
66670  , p_source_43            IN NUMBER
66671 --Revenue Distribution Type
66672  , p_source_46            IN VARCHAR2
66673 --Crediting Revenue Flag
66674  , p_source_48            IN VARCHAR2
66675 --Revenue First Distribution ID
66676  , p_source_49            IN NUMBER
66677 --Revenue Second Distribution ID
66678  , p_source_50            IN NUMBER
66679 --Event ID
66680  , p_source_51            IN NUMBER
66681 )
66682 IS
66683 
66684 l_component_type              VARCHAR2(80);
66685 l_component_code              VARCHAR2(30);
66686 l_component_type_code         VARCHAR2(1);
66687 l_component_appl_id           INTEGER;
66688 l_amb_context_code            VARCHAR2(30);
66689 l_entity_code                 VARCHAR2(30);
66690 l_event_class_code            VARCHAR2(30);
66691 l_ae_header_id                NUMBER;
66692 l_event_type_code             VARCHAR2(30);
66693 l_line_definition_code        VARCHAR2(30);
66694 l_line_definition_owner_code  VARCHAR2(1);
66698 l_ccid                        NUMBER;
66695 --
66696 -- adr variables
66697 l_segment                     VARCHAR2(30);
66699 l_adr_transaction_coa_id      NUMBER;
66700 l_adr_accounting_coa_id       NUMBER;
66701 l_adr_flexfield_segment_code  VARCHAR2(30);
66702 l_adr_flex_value_set_id       NUMBER;
66703 l_adr_value_type_code         VARCHAR2(30);
66704 l_adr_value_combination_id    NUMBER;
66705 l_adr_value_segment_code      VARCHAR2(30);
66706 
66707 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
66708 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
66709 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
66710 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
66711 
66712 -- 4262811 Variables ------------------------------------------------------------------------------------------
66713 l_entered_amt_idx             NUMBER;
66714 l_accted_amt_idx              NUMBER;
66715 l_acc_rev_flag                VARCHAR2(1);
66716 l_accrual_line_num            NUMBER;
66717 l_tmp_amt                     NUMBER;
66718 l_acc_rev_natural_side_code   VARCHAR2(1);
66719 
66720 l_num_entries                 NUMBER;
66721 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
66722 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
66723 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
66724 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
66725 l_recog_line_1                NUMBER;
66726 l_recog_line_2                NUMBER;
66727 
66728 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
66729 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
66730 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
66731 
66732 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
66733 
66734 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
66735 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
66736 
66737 ---------------------------------------------------------------------------------------------------------------
66738 
66739 
66740 --
66741 -- bulk performance
66742 --
66743 l_balance_type_code           VARCHAR2(1);
66744 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
66745 l_log_module                  VARCHAR2(240);
66746 
66747 --
66748 -- Upgrade strategy
66749 --
66750 l_actual_upg_option           VARCHAR2(1);
66751 l_enc_upg_option           VARCHAR2(1);
66752 
66753 --
66754 BEGIN
66755 --
66756 IF g_log_enabled THEN
66757       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_135';
66758 END IF;
66759 --
66760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66761 
66762       trace
66763          (p_msg      => 'BEGIN of AcctLineType_135'
66764          ,p_level    => C_LEVEL_PROCEDURE
66765          ,p_module   => l_log_module);
66766 
66767 END IF;
66768 --
66769 l_component_type             := 'AMB_JLT';
66770 l_component_code             := 'PA_UBR';
66771 l_component_type_code        := 'S';
66772 l_component_appl_id          :=  275;
66773 l_amb_context_code           := 'DEFAULT';
66774 l_entity_code                := 'REVENUE';
66775 l_event_class_code           := 'REVENUE';
66776 l_event_type_code            := 'REVENUE_ALL';
66777 l_line_definition_owner_code := 'S';
66778 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
66779 --
66780 l_balance_type_code          := 'A';
66781 l_segment                     := NULL;
66782 l_ccid                        := NULL;
66783 l_adr_transaction_coa_id      := NULL;
66784 l_adr_accounting_coa_id       := NULL;
66785 l_adr_flexfield_segment_code  := NULL;
66786 l_adr_flex_value_set_id       := NULL;
66787 l_adr_value_type_code         := NULL;
66788 l_adr_value_combination_id    := NULL;
66789 l_adr_value_segment_code      := NULL;
66790 
66791 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66792 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
66793 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66794 l_budgetary_control_flag     := 'N';
66795 
66796 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66797 l_bflow_applied_to_amt       := NULL; -- 5132302
66798 l_entered_amt_idx            := NULL;          -- 4262811
66799 l_accted_amt_idx             := NULL;          -- 4262811
66800 l_acc_rev_flag               := NULL;          -- 4262811
66801 l_accrual_line_num           := NULL;          -- 4262811
66802 l_tmp_amt                    := NULL;          -- 4262811
66803 --
66804  
66805 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66806     l_balance_type_code <> 'B' THEN
66807 IF NVL(p_source_46,'
66808 ') =  'Revenue - UBR' AND 
66809 NVL(p_source_48,'
66810 ') =  'N'
66811  THEN 
66812 
66813    --
66814    XLA_AE_LINES_PKG.SetNewLine;
66815 
66816    p_balance_type_code          := l_balance_type_code;
66817    -- set the flag so later we will know whether the gain loss line needs to be created
66818    
66819    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66820      p_actual_flag :='A';
66821    END IF;
66822 
66823    --
66824    -- bulk performance
66825    --
66826    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66827                                       p_header_num   => 0); -- 4262811
66828    --
66829    -- set accounting line options
66830    --
66831    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66832            p_natural_side_code          => 'D'
66833          , p_gain_or_loss_flag          => 'N'
66834          , p_gl_transfer_mode_code      => 'S'
66838          );
66835          , p_acct_entry_type_code       => 'A'
66836          , p_switch_side_flag           => 'Y'
66837          , p_merge_duplicate_code       => 'N'
66839    --
66840    l_acc_rev_natural_side_code := 'C';  -- 4262811
66841    -- 
66842    --
66843    -- set accounting line type info
66844    --
66845    xla_ae_lines_pkg.SetAcctLineType
66846       (p_component_type             => l_component_type
66847       ,p_event_type_code            => l_event_type_code
66848       ,p_line_definition_owner_code => l_line_definition_owner_code
66849       ,p_line_definition_code       => l_line_definition_code
66850       ,p_accounting_line_code       => l_component_code
66851       ,p_accounting_line_type_code  => l_component_type_code
66852       ,p_accounting_line_appl_id    => l_component_appl_id
66853       ,p_amb_context_code           => l_amb_context_code
66854       ,p_entity_code                => l_entity_code
66855       ,p_event_class_code           => l_event_class_code);
66856    --
66857    -- set accounting class
66858    --
66859    xla_ae_lines_pkg.SetAcctClass(
66860            p_accounting_class_code  => 'UNBILL'
66861          , p_ae_header_id           => l_ae_header_id
66862          );
66863 
66864    --
66865    -- set rounding class
66866    --
66867    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66868                       'UNBILL';
66869 
66870    --
66871    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66872    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66873    --
66874    -- bulk performance
66875    --
66876    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66877 
66878    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66879       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66880 
66881    -- 4955764
66882    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66883       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66884 
66885    -- 4458381 Public Sector Enh
66886    
66887    --
66888    -- set accounting attributes for the line type
66889    --
66890    l_entered_amt_idx := 4;
66891    l_accted_amt_idx  := 10;
66892    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66893    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
66894    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
66895    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
66896    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
66897    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
66898    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
66899    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
66900    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
66901    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
66902    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
66903    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
66904    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
66905    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
66906    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
66907    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
66908    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
66909    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
66910    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
66911    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
66912    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
66913 
66914    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66915    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66916 
66917    ---------------------------------------------------------------------------------------------------------------
66918    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66919    ---------------------------------------------------------------------------------------------------------------
66920    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66921 
66922    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66923    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66924 
66925    IF xla_accounting_cache_pkg.GetValueChar
66926          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66927          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66928    AND l_bflow_method_code = 'PRIOR_ENTRY'
66929 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66930    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66931          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66932        )
66933    THEN
66934          xla_ae_lines_pkg.BflowUpgEntry
66935            (p_business_method_code    => l_bflow_method_code
66936            ,p_business_class_code     => l_bflow_class_code
66937            ,p_balance_type            => l_balance_type_code);
66938    ELSE
66939       NULL;
66940 -- No business flow processing for business flow method of NONE.
66941    END IF;
66942 
66943    --
66944    -- call analytical criteria
66945    --
66946    
66947    --
66948    -- call description
66949    --
66950    -- No description or it is inherited.
66951    --
66952    -- call ADRs
66953    -- Bug 4922099
66954    --
66955    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66959    THEN
66956         (NVL(l_actual_upg_option, 'N') = 'O') OR
66957         (NVL(l_enc_upg_option, 'N') = 'O')
66958       )
66960    NULL;
66961    --
66962    --
66963    
66964   l_ccid := AcctDerRule_27(
66965            p_application_id           => p_application_id
66966          , p_ae_header_id             => l_ae_header_id 
66967 , p_source_20 => p_source_20
66968          , x_transaction_coa_id       => l_adr_transaction_coa_id
66969          , x_accounting_coa_id        => l_adr_accounting_coa_id
66970          , x_value_type_code          => l_adr_value_type_code
66971          , p_side                     => 'NA'
66972    );
66973 
66974    xla_ae_lines_pkg.set_ccid(
66975     p_code_combination_id          => l_ccid
66976   , p_value_type_code              => l_adr_value_type_code
66977   , p_transaction_coa_id           => l_adr_transaction_coa_id
66978   , p_accounting_coa_id            => l_adr_accounting_coa_id
66979   , p_adr_code                     => 'UBR_RULE'
66980   , p_adr_type_code                => 'S'
66981   , p_component_type               => l_component_type
66982   , p_component_code               => l_component_code
66983   , p_component_type_code          => l_component_type_code
66984   , p_component_appl_id            => l_component_appl_id
66985   , p_amb_context_code             => l_amb_context_code
66986   , p_side                         => 'NA'
66987   );
66988 
66989 
66990    --
66991    --
66992    END IF;
66993    --
66994    -- Bug 4922099
66995    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66996           (NVL(l_enc_upg_option, 'N') = 'O')
66997         ) AND
66998         (l_bflow_method_code = 'PRIOR_ENTRY')
66999       )
67000    THEN
67001       IF
67002       --
67003       1 = 2
67004       --
67005       THEN
67006       xla_accounting_err_pkg.build_message
67007                                     (p_appli_s_name            => 'XLA'
67008                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67009                                     ,p_token_1                 => 'LINE_NUMBER'
67010                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67011                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67012                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67013                                                                              l_component_type
67014                                                                             ,l_component_code
67015                                                                             ,l_component_type_code
67016                                                                             ,l_component_appl_id
67017                                                                             ,l_amb_context_code
67018                                                                             ,l_entity_code
67019                                                                             ,l_event_class_code
67020                                                                            )
67021                                     ,p_token_3                 => 'OWNER'
67022                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67023                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67024                                                                           ,p_lookup_code    => l_component_type_code
67025                                                                          )
67026                                     ,p_token_4                 => 'PRODUCT_NAME'
67027                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67028                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67029                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67030                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67031                                     ,p_ae_header_id            =>  NULL
67032                                        );
67033 
67034         IF (C_LEVEL_ERROR>= g_log_level) THEN
67035                  trace
67036                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67037                       ,p_level    => C_LEVEL_ERROR
67038                       ,p_module   => l_log_module);
67039         END IF;
67040       END IF;
67041    END IF;
67042    --
67043    --
67044    ------------------------------------------------------------------------------------------------
67045    -- 4219869 Business Flow
67046    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67047    -- Prior Entry.  Currently, the following code is always generated.
67048    ------------------------------------------------------------------------------------------------
67049    XLA_AE_LINES_PKG.ValidateCurrentLine;
67050 
67051    ------------------------------------------------------------------------------------
67052    -- 4219869 Business Flow
67053    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67054    ------------------------------------------------------------------------------------
67055    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67056 
67057    ----------------------------------------------------------------------------------
67058    -- 4219869 Business Flow
67059    -- Update journal entry status -- Need to generate this within IF <condition>
67060    ----------------------------------------------------------------------------------
67061    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67062          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67063          ,p_balance_type_code => l_balance_type_code
67064          );
67065 
67069    BEGIN
67066    -------------------------------------------------------------------------------------------
67067    -- 4262811 - Generate the Accrual Reversal lines
67068    -------------------------------------------------------------------------------------------
67070       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67071                               (g_array_event(p_event_id).array_value_num('header_index'));
67072       IF l_acc_rev_flag IS NULL THEN
67073          l_acc_rev_flag := 'N';
67074       END IF;
67075    EXCEPTION
67076       WHEN OTHERS THEN
67077          l_acc_rev_flag := 'N';
67078    END;
67079    --
67080    IF (l_acc_rev_flag = 'Y') THEN
67081 
67082        -- 4645092  ------------------------------------------------------------------------------
67083        -- To allow MPA report to determine if it should generate report process
67084        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67085        ------------------------------------------------------------------------------------------
67086 
67087        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67088        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67089 
67090        --
67091        -- Update the line information that should be overwritten
67092        --
67093        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67094                                          p_header_num   => 1);
67095        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67096 
67097        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67098 
67099        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67100           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67101        END IF;
67102 
67103       --
67104       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67105       --
67106       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67107           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67108       ELSE
67109           ---------------------------------------------------------------------------------------------------
67110           -- 4262811a Switch Sign
67111           ---------------------------------------------------------------------------------------------------
67112           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67113           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67114                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67115           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67116                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67117           -- 5132302
67118           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67119                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67120 
67121       END IF;
67122 
67123       -- 4955764
67124       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67125       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67126 
67127 
67128       XLA_AE_LINES_PKG.ValidateCurrentLine;
67129       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67130 
67131       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67132                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67133                ,p_balance_type_code => l_balance_type_code);
67134 
67135    END IF;
67136 
67137    -----------------------------------------------------------------------------------------
67138    -- 4262811 Multiperiod Accounting
67139    -----------------------------------------------------------------------------------------
67140      -- No MPA option is assigned.
67141 
67142 
67143 END IF;
67144 END IF;
67145 --
67146 
67147 --
67148 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67149    trace
67150       (p_msg      => 'END of AcctLineType_135'
67151       ,p_level    => C_LEVEL_PROCEDURE
67152       ,p_module   => l_log_module);
67153 END IF;
67154 --
67155 EXCEPTION
67156   WHEN xla_exceptions_pkg.application_exception THEN
67157       RAISE;
67158   WHEN OTHERS THEN
67159        xla_exceptions_pkg.raise_message
67160            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_135');
67161 END AcctLineType_135;
67162 --
67163 
67164 ---------------------------------------
67165 --
67166 -- PRIVATE FUNCTION
67167 --         AcctLineType_136
67168 --
67169 ---------------------------------------
67170 PROCEDURE AcctLineType_136 (
67171   p_application_id        IN NUMBER
67172  ,p_event_id              IN NUMBER
67173  ,p_calculate_acctd_flag  IN VARCHAR2
67174  ,p_calculate_g_l_flag    IN VARCHAR2
67175  ,p_actual_flag           IN OUT VARCHAR2
67176  ,p_balance_type_code     OUT VARCHAR2
67177  ,p_gain_or_loss_ref      OUT VARCHAR2
67178  
67179 --Unbilled Receivables CCID
67180  , p_source_20            IN NUMBER
67181 --Actual Upgrade Credit Accounting Class
67182  , p_source_24            IN VARCHAR2
67183 --Entered Currency Code
67184  , p_source_26            IN VARCHAR2
67185 --Exchange Rate Date
67186  , p_source_28            IN DATE
67187 --Exchange Rate
67188  , p_source_29            IN NUMBER
67189 --Exchange Rate Type
67190  , p_source_30            IN VARCHAR2
67191 --Actual Upgrade Debit Accounting Class
67192  , p_source_31            IN VARCHAR2
67196  , p_source_42            IN NUMBER
67193 --Use Actuals Upgrade Attributes Flag
67194  , p_source_32            IN VARCHAR2
67195 --Entered Amount
67197 --Accounted Amount
67198  , p_source_43            IN NUMBER
67199 --Revenue Distribution Type
67200  , p_source_46            IN VARCHAR2
67201 --Crediting Revenue Flag
67202  , p_source_48            IN VARCHAR2
67203 --Revenue First Distribution ID
67204  , p_source_49            IN NUMBER
67205 --Revenue Second Distribution ID
67206  , p_source_50            IN NUMBER
67207 --Event ID
67208  , p_source_51            IN NUMBER
67209 --Actual Upgrade Credit CCID
67210  , p_source_64            IN NUMBER
67211 --Actual Upgrade Debit CCID
67212  , p_source_65            IN NUMBER
67213 --Application ID
67214  , p_source_66            IN NUMBER
67215 --Revenue Entity Code
67216  , p_source_67            IN VARCHAR2
67217 --Crediting Revenue First Distribution ID
67218  , p_source_68            IN NUMBER
67219 --Project ID
67220  , p_source_69            IN NUMBER
67221 --Crediting Revenue Second Distribution ID
67222  , p_source_70            IN NUMBER
67223 --Draft Revenue Number Credited
67224  , p_source_71            IN NUMBER
67225 )
67226 IS
67227 
67228 l_component_type              VARCHAR2(80);
67229 l_component_code              VARCHAR2(30);
67230 l_component_type_code         VARCHAR2(1);
67231 l_component_appl_id           INTEGER;
67232 l_amb_context_code            VARCHAR2(30);
67233 l_entity_code                 VARCHAR2(30);
67234 l_event_class_code            VARCHAR2(30);
67235 l_ae_header_id                NUMBER;
67236 l_event_type_code             VARCHAR2(30);
67237 l_line_definition_code        VARCHAR2(30);
67238 l_line_definition_owner_code  VARCHAR2(1);
67239 --
67240 -- adr variables
67241 l_segment                     VARCHAR2(30);
67242 l_ccid                        NUMBER;
67243 l_adr_transaction_coa_id      NUMBER;
67244 l_adr_accounting_coa_id       NUMBER;
67245 l_adr_flexfield_segment_code  VARCHAR2(30);
67246 l_adr_flex_value_set_id       NUMBER;
67247 l_adr_value_type_code         VARCHAR2(30);
67248 l_adr_value_combination_id    NUMBER;
67249 l_adr_value_segment_code      VARCHAR2(30);
67250 
67251 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67252 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67253 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67254 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67255 
67256 -- 4262811 Variables ------------------------------------------------------------------------------------------
67257 l_entered_amt_idx             NUMBER;
67258 l_accted_amt_idx              NUMBER;
67259 l_acc_rev_flag                VARCHAR2(1);
67260 l_accrual_line_num            NUMBER;
67261 l_tmp_amt                     NUMBER;
67262 l_acc_rev_natural_side_code   VARCHAR2(1);
67263 
67264 l_num_entries                 NUMBER;
67265 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67266 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67267 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67268 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67269 l_recog_line_1                NUMBER;
67270 l_recog_line_2                NUMBER;
67271 
67272 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67273 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67274 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67275 
67276 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67277 
67278 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67279 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67280 
67281 ---------------------------------------------------------------------------------------------------------------
67282 
67283 
67284 --
67285 -- bulk performance
67286 --
67287 l_balance_type_code           VARCHAR2(1);
67288 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67289 l_log_module                  VARCHAR2(240);
67290 
67291 --
67292 -- Upgrade strategy
67293 --
67294 l_actual_upg_option           VARCHAR2(1);
67295 l_enc_upg_option           VARCHAR2(1);
67296 
67297 --
67298 BEGIN
67299 --
67300 IF g_log_enabled THEN
67301       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
67302 END IF;
67303 --
67304 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67305 
67306       trace
67307          (p_msg      => 'BEGIN of AcctLineType_136'
67308          ,p_level    => C_LEVEL_PROCEDURE
67309          ,p_module   => l_log_module);
67310 
67311 END IF;
67312 --
67313 l_component_type             := 'AMB_JLT';
67314 l_component_code             := 'PA_UBR_ADJ';
67315 l_component_type_code        := 'S';
67316 l_component_appl_id          :=  275;
67317 l_amb_context_code           := 'DEFAULT';
67318 l_entity_code                := 'REVENUE';
67319 l_event_class_code           := 'REVENUE_ADJ';
67320 l_event_type_code            := 'REVENUE_ADJ_ALL';
67321 l_line_definition_owner_code := 'S';
67322 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
67323 --
67324 l_balance_type_code          := 'A';
67325 l_segment                     := NULL;
67326 l_ccid                        := NULL;
67327 l_adr_transaction_coa_id      := NULL;
67328 l_adr_accounting_coa_id       := NULL;
67329 l_adr_flexfield_segment_code  := NULL;
67330 l_adr_flex_value_set_id       := NULL;
67331 l_adr_value_type_code         := NULL;
67332 l_adr_value_combination_id    := NULL;
67333 l_adr_value_segment_code      := NULL;
67334 
67338 l_budgetary_control_flag     := 'N';
67335 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67336 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
67337 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67339 
67340 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67341 l_bflow_applied_to_amt       := NULL; -- 5132302
67342 l_entered_amt_idx            := NULL;          -- 4262811
67343 l_accted_amt_idx             := NULL;          -- 4262811
67344 l_acc_rev_flag               := NULL;          -- 4262811
67345 l_accrual_line_num           := NULL;          -- 4262811
67346 l_tmp_amt                    := NULL;          -- 4262811
67347 --
67348  
67349 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67350     l_balance_type_code <> 'B' THEN
67351 IF NVL(p_source_46,'
67352 ') =  'Revenue - UBR' AND 
67353 NVL(p_source_48,'
67354 ') =  'Y'
67355  THEN 
67356 
67357    --
67358    XLA_AE_LINES_PKG.SetNewLine;
67359 
67360    p_balance_type_code          := l_balance_type_code;
67361    -- set the flag so later we will know whether the gain loss line needs to be created
67362    
67363    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67364      p_actual_flag :='A';
67365    END IF;
67366 
67367    --
67368    -- bulk performance
67369    --
67370    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67371                                       p_header_num   => 0); -- 4262811
67372    --
67373    -- set accounting line options
67374    --
67375    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67376            p_natural_side_code          => 'C'
67377          , p_gain_or_loss_flag          => 'N'
67378          , p_gl_transfer_mode_code      => 'S'
67379          , p_acct_entry_type_code       => 'A'
67380          , p_switch_side_flag           => 'Y'
67381          , p_merge_duplicate_code       => 'N'
67382          );
67383    --
67384    l_acc_rev_natural_side_code := 'D';  -- 4262811
67385    -- 
67386    --
67387    -- set accounting line type info
67388    --
67389    xla_ae_lines_pkg.SetAcctLineType
67390       (p_component_type             => l_component_type
67391       ,p_event_type_code            => l_event_type_code
67392       ,p_line_definition_owner_code => l_line_definition_owner_code
67393       ,p_line_definition_code       => l_line_definition_code
67394       ,p_accounting_line_code       => l_component_code
67395       ,p_accounting_line_type_code  => l_component_type_code
67396       ,p_accounting_line_appl_id    => l_component_appl_id
67397       ,p_amb_context_code           => l_amb_context_code
67398       ,p_entity_code                => l_entity_code
67399       ,p_event_class_code           => l_event_class_code);
67400    --
67401    -- set accounting class
67402    --
67403    xla_ae_lines_pkg.SetAcctClass(
67404            p_accounting_class_code  => 'UNBILL'
67405          , p_ae_header_id           => l_ae_header_id
67406          );
67407 
67408    --
67409    -- set rounding class
67410    --
67411    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
67412                       'UNBILL';
67413 
67414    --
67415    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
67416    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
67417    --
67418    -- bulk performance
67419    --
67420    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
67421 
67422    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
67423       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
67424 
67425    -- 4955764
67426    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67427       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
67428 
67429    -- 4458381 Public Sector Enh
67430    
67431    --
67432    -- set accounting attributes for the line type
67433    --
67434    l_entered_amt_idx := 28;
67435    l_accted_amt_idx  := 34;
67436    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
67437    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
67438    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
67439    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
67440    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
67441    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
67442    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
67443    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
67444    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
67445    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
67446    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
67447    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
67448    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
67449    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
67450    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
67451    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
67452    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
67453    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
67454    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
67455    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
67456    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
67457    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
67458    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
67459    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
67463    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
67460    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
67461    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
67462    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
67464    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
67465    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
67466    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
67467    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
67468    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
67469    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
67470    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
67471    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
67472    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
67473    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
67474    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
67475    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
67476    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
67477    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
67478    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
67479    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
67480    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
67481    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
67482    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
67483    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
67484    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
67485    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
67486    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
67487    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
67488    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
67489    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
67490    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
67491    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
67492    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
67493    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
67494    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
67495    l_rec_acct_attrs.array_acct_attr_code(30) := 'EXCHANGE_DATE';
67496    l_rec_acct_attrs.array_date_value(30)  := p_source_28;
67497    l_rec_acct_attrs.array_acct_attr_code(31) := 'EXCHANGE_RATE';
67498    l_rec_acct_attrs.array_num_value(31)  := p_source_29;
67499    l_rec_acct_attrs.array_acct_attr_code(32) := 'EXCHANGE_RATE_TYPE';
67500    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
67501    l_rec_acct_attrs.array_acct_attr_code(33) := 'GAIN_LOSS_REFERENCE';
67502    l_rec_acct_attrs.array_num_value(33)  :=  to_char(p_source_51);
67503    l_rec_acct_attrs.array_acct_attr_code(34) := 'LEDGER_AMOUNT';
67504    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
67505 
67506    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
67507    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
67508 
67509    ---------------------------------------------------------------------------------------------------------------
67510    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
67511    ---------------------------------------------------------------------------------------------------------------
67512    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
67513 
67514    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67515    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
67516 
67517    IF xla_accounting_cache_pkg.GetValueChar
67518          (p_source_code         => 'LEDGER_CATEGORY_CODE'
67519          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
67520    AND l_bflow_method_code = 'PRIOR_ENTRY'
67521 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
67522    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
67523          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
67524        )
67525    THEN
67526          xla_ae_lines_pkg.BflowUpgEntry
67527            (p_business_method_code    => l_bflow_method_code
67528            ,p_business_class_code     => l_bflow_class_code
67529            ,p_balance_type            => l_balance_type_code);
67530    ELSE
67531       NULL;
67532 -- No business flow processing for business flow method of NONE.
67533    END IF;
67534 
67535    --
67536    -- call analytical criteria
67537    --
67538    
67539    --
67540    -- call description
67541    --
67542    -- No description or it is inherited.
67543    --
67544    -- call ADRs
67545    -- Bug 4922099
67546    --
67547    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
67548         (NVL(l_actual_upg_option, 'N') = 'O') OR
67549         (NVL(l_enc_upg_option, 'N') = 'O')
67550       )
67551    THEN
67552    NULL;
67553    --
67554    --
67555    
67556   l_ccid := AcctDerRule_27(
67557            p_application_id           => p_application_id
67558          , p_ae_header_id             => l_ae_header_id 
67559 , p_source_20 => p_source_20
67560          , x_transaction_coa_id       => l_adr_transaction_coa_id
67561          , x_accounting_coa_id        => l_adr_accounting_coa_id
67562          , x_value_type_code          => l_adr_value_type_code
67563          , p_side                     => 'NA'
67564    );
67565 
67566    xla_ae_lines_pkg.set_ccid(
67567     p_code_combination_id          => l_ccid
67568   , p_value_type_code              => l_adr_value_type_code
67572   , p_adr_type_code                => 'S'
67569   , p_transaction_coa_id           => l_adr_transaction_coa_id
67570   , p_accounting_coa_id            => l_adr_accounting_coa_id
67571   , p_adr_code                     => 'UBR_RULE'
67573   , p_component_type               => l_component_type
67574   , p_component_code               => l_component_code
67575   , p_component_type_code          => l_component_type_code
67576   , p_component_appl_id            => l_component_appl_id
67577   , p_amb_context_code             => l_amb_context_code
67578   , p_side                         => 'NA'
67579   );
67580 
67581 
67582    --
67583    --
67584    END IF;
67585    --
67586    -- Bug 4922099
67587    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
67588           (NVL(l_enc_upg_option, 'N') = 'O')
67589         ) AND
67590         (l_bflow_method_code = 'PRIOR_ENTRY')
67591       )
67592    THEN
67593       IF
67594       --
67595       1 = 2
67596       --
67597       THEN
67598       xla_accounting_err_pkg.build_message
67599                                     (p_appli_s_name            => 'XLA'
67600                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67601                                     ,p_token_1                 => 'LINE_NUMBER'
67602                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
67603                                     ,p_token_2                 => 'LINE_TYPE_NAME'
67604                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
67605                                                                              l_component_type
67606                                                                             ,l_component_code
67607                                                                             ,l_component_type_code
67608                                                                             ,l_component_appl_id
67609                                                                             ,l_amb_context_code
67610                                                                             ,l_entity_code
67611                                                                             ,l_event_class_code
67612                                                                            )
67613                                     ,p_token_3                 => 'OWNER'
67614                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
67615                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
67616                                                                           ,p_lookup_code    => l_component_type_code
67617                                                                          )
67618                                     ,p_token_4                 => 'PRODUCT_NAME'
67619                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
67620                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
67621                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
67622                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
67623                                     ,p_ae_header_id            =>  NULL
67624                                        );
67625 
67626         IF (C_LEVEL_ERROR>= g_log_level) THEN
67627                  trace
67628                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
67629                       ,p_level    => C_LEVEL_ERROR
67630                       ,p_module   => l_log_module);
67631         END IF;
67632       END IF;
67633    END IF;
67634    --
67635    --
67636    ------------------------------------------------------------------------------------------------
67637    -- 4219869 Business Flow
67638    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
67639    -- Prior Entry.  Currently, the following code is always generated.
67640    ------------------------------------------------------------------------------------------------
67641    XLA_AE_LINES_PKG.ValidateCurrentLine;
67642 
67643    ------------------------------------------------------------------------------------
67644    -- 4219869 Business Flow
67645    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
67646    ------------------------------------------------------------------------------------
67647    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67648 
67649    ----------------------------------------------------------------------------------
67650    -- 4219869 Business Flow
67651    -- Update journal entry status -- Need to generate this within IF <condition>
67652    ----------------------------------------------------------------------------------
67653    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67654          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
67655          ,p_balance_type_code => l_balance_type_code
67656          );
67657 
67658    -------------------------------------------------------------------------------------------
67659    -- 4262811 - Generate the Accrual Reversal lines
67660    -------------------------------------------------------------------------------------------
67661    BEGIN
67662       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
67663                               (g_array_event(p_event_id).array_value_num('header_index'));
67664       IF l_acc_rev_flag IS NULL THEN
67665          l_acc_rev_flag := 'N';
67666       END IF;
67667    EXCEPTION
67668       WHEN OTHERS THEN
67669          l_acc_rev_flag := 'N';
67670    END;
67671    --
67672    IF (l_acc_rev_flag = 'Y') THEN
67673 
67674        -- 4645092  ------------------------------------------------------------------------------
67678 
67675        -- To allow MPA report to determine if it should generate report process
67676        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
67677        ------------------------------------------------------------------------------------------
67679        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
67680        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
67681 
67682        --
67683        -- Update the line information that should be overwritten
67684        --
67685        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
67686                                          p_header_num   => 1);
67687        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
67688 
67689        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
67690 
67691        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
67692           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
67693        END IF;
67694 
67695       --
67696       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
67697       --
67698       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
67699           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
67700       ELSE
67701           ---------------------------------------------------------------------------------------------------
67702           -- 4262811a Switch Sign
67703           ---------------------------------------------------------------------------------------------------
67704           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
67705           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67706                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67707           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
67708                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67709           -- 5132302
67710           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
67711                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
67712 
67713       END IF;
67714 
67715       -- 4955764
67716       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
67717       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
67718 
67719 
67720       XLA_AE_LINES_PKG.ValidateCurrentLine;
67721       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
67722 
67723       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
67724                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
67725                ,p_balance_type_code => l_balance_type_code);
67726 
67727    END IF;
67728 
67729    -----------------------------------------------------------------------------------------
67730    -- 4262811 Multiperiod Accounting
67731    -----------------------------------------------------------------------------------------
67732      -- No MPA option is assigned.
67733 
67734 
67735 END IF;
67736 END IF;
67737 --
67738 
67739 --
67740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67741    trace
67742       (p_msg      => 'END of AcctLineType_136'
67743       ,p_level    => C_LEVEL_PROCEDURE
67744       ,p_module   => l_log_module);
67745 END IF;
67746 --
67747 EXCEPTION
67748   WHEN xla_exceptions_pkg.application_exception THEN
67749       RAISE;
67750   WHEN OTHERS THEN
67751        xla_exceptions_pkg.raise_message
67752            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_136');
67753 END AcctLineType_136;
67754 --
67755 
67756 ---------------------------------------
67757 --
67758 -- PRIVATE FUNCTION
67759 --         AcctLineType_137
67760 --
67761 ---------------------------------------
67762 PROCEDURE AcctLineType_137 (
67763   p_application_id        IN NUMBER
67764  ,p_event_id              IN NUMBER
67765  ,p_calculate_acctd_flag  IN VARCHAR2
67766  ,p_calculate_g_l_flag    IN VARCHAR2
67767  ,p_actual_flag           IN OUT VARCHAR2
67768  ,p_balance_type_code     OUT VARCHAR2
67769  ,p_gain_or_loss_ref      OUT VARCHAR2
67770  
67771 --Unbilled Receivables CCID
67772  , p_source_20            IN NUMBER
67773 --Actual Upgrade Credit Accounting Class
67774  , p_source_24            IN VARCHAR2
67775 --Entered Currency Code
67776  , p_source_26            IN VARCHAR2
67777 --Exchange Rate Date
67778  , p_source_28            IN DATE
67779 --Exchange Rate
67780  , p_source_29            IN NUMBER
67781 --Exchange Rate Type
67782  , p_source_30            IN VARCHAR2
67783 --Actual Upgrade Debit Accounting Class
67784  , p_source_31            IN VARCHAR2
67785 --Use Actuals Upgrade Attributes Flag
67786  , p_source_32            IN VARCHAR2
67787 --Entered Amount
67788  , p_source_42            IN NUMBER
67789 --Accounted Amount
67790  , p_source_43            IN NUMBER
67791 --Revenue Distribution Type
67792  , p_source_46            IN VARCHAR2
67793 --Crediting Revenue Flag
67794  , p_source_48            IN VARCHAR2
67795 --Revenue First Distribution ID
67796  , p_source_49            IN NUMBER
67797 --Revenue Second Distribution ID
67798  , p_source_50            IN NUMBER
67799 --Event ID
67800  , p_source_51            IN NUMBER
67801 --Actual Upgrade Credit CCID
67802  , p_source_64            IN NUMBER
67803 --Actual Upgrade Debit CCID
67804  , p_source_65            IN NUMBER
67805 --Application ID
67806  , p_source_66            IN NUMBER
67810  , p_source_68            IN NUMBER
67807 --Revenue Entity Code
67808  , p_source_67            IN VARCHAR2
67809 --Crediting Revenue First Distribution ID
67811 --Project ID
67812  , p_source_69            IN NUMBER
67813 --Crediting Revenue Second Distribution ID
67814  , p_source_70            IN NUMBER
67815 --Draft Revenue Number Credited
67816  , p_source_71            IN NUMBER
67817 )
67818 IS
67819 
67820 l_component_type              VARCHAR2(80);
67821 l_component_code              VARCHAR2(30);
67822 l_component_type_code         VARCHAR2(1);
67823 l_component_appl_id           INTEGER;
67824 l_amb_context_code            VARCHAR2(30);
67825 l_entity_code                 VARCHAR2(30);
67826 l_event_class_code            VARCHAR2(30);
67827 l_ae_header_id                NUMBER;
67828 l_event_type_code             VARCHAR2(30);
67829 l_line_definition_code        VARCHAR2(30);
67830 l_line_definition_owner_code  VARCHAR2(1);
67831 --
67832 -- adr variables
67833 l_segment                     VARCHAR2(30);
67834 l_ccid                        NUMBER;
67835 l_adr_transaction_coa_id      NUMBER;
67836 l_adr_accounting_coa_id       NUMBER;
67837 l_adr_flexfield_segment_code  VARCHAR2(30);
67838 l_adr_flex_value_set_id       NUMBER;
67839 l_adr_value_type_code         VARCHAR2(30);
67840 l_adr_value_combination_id    NUMBER;
67841 l_adr_value_segment_code      VARCHAR2(30);
67842 
67843 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
67844 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
67845 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
67846 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
67847 
67848 -- 4262811 Variables ------------------------------------------------------------------------------------------
67849 l_entered_amt_idx             NUMBER;
67850 l_accted_amt_idx              NUMBER;
67851 l_acc_rev_flag                VARCHAR2(1);
67852 l_accrual_line_num            NUMBER;
67853 l_tmp_amt                     NUMBER;
67854 l_acc_rev_natural_side_code   VARCHAR2(1);
67855 
67856 l_num_entries                 NUMBER;
67857 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
67858 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
67859 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
67860 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
67861 l_recog_line_1                NUMBER;
67862 l_recog_line_2                NUMBER;
67863 
67864 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
67865 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
67866 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
67867 
67868 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
67869 
67870 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
67871 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
67872 
67873 ---------------------------------------------------------------------------------------------------------------
67874 
67875 
67876 --
67877 -- bulk performance
67878 --
67879 l_balance_type_code           VARCHAR2(1);
67880 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
67881 l_log_module                  VARCHAR2(240);
67882 
67883 --
67884 -- Upgrade strategy
67885 --
67886 l_actual_upg_option           VARCHAR2(1);
67887 l_enc_upg_option           VARCHAR2(1);
67888 
67889 --
67890 BEGIN
67891 --
67892 IF g_log_enabled THEN
67893       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
67894 END IF;
67895 --
67896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67897 
67898       trace
67899          (p_msg      => 'BEGIN of AcctLineType_137'
67900          ,p_level    => C_LEVEL_PROCEDURE
67901          ,p_module   => l_log_module);
67902 
67903 END IF;
67904 --
67905 l_component_type             := 'AMB_JLT';
67906 l_component_code             := 'PA_UBR_ADJ_FED';
67907 l_component_type_code        := 'S';
67908 l_component_appl_id          :=  275;
67909 l_amb_context_code           := 'DEFAULT';
67910 l_entity_code                := 'REVENUE';
67911 l_event_class_code           := 'REVENUE_ADJ';
67912 l_event_type_code            := 'REVENUE_ADJ_ALL';
67913 l_line_definition_owner_code := 'S';
67914 l_line_definition_code       := 'FV_PROJECTS_JLD';
67915 --
67916 l_balance_type_code          := 'A';
67917 l_segment                     := NULL;
67918 l_ccid                        := NULL;
67919 l_adr_transaction_coa_id      := NULL;
67920 l_adr_accounting_coa_id       := NULL;
67921 l_adr_flexfield_segment_code  := NULL;
67922 l_adr_flex_value_set_id       := NULL;
67923 l_adr_value_type_code         := NULL;
67924 l_adr_value_combination_id    := NULL;
67925 l_adr_value_segment_code      := NULL;
67926 
67927 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
67928 l_bflow_class_code           := '';    -- 4219869 Business Flow
67929 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
67930 l_budgetary_control_flag     := 'N';
67931 
67932 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
67933 l_bflow_applied_to_amt       := NULL; -- 5132302
67934 l_entered_amt_idx            := NULL;          -- 4262811
67935 l_accted_amt_idx             := NULL;          -- 4262811
67936 l_acc_rev_flag               := NULL;          -- 4262811
67937 l_accrual_line_num           := NULL;          -- 4262811
67938 l_tmp_amt                    := NULL;          -- 4262811
67939 --
67940  
67941 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
67942     l_balance_type_code <> 'B' THEN
67943 IF NVL(p_source_46,'
67947  THEN 
67944 ') =  'Revenue - UBR' AND 
67945 NVL(p_source_48,'
67946 ') =  'Y'
67948 
67949    --
67950    XLA_AE_LINES_PKG.SetNewLine;
67951 
67952    p_balance_type_code          := l_balance_type_code;
67953    -- set the flag so later we will know whether the gain loss line needs to be created
67954    
67955    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
67956      p_actual_flag :='A';
67957    END IF;
67958 
67959    --
67960    -- bulk performance
67961    --
67962    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
67963                                       p_header_num   => 0); -- 4262811
67964    --
67965    -- set accounting line options
67966    --
67967    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
67968            p_natural_side_code          => 'C'
67969          , p_gain_or_loss_flag          => 'N'
67970          , p_gl_transfer_mode_code      => 'S'
67971          , p_acct_entry_type_code       => 'A'
67972          , p_switch_side_flag           => 'Y'
67973          , p_merge_duplicate_code       => 'N'
67974          );
67975    --
67976    l_acc_rev_natural_side_code := 'D';  -- 4262811
67977    -- 
67978    --
67979    -- set accounting line type info
67980    --
67981    xla_ae_lines_pkg.SetAcctLineType
67982       (p_component_type             => l_component_type
67983       ,p_event_type_code            => l_event_type_code
67984       ,p_line_definition_owner_code => l_line_definition_owner_code
67985       ,p_line_definition_code       => l_line_definition_code
67986       ,p_accounting_line_code       => l_component_code
67987       ,p_accounting_line_type_code  => l_component_type_code
67988       ,p_accounting_line_appl_id    => l_component_appl_id
67989       ,p_amb_context_code           => l_amb_context_code
67990       ,p_entity_code                => l_entity_code
67991       ,p_event_class_code           => l_event_class_code);
67992    --
67993    -- set accounting class
67994    --
67995    xla_ae_lines_pkg.SetAcctClass(
67996            p_accounting_class_code  => 'FEDERAL_UNBILLED_RECEIVABLE_AD'
67997          , p_ae_header_id           => l_ae_header_id
67998          );
67999 
68000    --
68001    -- set rounding class
68002    --
68003    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68004                       'FEDERAL_UNBILLED_RECEIVABLE_AD';
68005 
68006    --
68007    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68008    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68009    --
68010    -- bulk performance
68011    --
68012    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68013 
68014    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68015       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68016 
68017    -- 4955764
68018    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68019       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68020 
68021    -- 4458381 Public Sector Enh
68022    
68023    --
68024    -- set accounting attributes for the line type
68025    --
68026    l_entered_amt_idx := 28;
68027    l_accted_amt_idx  := 31;
68028    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68029    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
68030    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
68031    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
68032    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
68033    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
68034    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
68035    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
68036    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
68037    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
68038    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
68039    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
68040    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
68041    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
68042    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
68043    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
68044    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
68045    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
68046    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
68047    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
68048    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
68049    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
68050    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
68051    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
68052    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
68053    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
68054    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
68055    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
68056    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
68057    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
68058    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
68059    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
68060    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
68061    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
68062    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
68063    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
68067    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
68064    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
68065    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
68066    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
68068    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
68069    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
68070    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
68071    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
68072    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
68073    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
68074    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
68075    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
68076    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
68077    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
68078    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
68079    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
68080    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
68081    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
68082    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
68083    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
68084    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
68085    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
68086    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
68087    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
68088    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
68089    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
68090    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
68091 
68092    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68093    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68094 
68095    ---------------------------------------------------------------------------------------------------------------
68096    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68097    ---------------------------------------------------------------------------------------------------------------
68098    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68099 
68100    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68101    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68102 
68103    IF xla_accounting_cache_pkg.GetValueChar
68104          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68105          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68106    AND l_bflow_method_code = 'PRIOR_ENTRY'
68107 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68108    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68109          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68110        )
68111    THEN
68112          xla_ae_lines_pkg.BflowUpgEntry
68113            (p_business_method_code    => l_bflow_method_code
68114            ,p_business_class_code     => l_bflow_class_code
68115            ,p_balance_type            => l_balance_type_code);
68116    ELSE
68117       NULL;
68118 -- No business flow processing for business flow method of NONE.
68119    END IF;
68120 
68121    --
68122    -- call analytical criteria
68123    --
68124    
68125    --
68126    -- call description
68127    --
68128    -- No description or it is inherited.
68129    --
68130    -- call ADRs
68131    -- Bug 4922099
68132    --
68133    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68134         (NVL(l_actual_upg_option, 'N') = 'O') OR
68135         (NVL(l_enc_upg_option, 'N') = 'O')
68136       )
68137    THEN
68138    NULL;
68139    --
68140    --
68141    
68142   l_ccid := AcctDerRule_27(
68143            p_application_id           => p_application_id
68144          , p_ae_header_id             => l_ae_header_id 
68145 , p_source_20 => p_source_20
68146          , x_transaction_coa_id       => l_adr_transaction_coa_id
68147          , x_accounting_coa_id        => l_adr_accounting_coa_id
68148          , x_value_type_code          => l_adr_value_type_code
68149          , p_side                     => 'NA'
68150    );
68151 
68152    xla_ae_lines_pkg.set_ccid(
68153     p_code_combination_id          => l_ccid
68154   , p_value_type_code              => l_adr_value_type_code
68155   , p_transaction_coa_id           => l_adr_transaction_coa_id
68156   , p_accounting_coa_id            => l_adr_accounting_coa_id
68157   , p_adr_code                     => 'UBR_RULE'
68158   , p_adr_type_code                => 'S'
68159   , p_component_type               => l_component_type
68160   , p_component_code               => l_component_code
68161   , p_component_type_code          => l_component_type_code
68162   , p_component_appl_id            => l_component_appl_id
68163   , p_amb_context_code             => l_amb_context_code
68164   , p_side                         => 'NA'
68165   );
68166 
68167 
68168    l_segment := AcctDerRule_3(
68169            p_application_id           => p_application_id
68170          , p_ae_header_id             => l_ae_header_id 
68171          , x_transaction_coa_id       => l_adr_transaction_coa_id
68172          , x_accounting_coa_id        => l_adr_accounting_coa_id
68173          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
68174          , x_flex_value_set_id        => l_adr_flex_value_set_id
68175          , x_value_type_code          => l_adr_value_type_code
68176          , x_value_combination_id     => l_adr_value_combination_id
68180    );
68177          , x_value_segment_code       => l_adr_value_segment_code
68178          , p_side                     => 'NA'
68179          , p_override_seg_flag        => 'Y'
68181 
68182    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
68183 
68184       xla_ae_lines_pkg.set_segment(
68185           p_to_segment_code         => 'GL_ACCOUNT'
68186         , p_segment_value           => l_segment
68187         , p_from_segment_code       => l_adr_value_segment_code
68188         , p_from_combination_id     => l_adr_value_combination_id
68189         , p_value_type_code         => l_adr_value_type_code
68190         , p_transaction_coa_id      => l_adr_transaction_coa_id
68191         , p_accounting_coa_id       => l_adr_accounting_coa_id
68192         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
68193         , p_flex_value_set_id       => l_adr_flex_value_set_id
68194         , p_adr_code                => 'FV_425X01_PROJECTS'
68195         , p_adr_type_code           => 'S'
68196         , p_component_type          => l_component_type
68197         , p_component_code          => l_component_code
68198         , p_component_type_code     => l_component_type_code
68199         , p_component_appl_id       => l_component_appl_id
68200         , p_amb_context_code        => l_amb_context_code
68201         , p_entity_code             => 'REVENUE'
68202         , p_event_class_code        => 'REVENUE_ADJ'
68203         , p_side                    => 'NA'
68204         );
68205 
68206   END IF;
68207 
68208    --
68209    --
68210    END IF;
68211    --
68212    -- Bug 4922099
68213    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68214           (NVL(l_enc_upg_option, 'N') = 'O')
68215         ) AND
68216         (l_bflow_method_code = 'PRIOR_ENTRY')
68217       )
68218    THEN
68219       IF
68220       --
68221       1 = 2
68222       --
68223       THEN
68224       xla_accounting_err_pkg.build_message
68225                                     (p_appli_s_name            => 'XLA'
68226                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68227                                     ,p_token_1                 => 'LINE_NUMBER'
68228                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68229                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68230                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68231                                                                              l_component_type
68232                                                                             ,l_component_code
68233                                                                             ,l_component_type_code
68234                                                                             ,l_component_appl_id
68235                                                                             ,l_amb_context_code
68236                                                                             ,l_entity_code
68237                                                                             ,l_event_class_code
68238                                                                            )
68239                                     ,p_token_3                 => 'OWNER'
68240                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68241                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68242                                                                           ,p_lookup_code    => l_component_type_code
68243                                                                          )
68244                                     ,p_token_4                 => 'PRODUCT_NAME'
68245                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68246                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68247                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68248                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68249                                     ,p_ae_header_id            =>  NULL
68250                                        );
68251 
68252         IF (C_LEVEL_ERROR>= g_log_level) THEN
68253                  trace
68254                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68255                       ,p_level    => C_LEVEL_ERROR
68256                       ,p_module   => l_log_module);
68257         END IF;
68258       END IF;
68259    END IF;
68260    --
68261    --
68262    ------------------------------------------------------------------------------------------------
68263    -- 4219869 Business Flow
68264    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68265    -- Prior Entry.  Currently, the following code is always generated.
68266    ------------------------------------------------------------------------------------------------
68267    XLA_AE_LINES_PKG.ValidateCurrentLine;
68268 
68269    ------------------------------------------------------------------------------------
68270    -- 4219869 Business Flow
68271    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68272    ------------------------------------------------------------------------------------
68273    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68274 
68275    ----------------------------------------------------------------------------------
68276    -- 4219869 Business Flow
68277    -- Update journal entry status -- Need to generate this within IF <condition>
68278    ----------------------------------------------------------------------------------
68279    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68280          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68284    -------------------------------------------------------------------------------------------
68281          ,p_balance_type_code => l_balance_type_code
68282          );
68283 
68285    -- 4262811 - Generate the Accrual Reversal lines
68286    -------------------------------------------------------------------------------------------
68287    BEGIN
68288       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68289                               (g_array_event(p_event_id).array_value_num('header_index'));
68290       IF l_acc_rev_flag IS NULL THEN
68291          l_acc_rev_flag := 'N';
68292       END IF;
68293    EXCEPTION
68294       WHEN OTHERS THEN
68295          l_acc_rev_flag := 'N';
68296    END;
68297    --
68298    IF (l_acc_rev_flag = 'Y') THEN
68299 
68300        -- 4645092  ------------------------------------------------------------------------------
68301        -- To allow MPA report to determine if it should generate report process
68302        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68303        ------------------------------------------------------------------------------------------
68304 
68305        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68306        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68307 
68308        --
68309        -- Update the line information that should be overwritten
68310        --
68311        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68312                                          p_header_num   => 1);
68313        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68314 
68315        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68316 
68317        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68318           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68319        END IF;
68320 
68321       --
68322       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68323       --
68324       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68325           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68326       ELSE
68327           ---------------------------------------------------------------------------------------------------
68328           -- 4262811a Switch Sign
68329           ---------------------------------------------------------------------------------------------------
68330           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68331           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68332                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68333           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68334                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68335           -- 5132302
68336           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68337                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68338 
68339       END IF;
68340 
68341       -- 4955764
68342       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68343       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68344 
68345 
68346       XLA_AE_LINES_PKG.ValidateCurrentLine;
68347       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68348 
68349       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68350                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68351                ,p_balance_type_code => l_balance_type_code);
68352 
68353    END IF;
68354 
68355    -----------------------------------------------------------------------------------------
68356    -- 4262811 Multiperiod Accounting
68357    -----------------------------------------------------------------------------------------
68358      -- No MPA option is assigned.
68359 
68360 
68361 END IF;
68362 END IF;
68363 --
68364 
68365 --
68366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68367    trace
68368       (p_msg      => 'END of AcctLineType_137'
68369       ,p_level    => C_LEVEL_PROCEDURE
68370       ,p_module   => l_log_module);
68371 END IF;
68372 --
68373 EXCEPTION
68374   WHEN xla_exceptions_pkg.application_exception THEN
68375       RAISE;
68376   WHEN OTHERS THEN
68377        xla_exceptions_pkg.raise_message
68378            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_137');
68379 END AcctLineType_137;
68380 --
68381 
68382 ---------------------------------------
68383 --
68384 -- PRIVATE FUNCTION
68385 --         AcctLineType_138
68386 --
68387 ---------------------------------------
68388 PROCEDURE AcctLineType_138 (
68389   p_application_id        IN NUMBER
68390  ,p_event_id              IN NUMBER
68391  ,p_calculate_acctd_flag  IN VARCHAR2
68392  ,p_calculate_g_l_flag    IN VARCHAR2
68393  ,p_actual_flag           IN OUT VARCHAR2
68394  ,p_balance_type_code     OUT VARCHAR2
68395  ,p_gain_or_loss_ref      OUT VARCHAR2
68396  
68397 --Unbilled Receivables CCID
68398  , p_source_20            IN NUMBER
68399 --Entered Currency Code
68400  , p_source_26            IN VARCHAR2
68401 --Entered Amount
68402  , p_source_42            IN NUMBER
68403 --Accounted Amount
68404  , p_source_43            IN NUMBER
68405 --Revenue Distribution Type
68406  , p_source_46            IN VARCHAR2
68407 --Crediting Revenue Flag
68408  , p_source_48            IN VARCHAR2
68409 --Revenue First Distribution ID
68413 --Event ID
68410  , p_source_49            IN NUMBER
68411 --Revenue Second Distribution ID
68412  , p_source_50            IN NUMBER
68414  , p_source_51            IN NUMBER
68415 )
68416 IS
68417 
68418 l_component_type              VARCHAR2(80);
68419 l_component_code              VARCHAR2(30);
68420 l_component_type_code         VARCHAR2(1);
68421 l_component_appl_id           INTEGER;
68422 l_amb_context_code            VARCHAR2(30);
68423 l_entity_code                 VARCHAR2(30);
68424 l_event_class_code            VARCHAR2(30);
68425 l_ae_header_id                NUMBER;
68426 l_event_type_code             VARCHAR2(30);
68427 l_line_definition_code        VARCHAR2(30);
68428 l_line_definition_owner_code  VARCHAR2(1);
68429 --
68430 -- adr variables
68431 l_segment                     VARCHAR2(30);
68432 l_ccid                        NUMBER;
68433 l_adr_transaction_coa_id      NUMBER;
68434 l_adr_accounting_coa_id       NUMBER;
68435 l_adr_flexfield_segment_code  VARCHAR2(30);
68436 l_adr_flex_value_set_id       NUMBER;
68437 l_adr_value_type_code         VARCHAR2(30);
68438 l_adr_value_combination_id    NUMBER;
68439 l_adr_value_segment_code      VARCHAR2(30);
68440 
68441 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68442 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68443 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
68444 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
68445 
68446 -- 4262811 Variables ------------------------------------------------------------------------------------------
68447 l_entered_amt_idx             NUMBER;
68448 l_accted_amt_idx              NUMBER;
68449 l_acc_rev_flag                VARCHAR2(1);
68450 l_accrual_line_num            NUMBER;
68451 l_tmp_amt                     NUMBER;
68452 l_acc_rev_natural_side_code   VARCHAR2(1);
68453 
68454 l_num_entries                 NUMBER;
68455 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
68456 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
68457 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
68458 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
68459 l_recog_line_1                NUMBER;
68460 l_recog_line_2                NUMBER;
68461 
68462 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
68463 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
68464 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
68465 
68466 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
68467 
68468 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
68469 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
68470 
68471 ---------------------------------------------------------------------------------------------------------------
68472 
68473 
68474 --
68475 -- bulk performance
68476 --
68477 l_balance_type_code           VARCHAR2(1);
68478 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
68479 l_log_module                  VARCHAR2(240);
68480 
68481 --
68482 -- Upgrade strategy
68483 --
68484 l_actual_upg_option           VARCHAR2(1);
68485 l_enc_upg_option           VARCHAR2(1);
68486 
68487 --
68488 BEGIN
68489 --
68490 IF g_log_enabled THEN
68491       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
68492 END IF;
68493 --
68494 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68495 
68496       trace
68497          (p_msg      => 'BEGIN of AcctLineType_138'
68498          ,p_level    => C_LEVEL_PROCEDURE
68499          ,p_module   => l_log_module);
68500 
68501 END IF;
68502 --
68503 l_component_type             := 'AMB_JLT';
68504 l_component_code             := 'PA_UBR_FED';
68505 l_component_type_code        := 'S';
68506 l_component_appl_id          :=  275;
68507 l_amb_context_code           := 'DEFAULT';
68508 l_entity_code                := 'REVENUE';
68509 l_event_class_code           := 'REVENUE';
68510 l_event_type_code            := 'REVENUE_ALL';
68511 l_line_definition_owner_code := 'S';
68512 l_line_definition_code       := 'FV_PROJECTS_JLD';
68513 --
68514 l_balance_type_code          := 'A';
68515 l_segment                     := NULL;
68516 l_ccid                        := NULL;
68517 l_adr_transaction_coa_id      := NULL;
68518 l_adr_accounting_coa_id       := NULL;
68519 l_adr_flexfield_segment_code  := NULL;
68520 l_adr_flex_value_set_id       := NULL;
68521 l_adr_value_type_code         := NULL;
68522 l_adr_value_combination_id    := NULL;
68523 l_adr_value_segment_code      := NULL;
68524 
68525 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
68526 l_bflow_class_code           := '';    -- 4219869 Business Flow
68527 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
68528 l_budgetary_control_flag     := 'N';
68529 
68530 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
68531 l_bflow_applied_to_amt       := NULL; -- 5132302
68532 l_entered_amt_idx            := NULL;          -- 4262811
68533 l_accted_amt_idx             := NULL;          -- 4262811
68534 l_acc_rev_flag               := NULL;          -- 4262811
68535 l_accrual_line_num           := NULL;          -- 4262811
68536 l_tmp_amt                    := NULL;          -- 4262811
68537 --
68538  
68539 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
68540     l_balance_type_code <> 'B' THEN
68541 IF NVL(p_source_46,'
68542 ') =  'Revenue - UBR' AND 
68543 NVL(p_source_48,'
68544 ') =  'N'
68545  THEN 
68546 
68547    --
68548    XLA_AE_LINES_PKG.SetNewLine;
68549 
68553    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
68550    p_balance_type_code          := l_balance_type_code;
68551    -- set the flag so later we will know whether the gain loss line needs to be created
68552    
68554      p_actual_flag :='A';
68555    END IF;
68556 
68557    --
68558    -- bulk performance
68559    --
68560    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
68561                                       p_header_num   => 0); -- 4262811
68562    --
68563    -- set accounting line options
68564    --
68565    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
68566            p_natural_side_code          => 'D'
68567          , p_gain_or_loss_flag          => 'N'
68568          , p_gl_transfer_mode_code      => 'S'
68569          , p_acct_entry_type_code       => 'A'
68570          , p_switch_side_flag           => 'Y'
68571          , p_merge_duplicate_code       => 'N'
68572          );
68573    --
68574    l_acc_rev_natural_side_code := 'C';  -- 4262811
68575    -- 
68576    --
68577    -- set accounting line type info
68578    --
68579    xla_ae_lines_pkg.SetAcctLineType
68580       (p_component_type             => l_component_type
68581       ,p_event_type_code            => l_event_type_code
68582       ,p_line_definition_owner_code => l_line_definition_owner_code
68583       ,p_line_definition_code       => l_line_definition_code
68584       ,p_accounting_line_code       => l_component_code
68585       ,p_accounting_line_type_code  => l_component_type_code
68586       ,p_accounting_line_appl_id    => l_component_appl_id
68587       ,p_amb_context_code           => l_amb_context_code
68588       ,p_entity_code                => l_entity_code
68589       ,p_event_class_code           => l_event_class_code);
68590    --
68591    -- set accounting class
68592    --
68593    xla_ae_lines_pkg.SetAcctClass(
68594            p_accounting_class_code  => 'FEDERAL_UNBILLED_RECEIVABLE'
68595          , p_ae_header_id           => l_ae_header_id
68596          );
68597 
68598    --
68599    -- set rounding class
68600    --
68601    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
68602                       'FEDERAL_UNBILLED_RECEIVABLE';
68603 
68604    --
68605    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
68606    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
68607    --
68608    -- bulk performance
68609    --
68610    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
68611 
68612    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
68613       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
68614 
68615    -- 4955764
68616    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68617       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
68618 
68619    -- 4458381 Public Sector Enh
68620    
68621    --
68622    -- set accounting attributes for the line type
68623    --
68624    l_entered_amt_idx := 4;
68625    l_accted_amt_idx  := 7;
68626    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
68627    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
68628    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
68629    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
68630    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
68631    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
68632    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
68633    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
68634    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
68635    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
68636    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
68637    l_rec_acct_attrs.array_acct_attr_code(6) := 'GAIN_LOSS_REFERENCE';
68638    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_51);
68639    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
68640    l_rec_acct_attrs.array_num_value(7)  := p_source_43;
68641 
68642    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
68643    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
68644 
68645    ---------------------------------------------------------------------------------------------------------------
68646    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
68647    ---------------------------------------------------------------------------------------------------------------
68648    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
68649 
68650    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68651    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
68652 
68653    IF xla_accounting_cache_pkg.GetValueChar
68654          (p_source_code         => 'LEDGER_CATEGORY_CODE'
68655          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
68656    AND l_bflow_method_code = 'PRIOR_ENTRY'
68657 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
68658    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
68659          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
68660        )
68661    THEN
68662          xla_ae_lines_pkg.BflowUpgEntry
68663            (p_business_method_code    => l_bflow_method_code
68664            ,p_business_class_code     => l_bflow_class_code
68665            ,p_balance_type            => l_balance_type_code);
68666    ELSE
68667       NULL;
68671    --
68668 -- No business flow processing for business flow method of NONE.
68669    END IF;
68670 
68672    -- call analytical criteria
68673    --
68674    
68675    --
68676    -- call description
68677    --
68678    -- No description or it is inherited.
68679    --
68680    -- call ADRs
68681    -- Bug 4922099
68682    --
68683    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
68684         (NVL(l_actual_upg_option, 'N') = 'O') OR
68685         (NVL(l_enc_upg_option, 'N') = 'O')
68686       )
68687    THEN
68688    NULL;
68689    --
68690    --
68691    
68692   l_ccid := AcctDerRule_27(
68693            p_application_id           => p_application_id
68694          , p_ae_header_id             => l_ae_header_id 
68695 , p_source_20 => p_source_20
68696          , x_transaction_coa_id       => l_adr_transaction_coa_id
68697          , x_accounting_coa_id        => l_adr_accounting_coa_id
68698          , x_value_type_code          => l_adr_value_type_code
68699          , p_side                     => 'NA'
68700    );
68701 
68702    xla_ae_lines_pkg.set_ccid(
68703     p_code_combination_id          => l_ccid
68704   , p_value_type_code              => l_adr_value_type_code
68705   , p_transaction_coa_id           => l_adr_transaction_coa_id
68706   , p_accounting_coa_id            => l_adr_accounting_coa_id
68707   , p_adr_code                     => 'UBR_RULE'
68708   , p_adr_type_code                => 'S'
68709   , p_component_type               => l_component_type
68710   , p_component_code               => l_component_code
68711   , p_component_type_code          => l_component_type_code
68712   , p_component_appl_id            => l_component_appl_id
68713   , p_amb_context_code             => l_amb_context_code
68714   , p_side                         => 'NA'
68715   );
68716 
68717 
68718    l_segment := AcctDerRule_3(
68719            p_application_id           => p_application_id
68720          , p_ae_header_id             => l_ae_header_id 
68721          , x_transaction_coa_id       => l_adr_transaction_coa_id
68722          , x_accounting_coa_id        => l_adr_accounting_coa_id
68723          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
68724          , x_flex_value_set_id        => l_adr_flex_value_set_id
68725          , x_value_type_code          => l_adr_value_type_code
68726          , x_value_combination_id     => l_adr_value_combination_id
68727          , x_value_segment_code       => l_adr_value_segment_code
68728          , p_side                     => 'NA'
68729          , p_override_seg_flag        => 'Y'
68730    );
68731 
68732    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
68733 
68734       xla_ae_lines_pkg.set_segment(
68735           p_to_segment_code         => 'GL_ACCOUNT'
68736         , p_segment_value           => l_segment
68737         , p_from_segment_code       => l_adr_value_segment_code
68738         , p_from_combination_id     => l_adr_value_combination_id
68739         , p_value_type_code         => l_adr_value_type_code
68740         , p_transaction_coa_id      => l_adr_transaction_coa_id
68741         , p_accounting_coa_id       => l_adr_accounting_coa_id
68742         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
68743         , p_flex_value_set_id       => l_adr_flex_value_set_id
68744         , p_adr_code                => 'FV_425X01_PROJECTS'
68745         , p_adr_type_code           => 'S'
68746         , p_component_type          => l_component_type
68747         , p_component_code          => l_component_code
68748         , p_component_type_code     => l_component_type_code
68749         , p_component_appl_id       => l_component_appl_id
68750         , p_amb_context_code        => l_amb_context_code
68751         , p_entity_code             => 'REVENUE'
68752         , p_event_class_code        => 'REVENUE'
68753         , p_side                    => 'NA'
68754         );
68755 
68756   END IF;
68757 
68758    --
68759    --
68760    END IF;
68761    --
68762    -- Bug 4922099
68763    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
68764           (NVL(l_enc_upg_option, 'N') = 'O')
68765         ) AND
68766         (l_bflow_method_code = 'PRIOR_ENTRY')
68767       )
68768    THEN
68769       IF
68770       --
68771       1 = 2
68772       --
68773       THEN
68774       xla_accounting_err_pkg.build_message
68775                                     (p_appli_s_name            => 'XLA'
68776                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68777                                     ,p_token_1                 => 'LINE_NUMBER'
68778                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
68779                                     ,p_token_2                 => 'LINE_TYPE_NAME'
68780                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
68781                                                                              l_component_type
68782                                                                             ,l_component_code
68783                                                                             ,l_component_type_code
68784                                                                             ,l_component_appl_id
68785                                                                             ,l_amb_context_code
68786                                                                             ,l_entity_code
68787                                                                             ,l_event_class_code
68788                                                                            )
68789                                     ,p_token_3                 => 'OWNER'
68790                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
68794                                     ,p_token_4                 => 'PRODUCT_NAME'
68791                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
68792                                                                           ,p_lookup_code    => l_component_type_code
68793                                                                          )
68795                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
68796                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
68797                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
68798                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
68799                                     ,p_ae_header_id            =>  NULL
68800                                        );
68801 
68802         IF (C_LEVEL_ERROR>= g_log_level) THEN
68803                  trace
68804                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
68805                       ,p_level    => C_LEVEL_ERROR
68806                       ,p_module   => l_log_module);
68807         END IF;
68808       END IF;
68809    END IF;
68810    --
68811    --
68812    ------------------------------------------------------------------------------------------------
68813    -- 4219869 Business Flow
68814    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
68815    -- Prior Entry.  Currently, the following code is always generated.
68816    ------------------------------------------------------------------------------------------------
68817    XLA_AE_LINES_PKG.ValidateCurrentLine;
68818 
68819    ------------------------------------------------------------------------------------
68820    -- 4219869 Business Flow
68821    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
68822    ------------------------------------------------------------------------------------
68823    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68824 
68825    ----------------------------------------------------------------------------------
68826    -- 4219869 Business Flow
68827    -- Update journal entry status -- Need to generate this within IF <condition>
68828    ----------------------------------------------------------------------------------
68829    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68830          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
68831          ,p_balance_type_code => l_balance_type_code
68832          );
68833 
68834    -------------------------------------------------------------------------------------------
68835    -- 4262811 - Generate the Accrual Reversal lines
68836    -------------------------------------------------------------------------------------------
68837    BEGIN
68838       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
68839                               (g_array_event(p_event_id).array_value_num('header_index'));
68840       IF l_acc_rev_flag IS NULL THEN
68841          l_acc_rev_flag := 'N';
68842       END IF;
68843    EXCEPTION
68844       WHEN OTHERS THEN
68845          l_acc_rev_flag := 'N';
68846    END;
68847    --
68848    IF (l_acc_rev_flag = 'Y') THEN
68849 
68850        -- 4645092  ------------------------------------------------------------------------------
68851        -- To allow MPA report to determine if it should generate report process
68852        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
68853        ------------------------------------------------------------------------------------------
68854 
68855        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
68856        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
68857 
68858        --
68859        -- Update the line information that should be overwritten
68860        --
68861        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
68862                                          p_header_num   => 1);
68863        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
68864 
68865        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
68866 
68867        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
68868           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
68869        END IF;
68870 
68871       --
68872       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
68873       --
68874       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
68875           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
68876       ELSE
68877           ---------------------------------------------------------------------------------------------------
68878           -- 4262811a Switch Sign
68879           ---------------------------------------------------------------------------------------------------
68880           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
68881           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68882                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68883           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
68884                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68885           -- 5132302
68886           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
68887                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
68888 
68889       END IF;
68890 
68891       -- 4955764
68895 
68892       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
68893       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
68894 
68896       XLA_AE_LINES_PKG.ValidateCurrentLine;
68897       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
68898 
68899       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
68900                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
68901                ,p_balance_type_code => l_balance_type_code);
68902 
68903    END IF;
68904 
68905    -----------------------------------------------------------------------------------------
68906    -- 4262811 Multiperiod Accounting
68907    -----------------------------------------------------------------------------------------
68908      -- No MPA option is assigned.
68909 
68910 
68911 END IF;
68912 END IF;
68913 --
68914 
68915 --
68916 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68917    trace
68918       (p_msg      => 'END of AcctLineType_138'
68919       ,p_level    => C_LEVEL_PROCEDURE
68920       ,p_module   => l_log_module);
68921 END IF;
68922 --
68923 EXCEPTION
68924   WHEN xla_exceptions_pkg.application_exception THEN
68925       RAISE;
68926   WHEN OTHERS THEN
68927        xla_exceptions_pkg.raise_message
68928            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_138');
68929 END AcctLineType_138;
68930 --
68931 
68932 ---------------------------------------
68933 --
68934 -- PRIVATE FUNCTION
68935 --         AcctLineType_139
68936 --
68937 ---------------------------------------
68938 PROCEDURE AcctLineType_139 (
68939   p_application_id        IN NUMBER
68940  ,p_event_id              IN NUMBER
68941  ,p_calculate_acctd_flag  IN VARCHAR2
68942  ,p_calculate_g_l_flag    IN VARCHAR2
68943  ,p_actual_flag           IN OUT VARCHAR2
68944  ,p_balance_type_code     OUT VARCHAR2
68945  ,p_gain_or_loss_ref      OUT VARCHAR2
68946  
68947 --Unearned Revenue CCID
68948  , p_source_21            IN NUMBER
68949 --Entered Currency Code
68950  , p_source_26            IN VARCHAR2
68951 --Exchange Rate Date
68952  , p_source_28            IN DATE
68953 --Exchange Rate
68954  , p_source_29            IN NUMBER
68955 --Exchange Rate Type
68956  , p_source_30            IN VARCHAR2
68957 --Entered Amount
68958  , p_source_42            IN NUMBER
68959 --Accounted Amount
68960  , p_source_43            IN NUMBER
68961 --Revenue Distribution Type
68962  , p_source_46            IN VARCHAR2
68963 --Crediting Revenue Flag
68964  , p_source_48            IN VARCHAR2
68965 --Revenue First Distribution ID
68966  , p_source_49            IN NUMBER
68967 --Revenue Second Distribution ID
68968  , p_source_50            IN NUMBER
68969 --Event ID
68970  , p_source_51            IN NUMBER
68971 )
68972 IS
68973 
68974 l_component_type              VARCHAR2(80);
68975 l_component_code              VARCHAR2(30);
68976 l_component_type_code         VARCHAR2(1);
68977 l_component_appl_id           INTEGER;
68978 l_amb_context_code            VARCHAR2(30);
68979 l_entity_code                 VARCHAR2(30);
68980 l_event_class_code            VARCHAR2(30);
68981 l_ae_header_id                NUMBER;
68982 l_event_type_code             VARCHAR2(30);
68983 l_line_definition_code        VARCHAR2(30);
68984 l_line_definition_owner_code  VARCHAR2(1);
68985 --
68986 -- adr variables
68987 l_segment                     VARCHAR2(30);
68988 l_ccid                        NUMBER;
68989 l_adr_transaction_coa_id      NUMBER;
68990 l_adr_accounting_coa_id       NUMBER;
68991 l_adr_flexfield_segment_code  VARCHAR2(30);
68992 l_adr_flex_value_set_id       NUMBER;
68993 l_adr_value_type_code         VARCHAR2(30);
68994 l_adr_value_combination_id    NUMBER;
68995 l_adr_value_segment_code      VARCHAR2(30);
68996 
68997 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
68998 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
68999 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
69000 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
69001 
69002 -- 4262811 Variables ------------------------------------------------------------------------------------------
69003 l_entered_amt_idx             NUMBER;
69004 l_accted_amt_idx              NUMBER;
69005 l_acc_rev_flag                VARCHAR2(1);
69006 l_accrual_line_num            NUMBER;
69007 l_tmp_amt                     NUMBER;
69008 l_acc_rev_natural_side_code   VARCHAR2(1);
69009 
69010 l_num_entries                 NUMBER;
69011 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69012 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69013 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69014 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69015 l_recog_line_1                NUMBER;
69016 l_recog_line_2                NUMBER;
69017 
69018 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69019 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69020 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69021 
69022 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69023 
69024 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69025 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69026 
69027 ---------------------------------------------------------------------------------------------------------------
69028 
69029 
69030 --
69031 -- bulk performance
69032 --
69033 l_balance_type_code           VARCHAR2(1);
69037 --
69034 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69035 l_log_module                  VARCHAR2(240);
69036 
69038 -- Upgrade strategy
69039 --
69040 l_actual_upg_option           VARCHAR2(1);
69041 l_enc_upg_option           VARCHAR2(1);
69042 
69043 --
69044 BEGIN
69045 --
69046 IF g_log_enabled THEN
69047       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
69048 END IF;
69049 --
69050 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69051 
69052       trace
69053          (p_msg      => 'BEGIN of AcctLineType_139'
69054          ,p_level    => C_LEVEL_PROCEDURE
69055          ,p_module   => l_log_module);
69056 
69057 END IF;
69058 --
69059 l_component_type             := 'AMB_JLT';
69060 l_component_code             := 'PA_UER';
69061 l_component_type_code        := 'S';
69062 l_component_appl_id          :=  275;
69063 l_amb_context_code           := 'DEFAULT';
69064 l_entity_code                := 'REVENUE';
69065 l_event_class_code           := 'REVENUE';
69066 l_event_type_code            := 'REVENUE_ALL';
69067 l_line_definition_owner_code := 'S';
69068 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
69069 --
69070 l_balance_type_code          := 'A';
69071 l_segment                     := NULL;
69072 l_ccid                        := NULL;
69073 l_adr_transaction_coa_id      := NULL;
69074 l_adr_accounting_coa_id       := NULL;
69075 l_adr_flexfield_segment_code  := NULL;
69076 l_adr_flex_value_set_id       := NULL;
69077 l_adr_value_type_code         := NULL;
69078 l_adr_value_combination_id    := NULL;
69079 l_adr_value_segment_code      := NULL;
69080 
69081 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69082 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
69083 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69084 l_budgetary_control_flag     := 'N';
69085 
69086 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69087 l_bflow_applied_to_amt       := NULL; -- 5132302
69088 l_entered_amt_idx            := NULL;          -- 4262811
69089 l_accted_amt_idx             := NULL;          -- 4262811
69090 l_acc_rev_flag               := NULL;          -- 4262811
69091 l_accrual_line_num           := NULL;          -- 4262811
69092 l_tmp_amt                    := NULL;          -- 4262811
69093 --
69094  
69095 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69096     l_balance_type_code <> 'B' THEN
69097 IF NVL(p_source_46,'
69098 ') =  'Revenue - UER' AND 
69099 NVL(p_source_48,'
69100 ') =  'N'
69101  THEN 
69102 
69103    --
69104    XLA_AE_LINES_PKG.SetNewLine;
69105 
69106    p_balance_type_code          := l_balance_type_code;
69107    -- set the flag so later we will know whether the gain loss line needs to be created
69108    
69109    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69110      p_actual_flag :='A';
69111    END IF;
69112 
69113    --
69114    -- bulk performance
69115    --
69116    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69117                                       p_header_num   => 0); -- 4262811
69118    --
69119    -- set accounting line options
69120    --
69121    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69122            p_natural_side_code          => 'D'
69123          , p_gain_or_loss_flag          => 'N'
69124          , p_gl_transfer_mode_code      => 'S'
69125          , p_acct_entry_type_code       => 'A'
69126          , p_switch_side_flag           => 'Y'
69127          , p_merge_duplicate_code       => 'N'
69128          );
69129    --
69130    l_acc_rev_natural_side_code := 'C';  -- 4262811
69131    -- 
69132    --
69133    -- set accounting line type info
69134    --
69135    xla_ae_lines_pkg.SetAcctLineType
69136       (p_component_type             => l_component_type
69137       ,p_event_type_code            => l_event_type_code
69138       ,p_line_definition_owner_code => l_line_definition_owner_code
69139       ,p_line_definition_code       => l_line_definition_code
69140       ,p_accounting_line_code       => l_component_code
69141       ,p_accounting_line_type_code  => l_component_type_code
69142       ,p_accounting_line_appl_id    => l_component_appl_id
69143       ,p_amb_context_code           => l_amb_context_code
69144       ,p_entity_code                => l_entity_code
69145       ,p_event_class_code           => l_event_class_code);
69146    --
69147    -- set accounting class
69148    --
69149    xla_ae_lines_pkg.SetAcctClass(
69150            p_accounting_class_code  => 'UNEARNED_REVENUE'
69151          , p_ae_header_id           => l_ae_header_id
69152          );
69153 
69154    --
69155    -- set rounding class
69156    --
69157    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69158                       'UNEARNED_REVENUE';
69159 
69160    --
69161    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69162    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69163    --
69164    -- bulk performance
69165    --
69166    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69167 
69168    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69169       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69170 
69171    -- 4955764
69172    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69173       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69174 
69175    -- 4458381 Public Sector Enh
69176    
69177    --
69181    l_accted_amt_idx  := 10;
69178    -- set accounting attributes for the line type
69179    --
69180    l_entered_amt_idx := 4;
69182    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69183    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
69184    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
69185    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
69186    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
69187    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
69188    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
69189    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
69190    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
69191    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
69192    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
69193    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
69194    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
69195    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
69196    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
69197    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
69198    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
69199    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
69200    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
69201    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
69202    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
69203 
69204    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69205    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69206 
69207    ---------------------------------------------------------------------------------------------------------------
69208    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69209    ---------------------------------------------------------------------------------------------------------------
69210    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69211 
69212    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69213    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69214 
69215    IF xla_accounting_cache_pkg.GetValueChar
69216          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69217          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69218    AND l_bflow_method_code = 'PRIOR_ENTRY'
69219 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69220    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69221          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69222        )
69223    THEN
69224          xla_ae_lines_pkg.BflowUpgEntry
69225            (p_business_method_code    => l_bflow_method_code
69226            ,p_business_class_code     => l_bflow_class_code
69227            ,p_balance_type            => l_balance_type_code);
69228    ELSE
69229       NULL;
69230 -- No business flow processing for business flow method of NONE.
69231    END IF;
69232 
69233    --
69234    -- call analytical criteria
69235    --
69236    
69237    --
69238    -- call description
69239    --
69240    -- No description or it is inherited.
69241    --
69242    -- call ADRs
69243    -- Bug 4922099
69244    --
69245    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69246         (NVL(l_actual_upg_option, 'N') = 'O') OR
69247         (NVL(l_enc_upg_option, 'N') = 'O')
69248       )
69249    THEN
69250    NULL;
69251    --
69252    --
69253    
69254   l_ccid := AcctDerRule_28(
69255            p_application_id           => p_application_id
69256          , p_ae_header_id             => l_ae_header_id 
69257 , p_source_21 => p_source_21
69258          , x_transaction_coa_id       => l_adr_transaction_coa_id
69259          , x_accounting_coa_id        => l_adr_accounting_coa_id
69260          , x_value_type_code          => l_adr_value_type_code
69261          , p_side                     => 'NA'
69262    );
69263 
69264    xla_ae_lines_pkg.set_ccid(
69265     p_code_combination_id          => l_ccid
69266   , p_value_type_code              => l_adr_value_type_code
69267   , p_transaction_coa_id           => l_adr_transaction_coa_id
69268   , p_accounting_coa_id            => l_adr_accounting_coa_id
69269   , p_adr_code                     => 'UER_RULE'
69270   , p_adr_type_code                => 'S'
69271   , p_component_type               => l_component_type
69272   , p_component_code               => l_component_code
69273   , p_component_type_code          => l_component_type_code
69274   , p_component_appl_id            => l_component_appl_id
69275   , p_amb_context_code             => l_amb_context_code
69276   , p_side                         => 'NA'
69277   );
69278 
69279 
69280    --
69281    --
69282    END IF;
69283    --
69284    -- Bug 4922099
69285    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69286           (NVL(l_enc_upg_option, 'N') = 'O')
69287         ) AND
69288         (l_bflow_method_code = 'PRIOR_ENTRY')
69289       )
69290    THEN
69291       IF
69292       --
69293       1 = 2
69294       --
69295       THEN
69296       xla_accounting_err_pkg.build_message
69297                                     (p_appli_s_name            => 'XLA'
69298                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69299                                     ,p_token_1                 => 'LINE_NUMBER'
69300                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69301                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69305                                                                             ,l_component_type_code
69302                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69303                                                                              l_component_type
69304                                                                             ,l_component_code
69306                                                                             ,l_component_appl_id
69307                                                                             ,l_amb_context_code
69308                                                                             ,l_entity_code
69309                                                                             ,l_event_class_code
69310                                                                            )
69311                                     ,p_token_3                 => 'OWNER'
69312                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69313                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69314                                                                           ,p_lookup_code    => l_component_type_code
69315                                                                          )
69316                                     ,p_token_4                 => 'PRODUCT_NAME'
69317                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69318                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69319                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69320                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69321                                     ,p_ae_header_id            =>  NULL
69322                                        );
69323 
69324         IF (C_LEVEL_ERROR>= g_log_level) THEN
69325                  trace
69326                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69327                       ,p_level    => C_LEVEL_ERROR
69328                       ,p_module   => l_log_module);
69329         END IF;
69330       END IF;
69331    END IF;
69332    --
69333    --
69334    ------------------------------------------------------------------------------------------------
69335    -- 4219869 Business Flow
69336    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69337    -- Prior Entry.  Currently, the following code is always generated.
69338    ------------------------------------------------------------------------------------------------
69339    XLA_AE_LINES_PKG.ValidateCurrentLine;
69340 
69341    ------------------------------------------------------------------------------------
69342    -- 4219869 Business Flow
69343    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69344    ------------------------------------------------------------------------------------
69345    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69346 
69347    ----------------------------------------------------------------------------------
69348    -- 4219869 Business Flow
69349    -- Update journal entry status -- Need to generate this within IF <condition>
69350    ----------------------------------------------------------------------------------
69351    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69352          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69353          ,p_balance_type_code => l_balance_type_code
69354          );
69355 
69356    -------------------------------------------------------------------------------------------
69357    -- 4262811 - Generate the Accrual Reversal lines
69358    -------------------------------------------------------------------------------------------
69359    BEGIN
69360       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69361                               (g_array_event(p_event_id).array_value_num('header_index'));
69362       IF l_acc_rev_flag IS NULL THEN
69363          l_acc_rev_flag := 'N';
69364       END IF;
69365    EXCEPTION
69366       WHEN OTHERS THEN
69367          l_acc_rev_flag := 'N';
69368    END;
69369    --
69370    IF (l_acc_rev_flag = 'Y') THEN
69371 
69372        -- 4645092  ------------------------------------------------------------------------------
69373        -- To allow MPA report to determine if it should generate report process
69374        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69375        ------------------------------------------------------------------------------------------
69376 
69377        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69378        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69379 
69380        --
69381        -- Update the line information that should be overwritten
69382        --
69383        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69384                                          p_header_num   => 1);
69385        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69386 
69387        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69388 
69389        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69390           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69391        END IF;
69392 
69393       --
69394       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69395       --
69396       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69397           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69398       ELSE
69399           ---------------------------------------------------------------------------------------------------
69403           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69400           -- 4262811a Switch Sign
69401           ---------------------------------------------------------------------------------------------------
69402           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69404                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69405           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69406                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69407           -- 5132302
69408           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
69409                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69410 
69411       END IF;
69412 
69413       -- 4955764
69414       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69415       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
69416 
69417 
69418       XLA_AE_LINES_PKG.ValidateCurrentLine;
69419       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69420 
69421       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69422                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
69423                ,p_balance_type_code => l_balance_type_code);
69424 
69425    END IF;
69426 
69427    -----------------------------------------------------------------------------------------
69428    -- 4262811 Multiperiod Accounting
69429    -----------------------------------------------------------------------------------------
69430      -- No MPA option is assigned.
69431 
69432 
69433 END IF;
69434 END IF;
69435 --
69436 
69437 --
69438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69439    trace
69440       (p_msg      => 'END of AcctLineType_139'
69441       ,p_level    => C_LEVEL_PROCEDURE
69442       ,p_module   => l_log_module);
69443 END IF;
69444 --
69445 EXCEPTION
69446   WHEN xla_exceptions_pkg.application_exception THEN
69447       RAISE;
69448   WHEN OTHERS THEN
69449        xla_exceptions_pkg.raise_message
69450            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_139');
69451 END AcctLineType_139;
69452 --
69453 
69454 ---------------------------------------
69455 --
69456 -- PRIVATE FUNCTION
69457 --         AcctLineType_140
69458 --
69459 ---------------------------------------
69460 PROCEDURE AcctLineType_140 (
69461   p_application_id        IN NUMBER
69462  ,p_event_id              IN NUMBER
69463  ,p_calculate_acctd_flag  IN VARCHAR2
69464  ,p_calculate_g_l_flag    IN VARCHAR2
69465  ,p_actual_flag           IN OUT VARCHAR2
69466  ,p_balance_type_code     OUT VARCHAR2
69467  ,p_gain_or_loss_ref      OUT VARCHAR2
69468  
69469 --Unearned Revenue CCID
69470  , p_source_21            IN NUMBER
69471 --Actual Upgrade Credit Accounting Class
69472  , p_source_24            IN VARCHAR2
69473 --Entered Currency Code
69474  , p_source_26            IN VARCHAR2
69475 --Exchange Rate Date
69476  , p_source_28            IN DATE
69477 --Exchange Rate
69478  , p_source_29            IN NUMBER
69479 --Exchange Rate Type
69480  , p_source_30            IN VARCHAR2
69481 --Actual Upgrade Debit Accounting Class
69482  , p_source_31            IN VARCHAR2
69483 --Use Actuals Upgrade Attributes Flag
69484  , p_source_32            IN VARCHAR2
69485 --Entered Amount
69486  , p_source_42            IN NUMBER
69487 --Accounted Amount
69488  , p_source_43            IN NUMBER
69489 --Revenue Distribution Type
69490  , p_source_46            IN VARCHAR2
69491 --Crediting Revenue Flag
69492  , p_source_48            IN VARCHAR2
69493 --Revenue First Distribution ID
69494  , p_source_49            IN NUMBER
69495 --Revenue Second Distribution ID
69496  , p_source_50            IN NUMBER
69497 --Event ID
69498  , p_source_51            IN NUMBER
69499 --Actual Upgrade Credit CCID
69500  , p_source_64            IN NUMBER
69501 --Actual Upgrade Debit CCID
69502  , p_source_65            IN NUMBER
69503 --Application ID
69504  , p_source_66            IN NUMBER
69505 --Revenue Entity Code
69506  , p_source_67            IN VARCHAR2
69507 --Crediting Revenue First Distribution ID
69508  , p_source_68            IN NUMBER
69509 --Project ID
69510  , p_source_69            IN NUMBER
69511 --Crediting Revenue Second Distribution ID
69512  , p_source_70            IN NUMBER
69513 --Draft Revenue Number Credited
69514  , p_source_71            IN NUMBER
69515 )
69516 IS
69517 
69518 l_component_type              VARCHAR2(80);
69519 l_component_code              VARCHAR2(30);
69520 l_component_type_code         VARCHAR2(1);
69521 l_component_appl_id           INTEGER;
69522 l_amb_context_code            VARCHAR2(30);
69523 l_entity_code                 VARCHAR2(30);
69524 l_event_class_code            VARCHAR2(30);
69525 l_ae_header_id                NUMBER;
69526 l_event_type_code             VARCHAR2(30);
69527 l_line_definition_code        VARCHAR2(30);
69528 l_line_definition_owner_code  VARCHAR2(1);
69529 --
69530 -- adr variables
69531 l_segment                     VARCHAR2(30);
69532 l_ccid                        NUMBER;
69533 l_adr_transaction_coa_id      NUMBER;
69534 l_adr_accounting_coa_id       NUMBER;
69535 l_adr_flexfield_segment_code  VARCHAR2(30);
69536 l_adr_flex_value_set_id       NUMBER;
69537 l_adr_value_type_code         VARCHAR2(30);
69538 l_adr_value_combination_id    NUMBER;
69539 l_adr_value_segment_code      VARCHAR2(30);
69540 
69541 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
69545 
69542 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
69543 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
69544 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
69546 -- 4262811 Variables ------------------------------------------------------------------------------------------
69547 l_entered_amt_idx             NUMBER;
69548 l_accted_amt_idx              NUMBER;
69549 l_acc_rev_flag                VARCHAR2(1);
69550 l_accrual_line_num            NUMBER;
69551 l_tmp_amt                     NUMBER;
69552 l_acc_rev_natural_side_code   VARCHAR2(1);
69553 
69554 l_num_entries                 NUMBER;
69555 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
69556 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
69557 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
69558 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
69559 l_recog_line_1                NUMBER;
69560 l_recog_line_2                NUMBER;
69561 
69562 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
69563 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
69564 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
69565 
69566 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
69567 
69568 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
69569 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
69570 
69571 ---------------------------------------------------------------------------------------------------------------
69572 
69573 
69574 --
69575 -- bulk performance
69576 --
69577 l_balance_type_code           VARCHAR2(1);
69578 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
69579 l_log_module                  VARCHAR2(240);
69580 
69581 --
69582 -- Upgrade strategy
69583 --
69584 l_actual_upg_option           VARCHAR2(1);
69585 l_enc_upg_option           VARCHAR2(1);
69586 
69587 --
69588 BEGIN
69589 --
69590 IF g_log_enabled THEN
69591       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
69592 END IF;
69593 --
69594 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69595 
69596       trace
69597          (p_msg      => 'BEGIN of AcctLineType_140'
69598          ,p_level    => C_LEVEL_PROCEDURE
69599          ,p_module   => l_log_module);
69600 
69601 END IF;
69602 --
69603 l_component_type             := 'AMB_JLT';
69604 l_component_code             := 'PA_UER_ADJ';
69605 l_component_type_code        := 'S';
69606 l_component_appl_id          :=  275;
69607 l_amb_context_code           := 'DEFAULT';
69608 l_entity_code                := 'REVENUE';
69609 l_event_class_code           := 'REVENUE_ADJ';
69610 l_event_type_code            := 'REVENUE_ADJ_ALL';
69611 l_line_definition_owner_code := 'S';
69612 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
69613 --
69614 l_balance_type_code          := 'A';
69615 l_segment                     := NULL;
69616 l_ccid                        := NULL;
69617 l_adr_transaction_coa_id      := NULL;
69618 l_adr_accounting_coa_id       := NULL;
69619 l_adr_flexfield_segment_code  := NULL;
69620 l_adr_flex_value_set_id       := NULL;
69621 l_adr_value_type_code         := NULL;
69622 l_adr_value_combination_id    := NULL;
69623 l_adr_value_segment_code      := NULL;
69624 
69625 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
69626 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
69627 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
69628 l_budgetary_control_flag     := 'N';
69629 
69630 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
69631 l_bflow_applied_to_amt       := NULL; -- 5132302
69632 l_entered_amt_idx            := NULL;          -- 4262811
69633 l_accted_amt_idx             := NULL;          -- 4262811
69634 l_acc_rev_flag               := NULL;          -- 4262811
69635 l_accrual_line_num           := NULL;          -- 4262811
69636 l_tmp_amt                    := NULL;          -- 4262811
69637 --
69638  
69639 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
69640     l_balance_type_code <> 'B' THEN
69641 IF NVL(p_source_46,'
69642 ') =  'Revenue - UER' AND 
69643 NVL(p_source_48,'
69644 ') =  'Y'
69645  THEN 
69646 
69647    --
69648    XLA_AE_LINES_PKG.SetNewLine;
69649 
69650    p_balance_type_code          := l_balance_type_code;
69651    -- set the flag so later we will know whether the gain loss line needs to be created
69652    
69653    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
69654      p_actual_flag :='A';
69655    END IF;
69656 
69657    --
69658    -- bulk performance
69659    --
69660    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
69661                                       p_header_num   => 0); -- 4262811
69662    --
69663    -- set accounting line options
69664    --
69665    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
69666            p_natural_side_code          => 'C'
69667          , p_gain_or_loss_flag          => 'N'
69668          , p_gl_transfer_mode_code      => 'S'
69669          , p_acct_entry_type_code       => 'A'
69670          , p_switch_side_flag           => 'Y'
69671          , p_merge_duplicate_code       => 'N'
69672          );
69673    --
69674    l_acc_rev_natural_side_code := 'D';  -- 4262811
69675    -- 
69676    --
69677    -- set accounting line type info
69678    --
69679    xla_ae_lines_pkg.SetAcctLineType
69680       (p_component_type             => l_component_type
69681       ,p_event_type_code            => l_event_type_code
69685       ,p_accounting_line_type_code  => l_component_type_code
69682       ,p_line_definition_owner_code => l_line_definition_owner_code
69683       ,p_line_definition_code       => l_line_definition_code
69684       ,p_accounting_line_code       => l_component_code
69686       ,p_accounting_line_appl_id    => l_component_appl_id
69687       ,p_amb_context_code           => l_amb_context_code
69688       ,p_entity_code                => l_entity_code
69689       ,p_event_class_code           => l_event_class_code);
69690    --
69691    -- set accounting class
69692    --
69693    xla_ae_lines_pkg.SetAcctClass(
69694            p_accounting_class_code  => 'UNEARNED_REVENUE'
69695          , p_ae_header_id           => l_ae_header_id
69696          );
69697 
69698    --
69699    -- set rounding class
69700    --
69701    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
69702                       'UNEARNED_REVENUE';
69703 
69704    --
69705    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
69706    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
69707    --
69708    -- bulk performance
69709    --
69710    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
69711 
69712    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
69713       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
69714 
69715    -- 4955764
69716    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
69717       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
69718 
69719    -- 4458381 Public Sector Enh
69720    
69721    --
69722    -- set accounting attributes for the line type
69723    --
69724    l_entered_amt_idx := 28;
69725    l_accted_amt_idx  := 34;
69726    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
69727    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
69728    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
69729    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
69730    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
69731    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
69732    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
69733    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
69734    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
69735    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
69736    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
69737    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
69738    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
69739    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
69740    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
69741    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
69742    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
69743    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
69744    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
69745    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
69746    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
69747    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
69748    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
69749    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
69750    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
69751    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
69752    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
69753    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
69754    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
69755    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
69756    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
69757    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
69758    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
69759    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
69760    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
69761    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
69762    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
69763    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
69764    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
69765    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
69766    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
69767    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
69768    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
69769    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
69770    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
69771    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
69772    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
69773    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
69774    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
69775    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
69776    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
69777    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
69778    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
69779    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
69780    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
69781    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
69782    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
69783    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
69787    l_rec_acct_attrs.array_acct_attr_code(31) := 'EXCHANGE_RATE';
69784    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
69785    l_rec_acct_attrs.array_acct_attr_code(30) := 'EXCHANGE_DATE';
69786    l_rec_acct_attrs.array_date_value(30)  := p_source_28;
69788    l_rec_acct_attrs.array_num_value(31)  := p_source_29;
69789    l_rec_acct_attrs.array_acct_attr_code(32) := 'EXCHANGE_RATE_TYPE';
69790    l_rec_acct_attrs.array_char_value(32)  := p_source_30;
69791    l_rec_acct_attrs.array_acct_attr_code(33) := 'GAIN_LOSS_REFERENCE';
69792    l_rec_acct_attrs.array_num_value(33)  :=  to_char(p_source_51);
69793    l_rec_acct_attrs.array_acct_attr_code(34) := 'LEDGER_AMOUNT';
69794    l_rec_acct_attrs.array_num_value(34)  := p_source_43;
69795 
69796    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
69797    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
69798 
69799    ---------------------------------------------------------------------------------------------------------------
69800    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
69801    ---------------------------------------------------------------------------------------------------------------
69802    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
69803 
69804    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69805    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
69806 
69807    IF xla_accounting_cache_pkg.GetValueChar
69808          (p_source_code         => 'LEDGER_CATEGORY_CODE'
69809          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
69810    AND l_bflow_method_code = 'PRIOR_ENTRY'
69811 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
69812    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
69813          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
69814        )
69815    THEN
69816          xla_ae_lines_pkg.BflowUpgEntry
69817            (p_business_method_code    => l_bflow_method_code
69818            ,p_business_class_code     => l_bflow_class_code
69819            ,p_balance_type            => l_balance_type_code);
69820    ELSE
69821       NULL;
69822 -- No business flow processing for business flow method of NONE.
69823    END IF;
69824 
69825    --
69826    -- call analytical criteria
69827    --
69828    
69829    --
69830    -- call description
69831    --
69832    -- No description or it is inherited.
69833    --
69834    -- call ADRs
69835    -- Bug 4922099
69836    --
69837    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
69838         (NVL(l_actual_upg_option, 'N') = 'O') OR
69839         (NVL(l_enc_upg_option, 'N') = 'O')
69840       )
69841    THEN
69842    NULL;
69843    --
69844    --
69845    
69846   l_ccid := AcctDerRule_28(
69847            p_application_id           => p_application_id
69848          , p_ae_header_id             => l_ae_header_id 
69849 , p_source_21 => p_source_21
69850          , x_transaction_coa_id       => l_adr_transaction_coa_id
69851          , x_accounting_coa_id        => l_adr_accounting_coa_id
69852          , x_value_type_code          => l_adr_value_type_code
69853          , p_side                     => 'NA'
69854    );
69855 
69856    xla_ae_lines_pkg.set_ccid(
69857     p_code_combination_id          => l_ccid
69858   , p_value_type_code              => l_adr_value_type_code
69859   , p_transaction_coa_id           => l_adr_transaction_coa_id
69860   , p_accounting_coa_id            => l_adr_accounting_coa_id
69861   , p_adr_code                     => 'UER_RULE'
69862   , p_adr_type_code                => 'S'
69863   , p_component_type               => l_component_type
69864   , p_component_code               => l_component_code
69865   , p_component_type_code          => l_component_type_code
69866   , p_component_appl_id            => l_component_appl_id
69867   , p_amb_context_code             => l_amb_context_code
69868   , p_side                         => 'NA'
69869   );
69870 
69871 
69872    --
69873    --
69874    END IF;
69875    --
69876    -- Bug 4922099
69877    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
69878           (NVL(l_enc_upg_option, 'N') = 'O')
69879         ) AND
69880         (l_bflow_method_code = 'PRIOR_ENTRY')
69881       )
69882    THEN
69883       IF
69884       --
69885       1 = 2
69886       --
69887       THEN
69888       xla_accounting_err_pkg.build_message
69889                                     (p_appli_s_name            => 'XLA'
69890                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69891                                     ,p_token_1                 => 'LINE_NUMBER'
69892                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
69893                                     ,p_token_2                 => 'LINE_TYPE_NAME'
69894                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
69895                                                                              l_component_type
69896                                                                             ,l_component_code
69897                                                                             ,l_component_type_code
69898                                                                             ,l_component_appl_id
69899                                                                             ,l_amb_context_code
69900                                                                             ,l_entity_code
69901                                                                             ,l_event_class_code
69902                                                                            )
69906                                                                           ,p_lookup_code    => l_component_type_code
69903                                     ,p_token_3                 => 'OWNER'
69904                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
69905                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
69907                                                                          )
69908                                     ,p_token_4                 => 'PRODUCT_NAME'
69909                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
69910                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
69911                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
69912                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
69913                                     ,p_ae_header_id            =>  NULL
69914                                        );
69915 
69916         IF (C_LEVEL_ERROR>= g_log_level) THEN
69917                  trace
69918                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
69919                       ,p_level    => C_LEVEL_ERROR
69920                       ,p_module   => l_log_module);
69921         END IF;
69922       END IF;
69923    END IF;
69924    --
69925    --
69926    ------------------------------------------------------------------------------------------------
69927    -- 4219869 Business Flow
69928    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
69929    -- Prior Entry.  Currently, the following code is always generated.
69930    ------------------------------------------------------------------------------------------------
69931    XLA_AE_LINES_PKG.ValidateCurrentLine;
69932 
69933    ------------------------------------------------------------------------------------
69934    -- 4219869 Business Flow
69935    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
69936    ------------------------------------------------------------------------------------
69937    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
69938 
69939    ----------------------------------------------------------------------------------
69940    -- 4219869 Business Flow
69941    -- Update journal entry status -- Need to generate this within IF <condition>
69942    ----------------------------------------------------------------------------------
69943    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
69944          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
69945          ,p_balance_type_code => l_balance_type_code
69946          );
69947 
69948    -------------------------------------------------------------------------------------------
69949    -- 4262811 - Generate the Accrual Reversal lines
69950    -------------------------------------------------------------------------------------------
69951    BEGIN
69952       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
69953                               (g_array_event(p_event_id).array_value_num('header_index'));
69954       IF l_acc_rev_flag IS NULL THEN
69955          l_acc_rev_flag := 'N';
69956       END IF;
69957    EXCEPTION
69958       WHEN OTHERS THEN
69959          l_acc_rev_flag := 'N';
69960    END;
69961    --
69962    IF (l_acc_rev_flag = 'Y') THEN
69963 
69964        -- 4645092  ------------------------------------------------------------------------------
69965        -- To allow MPA report to determine if it should generate report process
69966        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
69967        ------------------------------------------------------------------------------------------
69968 
69969        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
69970        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
69971 
69972        --
69973        -- Update the line information that should be overwritten
69974        --
69975        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
69976                                          p_header_num   => 1);
69977        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
69978 
69979        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
69980 
69981        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
69982           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
69983        END IF;
69984 
69985       --
69986       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
69987       --
69988       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
69989           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
69990       ELSE
69991           ---------------------------------------------------------------------------------------------------
69992           -- 4262811a Switch Sign
69993           ---------------------------------------------------------------------------------------------------
69994           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
69995           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69996                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69997           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
69998                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
69999           -- 5132302
70000           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70004 
70001                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70002 
70003       END IF;
70005       -- 4955764
70006       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70007       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70008 
70009 
70010       XLA_AE_LINES_PKG.ValidateCurrentLine;
70011       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70012 
70013       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70014                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70015                ,p_balance_type_code => l_balance_type_code);
70016 
70017    END IF;
70018 
70019    -----------------------------------------------------------------------------------------
70020    -- 4262811 Multiperiod Accounting
70021    -----------------------------------------------------------------------------------------
70022      -- No MPA option is assigned.
70023 
70024 
70025 END IF;
70026 END IF;
70027 --
70028 
70029 --
70030 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70031    trace
70032       (p_msg      => 'END of AcctLineType_140'
70033       ,p_level    => C_LEVEL_PROCEDURE
70034       ,p_module   => l_log_module);
70035 END IF;
70036 --
70037 EXCEPTION
70038   WHEN xla_exceptions_pkg.application_exception THEN
70039       RAISE;
70040   WHEN OTHERS THEN
70041        xla_exceptions_pkg.raise_message
70042            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_140');
70043 END AcctLineType_140;
70044 --
70045 
70046 ---------------------------------------
70047 --
70048 -- PRIVATE FUNCTION
70049 --         AcctLineType_141
70050 --
70051 ---------------------------------------
70052 PROCEDURE AcctLineType_141 (
70053   p_application_id        IN NUMBER
70054  ,p_event_id              IN NUMBER
70055  ,p_calculate_acctd_flag  IN VARCHAR2
70056  ,p_calculate_g_l_flag    IN VARCHAR2
70057  ,p_actual_flag           IN OUT VARCHAR2
70058  ,p_balance_type_code     OUT VARCHAR2
70059  ,p_gain_or_loss_ref      OUT VARCHAR2
70060  
70061 --Unearned Revenue CCID
70062  , p_source_21            IN NUMBER
70063 --Actual Upgrade Credit Accounting Class
70064  , p_source_24            IN VARCHAR2
70065 --Entered Currency Code
70066  , p_source_26            IN VARCHAR2
70067 --Exchange Rate Date
70068  , p_source_28            IN DATE
70069 --Exchange Rate
70070  , p_source_29            IN NUMBER
70071 --Exchange Rate Type
70072  , p_source_30            IN VARCHAR2
70073 --Actual Upgrade Debit Accounting Class
70074  , p_source_31            IN VARCHAR2
70075 --Use Actuals Upgrade Attributes Flag
70076  , p_source_32            IN VARCHAR2
70077 --Entered Amount
70078  , p_source_42            IN NUMBER
70079 --Accounted Amount
70080  , p_source_43            IN NUMBER
70081 --Revenue Distribution Type
70082  , p_source_46            IN VARCHAR2
70083 --Crediting Revenue Flag
70084  , p_source_48            IN VARCHAR2
70085 --Revenue First Distribution ID
70086  , p_source_49            IN NUMBER
70087 --Revenue Second Distribution ID
70088  , p_source_50            IN NUMBER
70089 --Event ID
70090  , p_source_51            IN NUMBER
70091 --Actual Upgrade Credit CCID
70092  , p_source_64            IN NUMBER
70093 --Actual Upgrade Debit CCID
70094  , p_source_65            IN NUMBER
70095 --Application ID
70096  , p_source_66            IN NUMBER
70097 --Revenue Entity Code
70098  , p_source_67            IN VARCHAR2
70099 --Crediting Revenue First Distribution ID
70100  , p_source_68            IN NUMBER
70101 --Project ID
70102  , p_source_69            IN NUMBER
70103 --Crediting Revenue Second Distribution ID
70104  , p_source_70            IN NUMBER
70105 --Draft Revenue Number Credited
70106  , p_source_71            IN NUMBER
70107 )
70108 IS
70109 
70110 l_component_type              VARCHAR2(80);
70111 l_component_code              VARCHAR2(30);
70112 l_component_type_code         VARCHAR2(1);
70113 l_component_appl_id           INTEGER;
70114 l_amb_context_code            VARCHAR2(30);
70115 l_entity_code                 VARCHAR2(30);
70116 l_event_class_code            VARCHAR2(30);
70117 l_ae_header_id                NUMBER;
70118 l_event_type_code             VARCHAR2(30);
70119 l_line_definition_code        VARCHAR2(30);
70120 l_line_definition_owner_code  VARCHAR2(1);
70121 --
70122 -- adr variables
70123 l_segment                     VARCHAR2(30);
70124 l_ccid                        NUMBER;
70125 l_adr_transaction_coa_id      NUMBER;
70126 l_adr_accounting_coa_id       NUMBER;
70127 l_adr_flexfield_segment_code  VARCHAR2(30);
70128 l_adr_flex_value_set_id       NUMBER;
70129 l_adr_value_type_code         VARCHAR2(30);
70130 l_adr_value_combination_id    NUMBER;
70131 l_adr_value_segment_code      VARCHAR2(30);
70132 
70133 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70134 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70135 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70136 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70137 
70138 -- 4262811 Variables ------------------------------------------------------------------------------------------
70139 l_entered_amt_idx             NUMBER;
70140 l_accted_amt_idx              NUMBER;
70141 l_acc_rev_flag                VARCHAR2(1);
70142 l_accrual_line_num            NUMBER;
70143 l_tmp_amt                     NUMBER;
70144 l_acc_rev_natural_side_code   VARCHAR2(1);
70145 
70146 l_num_entries                 NUMBER;
70147 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70151 l_recog_line_1                NUMBER;
70148 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70149 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70150 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70152 l_recog_line_2                NUMBER;
70153 
70154 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70155 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70156 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70157 
70158 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70159 
70160 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70161 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70162 
70163 ---------------------------------------------------------------------------------------------------------------
70164 
70165 
70166 --
70167 -- bulk performance
70168 --
70169 l_balance_type_code           VARCHAR2(1);
70170 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70171 l_log_module                  VARCHAR2(240);
70172 
70173 --
70174 -- Upgrade strategy
70175 --
70176 l_actual_upg_option           VARCHAR2(1);
70177 l_enc_upg_option           VARCHAR2(1);
70178 
70179 --
70180 BEGIN
70181 --
70182 IF g_log_enabled THEN
70183       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
70184 END IF;
70185 --
70186 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70187 
70188       trace
70189          (p_msg      => 'BEGIN of AcctLineType_141'
70190          ,p_level    => C_LEVEL_PROCEDURE
70191          ,p_module   => l_log_module);
70192 
70193 END IF;
70194 --
70195 l_component_type             := 'AMB_JLT';
70196 l_component_code             := 'PA_UER_ADJ_FED';
70197 l_component_type_code        := 'S';
70198 l_component_appl_id          :=  275;
70199 l_amb_context_code           := 'DEFAULT';
70200 l_entity_code                := 'REVENUE';
70201 l_event_class_code           := 'REVENUE_ADJ';
70202 l_event_type_code            := 'REVENUE_ADJ_ALL';
70203 l_line_definition_owner_code := 'S';
70204 l_line_definition_code       := 'FV_PROJECTS_JLD';
70205 --
70206 l_balance_type_code          := 'A';
70207 l_segment                     := NULL;
70208 l_ccid                        := NULL;
70209 l_adr_transaction_coa_id      := NULL;
70210 l_adr_accounting_coa_id       := NULL;
70211 l_adr_flexfield_segment_code  := NULL;
70212 l_adr_flex_value_set_id       := NULL;
70213 l_adr_value_type_code         := NULL;
70214 l_adr_value_combination_id    := NULL;
70215 l_adr_value_segment_code      := NULL;
70216 
70217 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70218 l_bflow_class_code           := '';    -- 4219869 Business Flow
70219 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70220 l_budgetary_control_flag     := 'N';
70221 
70222 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70223 l_bflow_applied_to_amt       := NULL; -- 5132302
70224 l_entered_amt_idx            := NULL;          -- 4262811
70225 l_accted_amt_idx             := NULL;          -- 4262811
70226 l_acc_rev_flag               := NULL;          -- 4262811
70227 l_accrual_line_num           := NULL;          -- 4262811
70228 l_tmp_amt                    := NULL;          -- 4262811
70229 --
70230  
70231 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70232     l_balance_type_code <> 'B' THEN
70233 IF NVL(p_source_46,'
70234 ') =  'Revenue - UER' AND 
70235 NVL(p_source_48,'
70236 ') =  'Y'
70237  THEN 
70238 
70239    --
70240    XLA_AE_LINES_PKG.SetNewLine;
70241 
70242    p_balance_type_code          := l_balance_type_code;
70243    -- set the flag so later we will know whether the gain loss line needs to be created
70244    
70245    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70246      p_actual_flag :='A';
70247    END IF;
70248 
70249    --
70250    -- bulk performance
70251    --
70252    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70253                                       p_header_num   => 0); -- 4262811
70254    --
70255    -- set accounting line options
70256    --
70257    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70258            p_natural_side_code          => 'C'
70259          , p_gain_or_loss_flag          => 'N'
70260          , p_gl_transfer_mode_code      => 'S'
70261          , p_acct_entry_type_code       => 'A'
70262          , p_switch_side_flag           => 'Y'
70263          , p_merge_duplicate_code       => 'N'
70264          );
70265    --
70266    l_acc_rev_natural_side_code := 'D';  -- 4262811
70267    -- 
70268    --
70269    -- set accounting line type info
70270    --
70271    xla_ae_lines_pkg.SetAcctLineType
70272       (p_component_type             => l_component_type
70273       ,p_event_type_code            => l_event_type_code
70274       ,p_line_definition_owner_code => l_line_definition_owner_code
70275       ,p_line_definition_code       => l_line_definition_code
70276       ,p_accounting_line_code       => l_component_code
70277       ,p_accounting_line_type_code  => l_component_type_code
70278       ,p_accounting_line_appl_id    => l_component_appl_id
70279       ,p_amb_context_code           => l_amb_context_code
70280       ,p_entity_code                => l_entity_code
70281       ,p_event_class_code           => l_event_class_code);
70282    --
70283    -- set accounting class
70284    --
70285    xla_ae_lines_pkg.SetAcctClass(
70286            p_accounting_class_code  => 'FEDERAL_UNEARNED_REVENUE_AD'
70287          , p_ae_header_id           => l_ae_header_id
70288          );
70289 
70293    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70290    --
70291    -- set rounding class
70292    --
70294                       'FEDERAL_UNEARNED_REVENUE_AD';
70295 
70296    --
70297    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70298    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70299    --
70300    -- bulk performance
70301    --
70302    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70303 
70304    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70305       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70306 
70307    -- 4955764
70308    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70309       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70310 
70311    -- 4458381 Public Sector Enh
70312    
70313    --
70314    -- set accounting attributes for the line type
70315    --
70316    l_entered_amt_idx := 28;
70317    l_accted_amt_idx  := 31;
70318    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70319    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACTUAL_UPG_CR_ACCT_CLASS';
70320    l_rec_acct_attrs.array_char_value(1)  := p_source_24;
70321    l_rec_acct_attrs.array_acct_attr_code(2) := 'ACTUAL_UPG_CR_CCID';
70322    l_rec_acct_attrs.array_num_value(2)  := TO_NUMBER(p_source_64);
70323    l_rec_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ENTERED_AMT';
70324    l_rec_acct_attrs.array_num_value(3)  := p_source_42;
70325    l_rec_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_ENTERED_CURR';
70326    l_rec_acct_attrs.array_char_value(4)  := p_source_26;
70327    l_rec_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_LEDGER_AMT';
70328    l_rec_acct_attrs.array_num_value(5)  := p_source_43;
70329    l_rec_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_XDATE';
70330    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
70331    l_rec_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_XRATE';
70332    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
70333    l_rec_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XRATE_TYPE';
70334    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
70335    l_rec_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_DR_ACCT_CLASS';
70336    l_rec_acct_attrs.array_char_value(9)  := p_source_31;
70337    l_rec_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_DR_CCID';
70338    l_rec_acct_attrs.array_num_value(10)  := TO_NUMBER(p_source_65);
70339    l_rec_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ENTERED_AMT';
70340    l_rec_acct_attrs.array_num_value(11)  := p_source_42;
70341    l_rec_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_ENTERED_CURR';
70342    l_rec_acct_attrs.array_char_value(12)  := p_source_26;
70343    l_rec_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_LEDGER_AMT';
70344    l_rec_acct_attrs.array_num_value(13)  := p_source_43;
70345    l_rec_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_XDATE';
70346    l_rec_acct_attrs.array_date_value(14)  := p_source_28;
70347    l_rec_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_XRATE';
70348    l_rec_acct_attrs.array_num_value(15)  := p_source_29;
70349    l_rec_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XRATE_TYPE';
70350    l_rec_acct_attrs.array_char_value(16)  := p_source_30;
70351    l_rec_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_OPTION';
70352    l_rec_acct_attrs.array_char_value(17)  := p_source_32;
70353    l_rec_acct_attrs.array_acct_attr_code(18) := 'APPLIED_TO_APPLICATION_ID';
70354    l_rec_acct_attrs.array_num_value(18)  := p_source_66;
70355    l_rec_acct_attrs.array_acct_attr_code(19) := 'APPLIED_TO_DISTRIBUTION_TYPE';
70356    l_rec_acct_attrs.array_char_value(19)  := p_source_46;
70357    l_rec_acct_attrs.array_acct_attr_code(20) := 'APPLIED_TO_ENTITY_CODE';
70358    l_rec_acct_attrs.array_char_value(20)  := p_source_67;
70359    l_rec_acct_attrs.array_acct_attr_code(21) := 'APPLIED_TO_FIRST_DIST_ID';
70360    l_rec_acct_attrs.array_num_value(21)  :=  to_char(p_source_68);
70361    l_rec_acct_attrs.array_acct_attr_code(22) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
70362    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_69);
70363    l_rec_acct_attrs.array_acct_attr_code(23) := 'APPLIED_TO_SECOND_DIST_ID';
70364    l_rec_acct_attrs.array_num_value(23)  :=  to_char(p_source_70);
70365    l_rec_acct_attrs.array_acct_attr_code(24) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
70366    l_rec_acct_attrs.array_num_value(24)  :=  to_char(p_source_71);
70367    l_rec_acct_attrs.array_acct_attr_code(25) := 'DISTRIBUTION_IDENTIFIER_1';
70368    l_rec_acct_attrs.array_num_value(25)  :=  to_char(p_source_49);
70369    l_rec_acct_attrs.array_acct_attr_code(26) := 'DISTRIBUTION_IDENTIFIER_2';
70370    l_rec_acct_attrs.array_num_value(26)  :=  to_char(p_source_50);
70371    l_rec_acct_attrs.array_acct_attr_code(27) := 'DISTRIBUTION_TYPE';
70372    l_rec_acct_attrs.array_char_value(27)  := p_source_46;
70373    l_rec_acct_attrs.array_acct_attr_code(28) := 'ENTERED_CURRENCY_AMOUNT';
70374    l_rec_acct_attrs.array_num_value(28)  := p_source_42;
70375    l_rec_acct_attrs.array_acct_attr_code(29) := 'ENTERED_CURRENCY_CODE';
70376    l_rec_acct_attrs.array_char_value(29)  := p_source_26;
70377    l_rec_acct_attrs.array_acct_attr_code(30) := 'GAIN_LOSS_REFERENCE';
70378    l_rec_acct_attrs.array_num_value(30)  :=  to_char(p_source_51);
70379    l_rec_acct_attrs.array_acct_attr_code(31) := 'LEDGER_AMOUNT';
70380    l_rec_acct_attrs.array_num_value(31)  := p_source_43;
70381 
70382    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70383    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70384 
70385    ---------------------------------------------------------------------------------------------------------------
70386    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70390    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70387    ---------------------------------------------------------------------------------------------------------------
70388    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70389 
70391    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70392 
70393    IF xla_accounting_cache_pkg.GetValueChar
70394          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70395          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70396    AND l_bflow_method_code = 'PRIOR_ENTRY'
70397 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70398    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70399          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70400        )
70401    THEN
70402          xla_ae_lines_pkg.BflowUpgEntry
70403            (p_business_method_code    => l_bflow_method_code
70404            ,p_business_class_code     => l_bflow_class_code
70405            ,p_balance_type            => l_balance_type_code);
70406    ELSE
70407       NULL;
70408 -- No business flow processing for business flow method of NONE.
70409    END IF;
70410 
70411    --
70412    -- call analytical criteria
70413    --
70414    
70415    --
70416    -- call description
70417    --
70418    -- No description or it is inherited.
70419    --
70420    -- call ADRs
70421    -- Bug 4922099
70422    --
70423    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70424         (NVL(l_actual_upg_option, 'N') = 'O') OR
70425         (NVL(l_enc_upg_option, 'N') = 'O')
70426       )
70427    THEN
70428    NULL;
70429    --
70430    --
70431    
70432   l_ccid := AcctDerRule_28(
70433            p_application_id           => p_application_id
70434          , p_ae_header_id             => l_ae_header_id 
70435 , p_source_21 => p_source_21
70436          , x_transaction_coa_id       => l_adr_transaction_coa_id
70437          , x_accounting_coa_id        => l_adr_accounting_coa_id
70438          , x_value_type_code          => l_adr_value_type_code
70439          , p_side                     => 'NA'
70440    );
70441 
70442    xla_ae_lines_pkg.set_ccid(
70443     p_code_combination_id          => l_ccid
70444   , p_value_type_code              => l_adr_value_type_code
70445   , p_transaction_coa_id           => l_adr_transaction_coa_id
70446   , p_accounting_coa_id            => l_adr_accounting_coa_id
70447   , p_adr_code                     => 'UER_RULE'
70448   , p_adr_type_code                => 'S'
70449   , p_component_type               => l_component_type
70450   , p_component_code               => l_component_code
70451   , p_component_type_code          => l_component_type_code
70452   , p_component_appl_id            => l_component_appl_id
70453   , p_amb_context_code             => l_amb_context_code
70454   , p_side                         => 'NA'
70455   );
70456 
70457 
70458    l_segment := AcctDerRule_3(
70459            p_application_id           => p_application_id
70460          , p_ae_header_id             => l_ae_header_id 
70461          , x_transaction_coa_id       => l_adr_transaction_coa_id
70462          , x_accounting_coa_id        => l_adr_accounting_coa_id
70463          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
70464          , x_flex_value_set_id        => l_adr_flex_value_set_id
70465          , x_value_type_code          => l_adr_value_type_code
70466          , x_value_combination_id     => l_adr_value_combination_id
70467          , x_value_segment_code       => l_adr_value_segment_code
70468          , p_side                     => 'NA'
70469          , p_override_seg_flag        => 'Y'
70470    );
70471 
70472    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
70473 
70474       xla_ae_lines_pkg.set_segment(
70475           p_to_segment_code         => 'GL_ACCOUNT'
70476         , p_segment_value           => l_segment
70477         , p_from_segment_code       => l_adr_value_segment_code
70478         , p_from_combination_id     => l_adr_value_combination_id
70479         , p_value_type_code         => l_adr_value_type_code
70480         , p_transaction_coa_id      => l_adr_transaction_coa_id
70481         , p_accounting_coa_id       => l_adr_accounting_coa_id
70482         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
70483         , p_flex_value_set_id       => l_adr_flex_value_set_id
70484         , p_adr_code                => 'FV_425X01_PROJECTS'
70485         , p_adr_type_code           => 'S'
70486         , p_component_type          => l_component_type
70487         , p_component_code          => l_component_code
70488         , p_component_type_code     => l_component_type_code
70489         , p_component_appl_id       => l_component_appl_id
70490         , p_amb_context_code        => l_amb_context_code
70491         , p_entity_code             => 'REVENUE'
70492         , p_event_class_code        => 'REVENUE_ADJ'
70493         , p_side                    => 'NA'
70494         );
70495 
70496   END IF;
70497 
70498    --
70499    --
70500    END IF;
70501    --
70502    -- Bug 4922099
70503    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
70504           (NVL(l_enc_upg_option, 'N') = 'O')
70505         ) AND
70506         (l_bflow_method_code = 'PRIOR_ENTRY')
70507       )
70508    THEN
70509       IF
70510       --
70511       1 = 2
70512       --
70513       THEN
70514       xla_accounting_err_pkg.build_message
70515                                     (p_appli_s_name            => 'XLA'
70516                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70517                                     ,p_token_1                 => 'LINE_NUMBER'
70521                                                                              l_component_type
70518                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
70519                                     ,p_token_2                 => 'LINE_TYPE_NAME'
70520                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
70522                                                                             ,l_component_code
70523                                                                             ,l_component_type_code
70524                                                                             ,l_component_appl_id
70525                                                                             ,l_amb_context_code
70526                                                                             ,l_entity_code
70527                                                                             ,l_event_class_code
70528                                                                            )
70529                                     ,p_token_3                 => 'OWNER'
70530                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
70531                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
70532                                                                           ,p_lookup_code    => l_component_type_code
70533                                                                          )
70534                                     ,p_token_4                 => 'PRODUCT_NAME'
70535                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
70536                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
70537                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
70538                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
70539                                     ,p_ae_header_id            =>  NULL
70540                                        );
70541 
70542         IF (C_LEVEL_ERROR>= g_log_level) THEN
70543                  trace
70544                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
70545                       ,p_level    => C_LEVEL_ERROR
70546                       ,p_module   => l_log_module);
70547         END IF;
70548       END IF;
70549    END IF;
70550    --
70551    --
70552    ------------------------------------------------------------------------------------------------
70553    -- 4219869 Business Flow
70554    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
70555    -- Prior Entry.  Currently, the following code is always generated.
70556    ------------------------------------------------------------------------------------------------
70557    XLA_AE_LINES_PKG.ValidateCurrentLine;
70558 
70559    ------------------------------------------------------------------------------------
70560    -- 4219869 Business Flow
70561    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
70562    ------------------------------------------------------------------------------------
70563    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70564 
70565    ----------------------------------------------------------------------------------
70566    -- 4219869 Business Flow
70567    -- Update journal entry status -- Need to generate this within IF <condition>
70568    ----------------------------------------------------------------------------------
70569    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70570          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
70571          ,p_balance_type_code => l_balance_type_code
70572          );
70573 
70574    -------------------------------------------------------------------------------------------
70575    -- 4262811 - Generate the Accrual Reversal lines
70576    -------------------------------------------------------------------------------------------
70577    BEGIN
70578       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
70579                               (g_array_event(p_event_id).array_value_num('header_index'));
70580       IF l_acc_rev_flag IS NULL THEN
70581          l_acc_rev_flag := 'N';
70582       END IF;
70583    EXCEPTION
70584       WHEN OTHERS THEN
70585          l_acc_rev_flag := 'N';
70586    END;
70587    --
70588    IF (l_acc_rev_flag = 'Y') THEN
70589 
70590        -- 4645092  ------------------------------------------------------------------------------
70591        -- To allow MPA report to determine if it should generate report process
70592        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
70593        ------------------------------------------------------------------------------------------
70594 
70595        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
70596        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
70597 
70598        --
70599        -- Update the line information that should be overwritten
70600        --
70601        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
70602                                          p_header_num   => 1);
70603        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
70604 
70605        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
70606 
70607        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
70608           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
70609        END IF;
70610 
70611       --
70612       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
70613       --
70614       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
70618           -- 4262811a Switch Sign
70615           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
70616       ELSE
70617           ---------------------------------------------------------------------------------------------------
70619           ---------------------------------------------------------------------------------------------------
70620           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
70621           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70622                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70623           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
70624                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70625           -- 5132302
70626           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
70627                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
70628 
70629       END IF;
70630 
70631       -- 4955764
70632       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70633       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
70634 
70635 
70636       XLA_AE_LINES_PKG.ValidateCurrentLine;
70637       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
70638 
70639       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
70640                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
70641                ,p_balance_type_code => l_balance_type_code);
70642 
70643    END IF;
70644 
70645    -----------------------------------------------------------------------------------------
70646    -- 4262811 Multiperiod Accounting
70647    -----------------------------------------------------------------------------------------
70648      -- No MPA option is assigned.
70649 
70650 
70651 END IF;
70652 END IF;
70653 --
70654 
70655 --
70656 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70657    trace
70658       (p_msg      => 'END of AcctLineType_141'
70659       ,p_level    => C_LEVEL_PROCEDURE
70660       ,p_module   => l_log_module);
70661 END IF;
70662 --
70663 EXCEPTION
70664   WHEN xla_exceptions_pkg.application_exception THEN
70665       RAISE;
70666   WHEN OTHERS THEN
70667        xla_exceptions_pkg.raise_message
70668            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_141');
70669 END AcctLineType_141;
70670 --
70671 
70672 ---------------------------------------
70673 --
70674 -- PRIVATE FUNCTION
70675 --         AcctLineType_142
70676 --
70677 ---------------------------------------
70678 PROCEDURE AcctLineType_142 (
70679   p_application_id        IN NUMBER
70680  ,p_event_id              IN NUMBER
70681  ,p_calculate_acctd_flag  IN VARCHAR2
70682  ,p_calculate_g_l_flag    IN VARCHAR2
70683  ,p_actual_flag           IN OUT VARCHAR2
70684  ,p_balance_type_code     OUT VARCHAR2
70685  ,p_gain_or_loss_ref      OUT VARCHAR2
70686  
70687 --Unearned Revenue CCID
70688  , p_source_21            IN NUMBER
70689 --Entered Currency Code
70690  , p_source_26            IN VARCHAR2
70691 --Entered Amount
70692  , p_source_42            IN NUMBER
70693 --Accounted Amount
70694  , p_source_43            IN NUMBER
70695 --Revenue Distribution Type
70696  , p_source_46            IN VARCHAR2
70697 --Crediting Revenue Flag
70698  , p_source_48            IN VARCHAR2
70699 --Revenue First Distribution ID
70700  , p_source_49            IN NUMBER
70701 --Revenue Second Distribution ID
70702  , p_source_50            IN NUMBER
70703 --Event ID
70704  , p_source_51            IN NUMBER
70705 )
70706 IS
70707 
70708 l_component_type              VARCHAR2(80);
70709 l_component_code              VARCHAR2(30);
70710 l_component_type_code         VARCHAR2(1);
70711 l_component_appl_id           INTEGER;
70712 l_amb_context_code            VARCHAR2(30);
70713 l_entity_code                 VARCHAR2(30);
70714 l_event_class_code            VARCHAR2(30);
70715 l_ae_header_id                NUMBER;
70716 l_event_type_code             VARCHAR2(30);
70717 l_line_definition_code        VARCHAR2(30);
70718 l_line_definition_owner_code  VARCHAR2(1);
70719 --
70720 -- adr variables
70721 l_segment                     VARCHAR2(30);
70722 l_ccid                        NUMBER;
70723 l_adr_transaction_coa_id      NUMBER;
70724 l_adr_accounting_coa_id       NUMBER;
70725 l_adr_flexfield_segment_code  VARCHAR2(30);
70726 l_adr_flex_value_set_id       NUMBER;
70727 l_adr_value_type_code         VARCHAR2(30);
70728 l_adr_value_combination_id    NUMBER;
70729 l_adr_value_segment_code      VARCHAR2(30);
70730 
70731 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
70732 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
70733 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
70734 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
70735 
70736 -- 4262811 Variables ------------------------------------------------------------------------------------------
70737 l_entered_amt_idx             NUMBER;
70738 l_accted_amt_idx              NUMBER;
70739 l_acc_rev_flag                VARCHAR2(1);
70740 l_accrual_line_num            NUMBER;
70741 l_tmp_amt                     NUMBER;
70742 l_acc_rev_natural_side_code   VARCHAR2(1);
70743 
70744 l_num_entries                 NUMBER;
70745 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
70746 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
70747 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
70751 
70748 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
70749 l_recog_line_1                NUMBER;
70750 l_recog_line_2                NUMBER;
70752 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
70753 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
70754 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
70755 
70756 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
70757 
70758 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
70759 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
70760 
70761 ---------------------------------------------------------------------------------------------------------------
70762 
70763 
70764 --
70765 -- bulk performance
70766 --
70767 l_balance_type_code           VARCHAR2(1);
70768 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
70769 l_log_module                  VARCHAR2(240);
70770 
70771 --
70772 -- Upgrade strategy
70773 --
70774 l_actual_upg_option           VARCHAR2(1);
70775 l_enc_upg_option           VARCHAR2(1);
70776 
70777 --
70778 BEGIN
70779 --
70780 IF g_log_enabled THEN
70781       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
70782 END IF;
70783 --
70784 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70785 
70786       trace
70787          (p_msg      => 'BEGIN of AcctLineType_142'
70788          ,p_level    => C_LEVEL_PROCEDURE
70789          ,p_module   => l_log_module);
70790 
70791 END IF;
70792 --
70793 l_component_type             := 'AMB_JLT';
70794 l_component_code             := 'PA_UER_FED';
70795 l_component_type_code        := 'S';
70796 l_component_appl_id          :=  275;
70797 l_amb_context_code           := 'DEFAULT';
70798 l_entity_code                := 'REVENUE';
70799 l_event_class_code           := 'REVENUE';
70800 l_event_type_code            := 'REVENUE_ALL';
70801 l_line_definition_owner_code := 'S';
70802 l_line_definition_code       := 'FV_PROJECTS_JLD';
70803 --
70804 l_balance_type_code          := 'A';
70805 l_segment                     := NULL;
70806 l_ccid                        := NULL;
70807 l_adr_transaction_coa_id      := NULL;
70808 l_adr_accounting_coa_id       := NULL;
70809 l_adr_flexfield_segment_code  := NULL;
70810 l_adr_flex_value_set_id       := NULL;
70811 l_adr_value_type_code         := NULL;
70812 l_adr_value_combination_id    := NULL;
70813 l_adr_value_segment_code      := NULL;
70814 
70815 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
70816 l_bflow_class_code           := '';    -- 4219869 Business Flow
70817 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
70818 l_budgetary_control_flag     := 'N';
70819 
70820 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
70821 l_bflow_applied_to_amt       := NULL; -- 5132302
70822 l_entered_amt_idx            := NULL;          -- 4262811
70823 l_accted_amt_idx             := NULL;          -- 4262811
70824 l_acc_rev_flag               := NULL;          -- 4262811
70825 l_accrual_line_num           := NULL;          -- 4262811
70826 l_tmp_amt                    := NULL;          -- 4262811
70827 --
70828  
70829 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
70830     l_balance_type_code <> 'B' THEN
70831 IF NVL(p_source_46,'
70832 ') =  'Revenue - UER' AND 
70833 NVL(p_source_48,'
70834 ') =  'N'
70835  THEN 
70836 
70837    --
70838    XLA_AE_LINES_PKG.SetNewLine;
70839 
70840    p_balance_type_code          := l_balance_type_code;
70841    -- set the flag so later we will know whether the gain loss line needs to be created
70842    
70843    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
70844      p_actual_flag :='A';
70845    END IF;
70846 
70847    --
70848    -- bulk performance
70849    --
70850    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
70851                                       p_header_num   => 0); -- 4262811
70852    --
70853    -- set accounting line options
70854    --
70855    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
70856            p_natural_side_code          => 'D'
70857          , p_gain_or_loss_flag          => 'N'
70858          , p_gl_transfer_mode_code      => 'S'
70859          , p_acct_entry_type_code       => 'A'
70860          , p_switch_side_flag           => 'Y'
70861          , p_merge_duplicate_code       => 'N'
70862          );
70863    --
70864    l_acc_rev_natural_side_code := 'C';  -- 4262811
70865    -- 
70866    --
70867    -- set accounting line type info
70868    --
70869    xla_ae_lines_pkg.SetAcctLineType
70870       (p_component_type             => l_component_type
70871       ,p_event_type_code            => l_event_type_code
70872       ,p_line_definition_owner_code => l_line_definition_owner_code
70873       ,p_line_definition_code       => l_line_definition_code
70874       ,p_accounting_line_code       => l_component_code
70875       ,p_accounting_line_type_code  => l_component_type_code
70876       ,p_accounting_line_appl_id    => l_component_appl_id
70877       ,p_amb_context_code           => l_amb_context_code
70878       ,p_entity_code                => l_entity_code
70879       ,p_event_class_code           => l_event_class_code);
70880    --
70881    -- set accounting class
70882    --
70883    xla_ae_lines_pkg.SetAcctClass(
70884            p_accounting_class_code  => 'FEDERAL_UNEARNED_REVENUE'
70885          , p_ae_header_id           => l_ae_header_id
70886          );
70887 
70888    --
70889    -- set rounding class
70890    --
70891    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
70895    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
70892                       'FEDERAL_UNEARNED_REVENUE';
70893 
70894    --
70896    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
70897    --
70898    -- bulk performance
70899    --
70900    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
70901 
70902    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
70903       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
70904 
70905    -- 4955764
70906    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
70907       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
70908 
70909    -- 4458381 Public Sector Enh
70910    
70911    --
70912    -- set accounting attributes for the line type
70913    --
70914    l_entered_amt_idx := 4;
70915    l_accted_amt_idx  := 7;
70916    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
70917    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
70918    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
70919    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
70920    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
70921    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
70922    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
70923    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
70924    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
70925    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
70926    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
70927    l_rec_acct_attrs.array_acct_attr_code(6) := 'GAIN_LOSS_REFERENCE';
70928    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_51);
70929    l_rec_acct_attrs.array_acct_attr_code(7) := 'LEDGER_AMOUNT';
70930    l_rec_acct_attrs.array_num_value(7)  := p_source_43;
70931 
70932    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
70933    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
70934 
70935    ---------------------------------------------------------------------------------------------------------------
70936    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
70937    ---------------------------------------------------------------------------------------------------------------
70938    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
70939 
70940    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70941    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
70942 
70943    IF xla_accounting_cache_pkg.GetValueChar
70944          (p_source_code         => 'LEDGER_CATEGORY_CODE'
70945          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
70946    AND l_bflow_method_code = 'PRIOR_ENTRY'
70947 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
70948    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
70949          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
70950        )
70951    THEN
70952          xla_ae_lines_pkg.BflowUpgEntry
70953            (p_business_method_code    => l_bflow_method_code
70954            ,p_business_class_code     => l_bflow_class_code
70955            ,p_balance_type            => l_balance_type_code);
70956    ELSE
70957       NULL;
70958 -- No business flow processing for business flow method of NONE.
70959    END IF;
70960 
70961    --
70962    -- call analytical criteria
70963    --
70964    
70965    --
70966    -- call description
70967    --
70968    -- No description or it is inherited.
70969    --
70970    -- call ADRs
70971    -- Bug 4922099
70972    --
70973    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
70974         (NVL(l_actual_upg_option, 'N') = 'O') OR
70975         (NVL(l_enc_upg_option, 'N') = 'O')
70976       )
70977    THEN
70978    NULL;
70979    --
70980    --
70981    
70982   l_ccid := AcctDerRule_28(
70983            p_application_id           => p_application_id
70984          , p_ae_header_id             => l_ae_header_id 
70985 , p_source_21 => p_source_21
70986          , x_transaction_coa_id       => l_adr_transaction_coa_id
70987          , x_accounting_coa_id        => l_adr_accounting_coa_id
70988          , x_value_type_code          => l_adr_value_type_code
70989          , p_side                     => 'NA'
70990    );
70991 
70992    xla_ae_lines_pkg.set_ccid(
70993     p_code_combination_id          => l_ccid
70994   , p_value_type_code              => l_adr_value_type_code
70995   , p_transaction_coa_id           => l_adr_transaction_coa_id
70996   , p_accounting_coa_id            => l_adr_accounting_coa_id
70997   , p_adr_code                     => 'UER_RULE'
70998   , p_adr_type_code                => 'S'
70999   , p_component_type               => l_component_type
71000   , p_component_code               => l_component_code
71001   , p_component_type_code          => l_component_type_code
71002   , p_component_appl_id            => l_component_appl_id
71003   , p_amb_context_code             => l_amb_context_code
71004   , p_side                         => 'NA'
71005   );
71006 
71007 
71008    l_segment := AcctDerRule_3(
71009            p_application_id           => p_application_id
71010          , p_ae_header_id             => l_ae_header_id 
71011          , x_transaction_coa_id       => l_adr_transaction_coa_id
71012          , x_accounting_coa_id        => l_adr_accounting_coa_id
71013          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
71017          , x_value_segment_code       => l_adr_value_segment_code
71014          , x_flex_value_set_id        => l_adr_flex_value_set_id
71015          , x_value_type_code          => l_adr_value_type_code
71016          , x_value_combination_id     => l_adr_value_combination_id
71018          , p_side                     => 'NA'
71019          , p_override_seg_flag        => 'Y'
71020    );
71021 
71022    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
71023 
71024       xla_ae_lines_pkg.set_segment(
71025           p_to_segment_code         => 'GL_ACCOUNT'
71026         , p_segment_value           => l_segment
71027         , p_from_segment_code       => l_adr_value_segment_code
71028         , p_from_combination_id     => l_adr_value_combination_id
71029         , p_value_type_code         => l_adr_value_type_code
71030         , p_transaction_coa_id      => l_adr_transaction_coa_id
71031         , p_accounting_coa_id       => l_adr_accounting_coa_id
71032         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
71033         , p_flex_value_set_id       => l_adr_flex_value_set_id
71034         , p_adr_code                => 'FV_425X01_PROJECTS'
71035         , p_adr_type_code           => 'S'
71036         , p_component_type          => l_component_type
71037         , p_component_code          => l_component_code
71038         , p_component_type_code     => l_component_type_code
71039         , p_component_appl_id       => l_component_appl_id
71040         , p_amb_context_code        => l_amb_context_code
71041         , p_entity_code             => 'REVENUE'
71042         , p_event_class_code        => 'REVENUE'
71043         , p_side                    => 'NA'
71044         );
71045 
71046   END IF;
71047 
71048    --
71049    --
71050    END IF;
71051    --
71052    -- Bug 4922099
71053    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71054           (NVL(l_enc_upg_option, 'N') = 'O')
71055         ) AND
71056         (l_bflow_method_code = 'PRIOR_ENTRY')
71057       )
71058    THEN
71059       IF
71060       --
71061       1 = 2
71062       --
71063       THEN
71064       xla_accounting_err_pkg.build_message
71065                                     (p_appli_s_name            => 'XLA'
71066                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71067                                     ,p_token_1                 => 'LINE_NUMBER'
71068                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
71069                                     ,p_token_2                 => 'LINE_TYPE_NAME'
71070                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
71071                                                                              l_component_type
71072                                                                             ,l_component_code
71073                                                                             ,l_component_type_code
71074                                                                             ,l_component_appl_id
71075                                                                             ,l_amb_context_code
71076                                                                             ,l_entity_code
71077                                                                             ,l_event_class_code
71078                                                                            )
71079                                     ,p_token_3                 => 'OWNER'
71080                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
71081                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
71082                                                                           ,p_lookup_code    => l_component_type_code
71083                                                                          )
71084                                     ,p_token_4                 => 'PRODUCT_NAME'
71085                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71086                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71087                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71088                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71089                                     ,p_ae_header_id            =>  NULL
71090                                        );
71091 
71092         IF (C_LEVEL_ERROR>= g_log_level) THEN
71093                  trace
71094                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71095                       ,p_level    => C_LEVEL_ERROR
71096                       ,p_module   => l_log_module);
71097         END IF;
71098       END IF;
71099    END IF;
71100    --
71101    --
71102    ------------------------------------------------------------------------------------------------
71103    -- 4219869 Business Flow
71104    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71105    -- Prior Entry.  Currently, the following code is always generated.
71106    ------------------------------------------------------------------------------------------------
71107    XLA_AE_LINES_PKG.ValidateCurrentLine;
71108 
71109    ------------------------------------------------------------------------------------
71110    -- 4219869 Business Flow
71111    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71112    ------------------------------------------------------------------------------------
71113    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71114 
71115    ----------------------------------------------------------------------------------
71116    -- 4219869 Business Flow
71117    -- Update journal entry status -- Need to generate this within IF <condition>
71121          ,p_balance_type_code => l_balance_type_code
71118    ----------------------------------------------------------------------------------
71119    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71120          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71122          );
71123 
71124    -------------------------------------------------------------------------------------------
71125    -- 4262811 - Generate the Accrual Reversal lines
71126    -------------------------------------------------------------------------------------------
71127    BEGIN
71128       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71129                               (g_array_event(p_event_id).array_value_num('header_index'));
71130       IF l_acc_rev_flag IS NULL THEN
71131          l_acc_rev_flag := 'N';
71132       END IF;
71133    EXCEPTION
71134       WHEN OTHERS THEN
71135          l_acc_rev_flag := 'N';
71136    END;
71137    --
71138    IF (l_acc_rev_flag = 'Y') THEN
71139 
71140        -- 4645092  ------------------------------------------------------------------------------
71141        -- To allow MPA report to determine if it should generate report process
71142        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71143        ------------------------------------------------------------------------------------------
71144 
71145        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71146        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71147 
71148        --
71149        -- Update the line information that should be overwritten
71150        --
71151        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71152                                          p_header_num   => 1);
71153        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71154 
71155        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71156 
71157        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71158           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71159        END IF;
71160 
71161       --
71162       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71163       --
71164       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71165           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71166       ELSE
71167           ---------------------------------------------------------------------------------------------------
71168           -- 4262811a Switch Sign
71169           ---------------------------------------------------------------------------------------------------
71170           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71171           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71172                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71173           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71174                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71175           -- 5132302
71176           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71177                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71178 
71179       END IF;
71180 
71181       -- 4955764
71182       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71183       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71184 
71185 
71186       XLA_AE_LINES_PKG.ValidateCurrentLine;
71187       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71188 
71189       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71190                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71191                ,p_balance_type_code => l_balance_type_code);
71192 
71193    END IF;
71194 
71195    -----------------------------------------------------------------------------------------
71196    -- 4262811 Multiperiod Accounting
71197    -----------------------------------------------------------------------------------------
71198      -- No MPA option is assigned.
71199 
71200 
71201 END IF;
71202 END IF;
71203 --
71204 
71205 --
71206 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71207    trace
71208       (p_msg      => 'END of AcctLineType_142'
71209       ,p_level    => C_LEVEL_PROCEDURE
71210       ,p_module   => l_log_module);
71211 END IF;
71212 --
71213 EXCEPTION
71214   WHEN xla_exceptions_pkg.application_exception THEN
71215       RAISE;
71216   WHEN OTHERS THEN
71217        xla_exceptions_pkg.raise_message
71218            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_142');
71219 END AcctLineType_142;
71220 --
71221 
71222 ---------------------------------------
71223 --
71224 -- PRIVATE FUNCTION
71225 --         AcctLineType_143
71226 --
71227 ---------------------------------------
71228 PROCEDURE AcctLineType_143 (
71229   p_application_id        IN NUMBER
71230  ,p_event_id              IN NUMBER
71231  ,p_calculate_acctd_flag  IN VARCHAR2
71232  ,p_calculate_g_l_flag    IN VARCHAR2
71233  ,p_actual_flag           IN OUT VARCHAR2
71234  ,p_balance_type_code     OUT VARCHAR2
71235  ,p_gain_or_loss_ref      OUT VARCHAR2
71236  
71237 --Budget Code Combination ID
71238  , p_source_3            IN NUMBER
71239 --Reversing Line Flag
71240  , p_source_23            IN VARCHAR2
71241 --Entered Currency Code
71242  , p_source_26            IN VARCHAR2
71243 --Exchange Rate Date
71247 --Exchange Rate Type
71244  , p_source_28            IN DATE
71245 --Exchange Rate
71246  , p_source_29            IN NUMBER
71248  , p_source_30            IN VARCHAR2
71249 --Line Type
71250  , p_source_35            IN VARCHAR2
71251  , p_source_35_meaning    IN VARCHAR2
71252 --Budget Amount Code
71253  , p_source_37            IN VARCHAR2
71254 --Project Type Class
71255  , p_source_38            IN VARCHAR2
71256  , p_source_38_meaning    IN VARCHAR2
71257 --Project Budgetary Control Balance Type
71258  , p_source_39            IN VARCHAR2
71259 --Budget Line ID
71260  , p_source_40            IN NUMBER
71261 --Encumbrance Upgrade Credit Accounting Class
71262  , p_source_41            IN VARCHAR2
71263 --Entered Amount
71264  , p_source_42            IN NUMBER
71265 --Accounted Amount
71266  , p_source_43            IN NUMBER
71267 --Use Encumbrance Upgrade Attributes Flag
71268  , p_source_44            IN VARCHAR2
71269 --Upgrade Project Encumbrance Type ID
71270  , p_source_45            IN NUMBER
71271 )
71272 IS
71273 
71274 l_component_type              VARCHAR2(80);
71275 l_component_code              VARCHAR2(30);
71276 l_component_type_code         VARCHAR2(1);
71277 l_component_appl_id           INTEGER;
71278 l_amb_context_code            VARCHAR2(30);
71279 l_entity_code                 VARCHAR2(30);
71280 l_event_class_code            VARCHAR2(30);
71281 l_ae_header_id                NUMBER;
71282 l_event_type_code             VARCHAR2(30);
71283 l_line_definition_code        VARCHAR2(30);
71284 l_line_definition_owner_code  VARCHAR2(1);
71285 --
71286 -- adr variables
71287 l_segment                     VARCHAR2(30);
71288 l_ccid                        NUMBER;
71289 l_adr_transaction_coa_id      NUMBER;
71290 l_adr_accounting_coa_id       NUMBER;
71291 l_adr_flexfield_segment_code  VARCHAR2(30);
71292 l_adr_flex_value_set_id       NUMBER;
71293 l_adr_value_type_code         VARCHAR2(30);
71294 l_adr_value_combination_id    NUMBER;
71295 l_adr_value_segment_code      VARCHAR2(30);
71296 
71297 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71298 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71299 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71300 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71301 
71302 -- 4262811 Variables ------------------------------------------------------------------------------------------
71303 l_entered_amt_idx             NUMBER;
71304 l_accted_amt_idx              NUMBER;
71305 l_acc_rev_flag                VARCHAR2(1);
71306 l_accrual_line_num            NUMBER;
71307 l_tmp_amt                     NUMBER;
71308 l_acc_rev_natural_side_code   VARCHAR2(1);
71309 
71310 l_num_entries                 NUMBER;
71311 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71312 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71313 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71314 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71315 l_recog_line_1                NUMBER;
71316 l_recog_line_2                NUMBER;
71317 
71318 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71319 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71320 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71321 
71322 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71323 
71324 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71325 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71326 
71327 ---------------------------------------------------------------------------------------------------------------
71328 
71329 
71330 --
71331 -- bulk performance
71332 --
71333 l_balance_type_code           VARCHAR2(1);
71334 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71335 l_log_module                  VARCHAR2(240);
71336 
71337 --
71338 -- Upgrade strategy
71339 --
71340 l_actual_upg_option           VARCHAR2(1);
71341 l_enc_upg_option           VARCHAR2(1);
71342 
71343 --
71344 BEGIN
71345 --
71346 IF g_log_enabled THEN
71347       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_143';
71348 END IF;
71349 --
71350 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71351 
71352       trace
71353          (p_msg      => 'BEGIN of AcctLineType_143'
71354          ,p_level    => C_LEVEL_PROCEDURE
71355          ,p_module   => l_log_module);
71356 
71357 END IF;
71358 --
71359 l_component_type             := 'AMB_JLT';
71360 l_component_code             := 'PA_UNF_CUST_ORD';
71361 l_component_type_code        := 'S';
71362 l_component_appl_id          :=  275;
71363 l_amb_context_code           := 'DEFAULT';
71364 l_entity_code                := 'BUDGETS';
71365 l_event_class_code           := 'BUDGET';
71366 l_event_type_code            := 'BUDGET_ALL';
71367 l_line_definition_owner_code := 'S';
71368 l_line_definition_code       := 'PROJECTS_BUD_SLA_JLD';
71369 --
71370 l_balance_type_code          := 'A';
71371 l_segment                     := NULL;
71372 l_ccid                        := NULL;
71373 l_adr_transaction_coa_id      := NULL;
71374 l_adr_accounting_coa_id       := NULL;
71375 l_adr_flexfield_segment_code  := NULL;
71376 l_adr_flex_value_set_id       := NULL;
71377 l_adr_value_type_code         := NULL;
71378 l_adr_value_combination_id    := NULL;
71379 l_adr_value_segment_code      := NULL;
71380 
71381 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71382 l_bflow_class_code           := '';    -- 4219869 Business Flow
71383 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71387 l_bflow_applied_to_amt       := NULL; -- 5132302
71384 l_budgetary_control_flag     := 'N';
71385 
71386 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71388 l_entered_amt_idx            := NULL;          -- 4262811
71389 l_accted_amt_idx             := NULL;          -- 4262811
71390 l_acc_rev_flag               := NULL;          -- 4262811
71391 l_accrual_line_num           := NULL;          -- 4262811
71392 l_tmp_amt                    := NULL;          -- 4262811
71393 --
71394  
71395 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71396     l_balance_type_code <> 'B' THEN
71397 IF NVL(p_source_37,'
71398 ') =  'R' AND 
71399 NVL(p_source_38,'
71400 ') =  'CONTRACT' AND 
71401 NVL(p_source_39,'
71402 ') =  'B'
71403  THEN 
71404 
71405    --
71406    XLA_AE_LINES_PKG.SetNewLine;
71407 
71408    p_balance_type_code          := l_balance_type_code;
71409    -- set the flag so later we will know whether the gain loss line needs to be created
71410    
71411    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71412      p_actual_flag :='A';
71413    END IF;
71414 
71415    --
71416    -- bulk performance
71417    --
71418    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
71419                                       p_header_num   => 0); -- 4262811
71420    --
71421    -- set accounting line options
71422    --
71423    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
71424            p_natural_side_code          => 'D'
71425          , p_gain_or_loss_flag          => 'N'
71426          , p_gl_transfer_mode_code      => 'S'
71427          , p_acct_entry_type_code       => 'A'
71428          , p_switch_side_flag           => 'Y'
71429          , p_merge_duplicate_code       => 'N'
71430          );
71431    --
71432    l_acc_rev_natural_side_code := 'C';  -- 4262811
71433    -- 
71434    --
71435    -- set accounting line type info
71436    --
71437    xla_ae_lines_pkg.SetAcctLineType
71438       (p_component_type             => l_component_type
71439       ,p_event_type_code            => l_event_type_code
71440       ,p_line_definition_owner_code => l_line_definition_owner_code
71441       ,p_line_definition_code       => l_line_definition_code
71442       ,p_accounting_line_code       => l_component_code
71443       ,p_accounting_line_type_code  => l_component_type_code
71444       ,p_accounting_line_appl_id    => l_component_appl_id
71445       ,p_amb_context_code           => l_amb_context_code
71446       ,p_entity_code                => l_entity_code
71447       ,p_event_class_code           => l_event_class_code);
71448    --
71449    -- set accounting class
71450    --
71451    xla_ae_lines_pkg.SetAcctClass(
71452            p_accounting_class_code  => 'PA_BUDGET_EXECUTION_RESERVE_DR'
71453          , p_ae_header_id           => l_ae_header_id
71454          );
71455 
71456    --
71457    -- set rounding class
71458    --
71459    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
71460                       'PA_BUDGET_EXECUTION_RESERVE_DR';
71461 
71462    --
71463    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
71464    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
71465    --
71466    -- bulk performance
71467    --
71468    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
71469 
71470    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
71471       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
71472 
71473    -- 4955764
71474    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71475       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
71476 
71477    -- 4458381 Public Sector Enh
71478    
71479    --
71480    -- set accounting attributes for the line type
71481    --
71482    l_entered_amt_idx := 10;
71483    l_accted_amt_idx  := 15;
71484    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
71485    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
71486    l_rec_acct_attrs.array_char_value(1)  := p_source_23;
71487    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_1';
71488    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_40);
71489    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
71490    l_rec_acct_attrs.array_char_value(3)  := p_source_35;
71491    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENC_UPG_DR_ACCT_CLASS';
71492    l_rec_acct_attrs.array_char_value(4)  := p_source_41;
71493    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_CCID';
71494    l_rec_acct_attrs.array_num_value(5)  := p_source_3;
71495    l_rec_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_ENTERED_AMT';
71496    l_rec_acct_attrs.array_num_value(6)  := p_source_42;
71497    l_rec_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_CURR';
71498    l_rec_acct_attrs.array_char_value(7)  := p_source_26;
71499    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_LEDGER_AMT';
71500    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
71501    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_OPTION';
71502    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
71503    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
71504    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
71505    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
71506    l_rec_acct_attrs.array_char_value(11)  := p_source_26;
71507    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
71508    l_rec_acct_attrs.array_date_value(12)  := p_source_28;
71509    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
71513    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
71510    l_rec_acct_attrs.array_num_value(13)  := p_source_29;
71511    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
71512    l_rec_acct_attrs.array_char_value(14)  := p_source_30;
71514    l_rec_acct_attrs.array_num_value(15)  := p_source_43;
71515    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_ID1';
71516    l_rec_acct_attrs.array_num_value(16)  :=  to_char(p_source_40);
71517    l_rec_acct_attrs.array_acct_attr_code(17) := 'REVERSED_DISTRIBUTION_TYPE';
71518    l_rec_acct_attrs.array_char_value(17)  := p_source_35;
71519    l_rec_acct_attrs.array_acct_attr_code(18) := 'UPG_DR_ENC_TYPE_ID';
71520    l_rec_acct_attrs.array_num_value(18)  := p_source_45;
71521 
71522    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
71523    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
71524 
71525    ---------------------------------------------------------------------------------------------------------------
71526    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
71527    ---------------------------------------------------------------------------------------------------------------
71528    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
71529 
71530    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71531    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
71532 
71533    IF xla_accounting_cache_pkg.GetValueChar
71534          (p_source_code         => 'LEDGER_CATEGORY_CODE'
71535          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
71536    AND l_bflow_method_code = 'PRIOR_ENTRY'
71537 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
71538    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
71539          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
71540        )
71541    THEN
71542          xla_ae_lines_pkg.BflowUpgEntry
71543            (p_business_method_code    => l_bflow_method_code
71544            ,p_business_class_code     => l_bflow_class_code
71545            ,p_balance_type            => l_balance_type_code);
71546    ELSE
71547       NULL;
71548 -- No business flow processing for business flow method of NONE.
71549    END IF;
71550 
71551    --
71552    -- call analytical criteria
71553    --
71554    
71555    --
71556    -- call description
71557    --
71558    -- No description or it is inherited.
71559    --
71560    -- call ADRs
71561    -- Bug 4922099
71562    --
71563    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
71564         (NVL(l_actual_upg_option, 'N') = 'O') OR
71565         (NVL(l_enc_upg_option, 'N') = 'O')
71566       )
71567    THEN
71568    NULL;
71569    --
71570    --
71571    
71572   l_ccid := AcctDerRule_11(
71573            p_application_id           => p_application_id
71574          , p_ae_header_id             => l_ae_header_id 
71575 , p_source_3 => p_source_3
71576          , x_transaction_coa_id       => l_adr_transaction_coa_id
71577          , x_accounting_coa_id        => l_adr_accounting_coa_id
71578          , x_value_type_code          => l_adr_value_type_code
71579          , p_side                     => 'NA'
71580    );
71581 
71582    xla_ae_lines_pkg.set_ccid(
71583     p_code_combination_id          => l_ccid
71584   , p_value_type_code              => l_adr_value_type_code
71585   , p_transaction_coa_id           => l_adr_transaction_coa_id
71586   , p_accounting_coa_id            => l_adr_accounting_coa_id
71587   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
71588   , p_adr_type_code                => 'S'
71589   , p_component_type               => l_component_type
71590   , p_component_code               => l_component_code
71591   , p_component_type_code          => l_component_type_code
71592   , p_component_appl_id            => l_component_appl_id
71593   , p_amb_context_code             => l_amb_context_code
71594   , p_side                         => 'NA'
71595   );
71596 
71597 
71598    l_segment := AcctDerRule_9(
71599            p_application_id           => p_application_id
71600          , p_ae_header_id             => l_ae_header_id 
71601          , x_transaction_coa_id       => l_adr_transaction_coa_id
71602          , x_accounting_coa_id        => l_adr_accounting_coa_id
71603          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
71604          , x_flex_value_set_id        => l_adr_flex_value_set_id
71605          , x_value_type_code          => l_adr_value_type_code
71606          , x_value_combination_id     => l_adr_value_combination_id
71607          , x_value_segment_code       => l_adr_value_segment_code
71608          , p_side                     => 'NA'
71609          , p_override_seg_flag        => 'Y'
71610    );
71611 
71612    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
71613 
71614       xla_ae_lines_pkg.set_segment(
71615           p_to_segment_code         => 'GL_ACCOUNT'
71616         , p_segment_value           => l_segment
71617         , p_from_segment_code       => l_adr_value_segment_code
71618         , p_from_combination_id     => l_adr_value_combination_id
71619         , p_value_type_code         => l_adr_value_type_code
71620         , p_transaction_coa_id      => l_adr_transaction_coa_id
71621         , p_accounting_coa_id       => l_adr_accounting_coa_id
71622         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
71623         , p_flex_value_set_id       => l_adr_flex_value_set_id
71624         , p_adr_code                => 'PA_4221'
71625         , p_adr_type_code           => 'S'
71626         , p_component_type          => l_component_type
71627         , p_component_code          => l_component_code
71631         , p_entity_code             => 'BUDGETS'
71628         , p_component_type_code     => l_component_type_code
71629         , p_component_appl_id       => l_component_appl_id
71630         , p_amb_context_code        => l_amb_context_code
71632         , p_event_class_code        => 'BUDGET'
71633         , p_side                    => 'NA'
71634         );
71635 
71636   END IF;
71637 
71638    --
71639    --
71640    END IF;
71641    --
71642    -- Bug 4922099
71643    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
71644           (NVL(l_enc_upg_option, 'N') = 'O')
71645         ) AND
71646         (l_bflow_method_code = 'PRIOR_ENTRY')
71647       )
71648    THEN
71649       IF
71650       --
71651       1 = 2
71652       --
71653       THEN
71654       xla_accounting_err_pkg.build_message
71655                                     (p_appli_s_name            => 'XLA'
71656                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71657                                     ,p_token_1                 => 'LINE_NUMBER'
71658                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
71659                                     ,p_token_2                 => 'LINE_TYPE_NAME'
71660                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
71661                                                                              l_component_type
71662                                                                             ,l_component_code
71663                                                                             ,l_component_type_code
71664                                                                             ,l_component_appl_id
71665                                                                             ,l_amb_context_code
71666                                                                             ,l_entity_code
71667                                                                             ,l_event_class_code
71668                                                                            )
71669                                     ,p_token_3                 => 'OWNER'
71670                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
71671                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
71672                                                                           ,p_lookup_code    => l_component_type_code
71673                                                                          )
71674                                     ,p_token_4                 => 'PRODUCT_NAME'
71675                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
71676                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
71677                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
71678                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
71679                                     ,p_ae_header_id            =>  NULL
71680                                        );
71681 
71682         IF (C_LEVEL_ERROR>= g_log_level) THEN
71683                  trace
71684                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
71685                       ,p_level    => C_LEVEL_ERROR
71686                       ,p_module   => l_log_module);
71687         END IF;
71688       END IF;
71689    END IF;
71690    --
71691    --
71692    ------------------------------------------------------------------------------------------------
71693    -- 4219869 Business Flow
71694    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
71695    -- Prior Entry.  Currently, the following code is always generated.
71696    ------------------------------------------------------------------------------------------------
71697    XLA_AE_LINES_PKG.ValidateCurrentLine;
71698 
71699    ------------------------------------------------------------------------------------
71700    -- 4219869 Business Flow
71701    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
71702    ------------------------------------------------------------------------------------
71703    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71704 
71705    ----------------------------------------------------------------------------------
71706    -- 4219869 Business Flow
71707    -- Update journal entry status -- Need to generate this within IF <condition>
71708    ----------------------------------------------------------------------------------
71709    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71710          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
71711          ,p_balance_type_code => l_balance_type_code
71712          );
71713 
71714    -------------------------------------------------------------------------------------------
71715    -- 4262811 - Generate the Accrual Reversal lines
71716    -------------------------------------------------------------------------------------------
71717    BEGIN
71718       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
71719                               (g_array_event(p_event_id).array_value_num('header_index'));
71720       IF l_acc_rev_flag IS NULL THEN
71721          l_acc_rev_flag := 'N';
71722       END IF;
71723    EXCEPTION
71724       WHEN OTHERS THEN
71725          l_acc_rev_flag := 'N';
71726    END;
71727    --
71728    IF (l_acc_rev_flag = 'Y') THEN
71729 
71730        -- 4645092  ------------------------------------------------------------------------------
71731        -- To allow MPA report to determine if it should generate report process
71732        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
71733        ------------------------------------------------------------------------------------------
71737 
71734 
71735        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
71736        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
71738        --
71739        -- Update the line information that should be overwritten
71740        --
71741        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
71742                                          p_header_num   => 1);
71743        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
71744 
71745        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
71746 
71747        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
71748           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
71749        END IF;
71750 
71751       --
71752       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
71753       --
71754       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
71755           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
71756       ELSE
71757           ---------------------------------------------------------------------------------------------------
71758           -- 4262811a Switch Sign
71759           ---------------------------------------------------------------------------------------------------
71760           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
71761           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71762                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71763           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
71764                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71765           -- 5132302
71766           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
71767                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
71768 
71769       END IF;
71770 
71771       -- 4955764
71772       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
71773       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
71774 
71775 
71776       XLA_AE_LINES_PKG.ValidateCurrentLine;
71777       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
71778 
71779       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
71780                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
71781                ,p_balance_type_code => l_balance_type_code);
71782 
71783    END IF;
71784 
71785    -----------------------------------------------------------------------------------------
71786    -- 4262811 Multiperiod Accounting
71787    -----------------------------------------------------------------------------------------
71788      -- No MPA option is assigned.
71789 
71790 
71791 END IF;
71792 END IF;
71793 --
71794 
71795 --
71796 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71797    trace
71798       (p_msg      => 'END of AcctLineType_143'
71799       ,p_level    => C_LEVEL_PROCEDURE
71800       ,p_module   => l_log_module);
71801 END IF;
71802 --
71803 EXCEPTION
71804   WHEN xla_exceptions_pkg.application_exception THEN
71805       RAISE;
71806   WHEN OTHERS THEN
71807        xla_exceptions_pkg.raise_message
71808            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_143');
71809 END AcctLineType_143;
71810 --
71811 
71812 ---------------------------------------
71813 --
71814 -- PRIVATE FUNCTION
71815 --         AcctLineType_144
71816 --
71817 ---------------------------------------
71818 PROCEDURE AcctLineType_144 (
71819   p_application_id        IN NUMBER
71820  ,p_event_id              IN NUMBER
71821  ,p_calculate_acctd_flag  IN VARCHAR2
71822  ,p_calculate_g_l_flag    IN VARCHAR2
71823  ,p_actual_flag           IN OUT VARCHAR2
71824  ,p_balance_type_code     OUT VARCHAR2
71825  ,p_gain_or_loss_ref      OUT VARCHAR2
71826  
71827 --Budget Code Combination ID
71828  , p_source_3            IN NUMBER
71829 --Reversing Line Flag
71830  , p_source_23            IN VARCHAR2
71831 --Entered Currency Code
71832  , p_source_26            IN VARCHAR2
71833 --Line Type
71834  , p_source_35            IN VARCHAR2
71835  , p_source_35_meaning    IN VARCHAR2
71836 --Budget Amount Code
71837  , p_source_37            IN VARCHAR2
71838 --Project Type Class
71839  , p_source_38            IN VARCHAR2
71840  , p_source_38_meaning    IN VARCHAR2
71841 --Project Budgetary Control Balance Type
71842  , p_source_39            IN VARCHAR2
71843 --Budget Line ID
71844  , p_source_40            IN NUMBER
71845 --Encumbrance Upgrade Credit Accounting Class
71846  , p_source_41            IN VARCHAR2
71847 --Entered Amount
71848  , p_source_42            IN NUMBER
71849 --Accounted Amount
71850  , p_source_43            IN NUMBER
71851 --Use Encumbrance Upgrade Attributes Flag
71852  , p_source_44            IN VARCHAR2
71853 )
71854 IS
71855 
71856 l_component_type              VARCHAR2(80);
71857 l_component_code              VARCHAR2(30);
71858 l_component_type_code         VARCHAR2(1);
71859 l_component_appl_id           INTEGER;
71860 l_amb_context_code            VARCHAR2(30);
71861 l_entity_code                 VARCHAR2(30);
71862 l_event_class_code            VARCHAR2(30);
71863 l_ae_header_id                NUMBER;
71864 l_event_type_code             VARCHAR2(30);
71865 l_line_definition_code        VARCHAR2(30);
71866 l_line_definition_owner_code  VARCHAR2(1);
71867 --
71871 l_adr_transaction_coa_id      NUMBER;
71868 -- adr variables
71869 l_segment                     VARCHAR2(30);
71870 l_ccid                        NUMBER;
71872 l_adr_accounting_coa_id       NUMBER;
71873 l_adr_flexfield_segment_code  VARCHAR2(30);
71874 l_adr_flex_value_set_id       NUMBER;
71875 l_adr_value_type_code         VARCHAR2(30);
71876 l_adr_value_combination_id    NUMBER;
71877 l_adr_value_segment_code      VARCHAR2(30);
71878 
71879 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
71880 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
71881 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
71882 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
71883 
71884 -- 4262811 Variables ------------------------------------------------------------------------------------------
71885 l_entered_amt_idx             NUMBER;
71886 l_accted_amt_idx              NUMBER;
71887 l_acc_rev_flag                VARCHAR2(1);
71888 l_accrual_line_num            NUMBER;
71889 l_tmp_amt                     NUMBER;
71890 l_acc_rev_natural_side_code   VARCHAR2(1);
71891 
71892 l_num_entries                 NUMBER;
71893 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
71894 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
71895 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
71896 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
71897 l_recog_line_1                NUMBER;
71898 l_recog_line_2                NUMBER;
71899 
71900 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
71901 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
71902 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
71903 
71904 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
71905 
71906 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
71907 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
71908 
71909 ---------------------------------------------------------------------------------------------------------------
71910 
71911 
71912 --
71913 -- bulk performance
71914 --
71915 l_balance_type_code           VARCHAR2(1);
71916 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
71917 l_log_module                  VARCHAR2(240);
71918 
71919 --
71920 -- Upgrade strategy
71921 --
71922 l_actual_upg_option           VARCHAR2(1);
71923 l_enc_upg_option           VARCHAR2(1);
71924 
71925 --
71926 BEGIN
71927 --
71928 IF g_log_enabled THEN
71929       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_144';
71930 END IF;
71931 --
71932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71933 
71934       trace
71935          (p_msg      => 'BEGIN of AcctLineType_144'
71936          ,p_level    => C_LEVEL_PROCEDURE
71937          ,p_module   => l_log_module);
71938 
71939 END IF;
71940 --
71941 l_component_type             := 'AMB_JLT';
71942 l_component_code             := 'PA_UNF_CUST_ORD_WADV';
71943 l_component_type_code        := 'S';
71944 l_component_appl_id          :=  275;
71945 l_amb_context_code           := 'DEFAULT';
71946 l_entity_code                := 'BUDGETS';
71947 l_event_class_code           := 'BUDGET';
71948 l_event_type_code            := 'BUDGET_ALL';
71949 l_line_definition_owner_code := 'S';
71950 l_line_definition_code       := 'PROJECTS_BUD_SLA_JLD';
71951 --
71952 l_balance_type_code          := 'A';
71953 l_segment                     := NULL;
71954 l_ccid                        := NULL;
71955 l_adr_transaction_coa_id      := NULL;
71956 l_adr_accounting_coa_id       := NULL;
71957 l_adr_flexfield_segment_code  := NULL;
71958 l_adr_flex_value_set_id       := NULL;
71959 l_adr_value_type_code         := NULL;
71960 l_adr_value_combination_id    := NULL;
71961 l_adr_value_segment_code      := NULL;
71962 
71963 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
71964 l_bflow_class_code           := '';    -- 4219869 Business Flow
71965 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
71966 l_budgetary_control_flag     := 'N';
71967 
71968 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
71969 l_bflow_applied_to_amt       := NULL; -- 5132302
71970 l_entered_amt_idx            := NULL;          -- 4262811
71971 l_accted_amt_idx             := NULL;          -- 4262811
71972 l_acc_rev_flag               := NULL;          -- 4262811
71973 l_accrual_line_num           := NULL;          -- 4262811
71974 l_tmp_amt                    := NULL;          -- 4262811
71975 --
71976  
71977 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
71978     l_balance_type_code <> 'B' THEN
71979 IF NVL(p_source_37,'
71980 ') =  'R' AND 
71981 NVL(p_source_38,'
71982 ') =  'CONTRACT' AND 
71983 NVL(p_source_39,'
71984 ') =  'B'
71985  THEN 
71986 
71987    --
71988    XLA_AE_LINES_PKG.SetNewLine;
71989 
71990    p_balance_type_code          := l_balance_type_code;
71991    -- set the flag so later we will know whether the gain loss line needs to be created
71992    
71993    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
71994      p_actual_flag :='A';
71995    END IF;
71996 
71997    --
71998    -- bulk performance
71999    --
72000    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72001                                       p_header_num   => 0); -- 4262811
72002    --
72003    -- set accounting line options
72004    --
72005    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72006            p_natural_side_code          => 'D'
72007          , p_gain_or_loss_flag          => 'N'
72011          , p_merge_duplicate_code       => 'N'
72008          , p_gl_transfer_mode_code      => 'S'
72009          , p_acct_entry_type_code       => 'A'
72010          , p_switch_side_flag           => 'Y'
72012          );
72013    --
72014    l_acc_rev_natural_side_code := 'C';  -- 4262811
72015    -- 
72016    --
72017    -- set accounting line type info
72018    --
72019    xla_ae_lines_pkg.SetAcctLineType
72020       (p_component_type             => l_component_type
72021       ,p_event_type_code            => l_event_type_code
72022       ,p_line_definition_owner_code => l_line_definition_owner_code
72023       ,p_line_definition_code       => l_line_definition_code
72024       ,p_accounting_line_code       => l_component_code
72025       ,p_accounting_line_type_code  => l_component_type_code
72026       ,p_accounting_line_appl_id    => l_component_appl_id
72027       ,p_amb_context_code           => l_amb_context_code
72028       ,p_entity_code                => l_entity_code
72029       ,p_event_class_code           => l_event_class_code);
72030    --
72031    -- set accounting class
72032    --
72033    xla_ae_lines_pkg.SetAcctClass(
72034            p_accounting_class_code  => 'PA_BUDGET_EXECUTION_RESERVE_DR'
72035          , p_ae_header_id           => l_ae_header_id
72036          );
72037 
72038    --
72039    -- set rounding class
72040    --
72041    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72042                       'PA_BUDGET_EXECUTION_RESERVE_DR';
72043 
72044    --
72045    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72046    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72047    --
72048    -- bulk performance
72049    --
72050    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72051 
72052    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72053       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72054 
72055    -- 4955764
72056    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72057       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72058 
72059    -- 4458381 Public Sector Enh
72060    
72061    --
72062    -- set accounting attributes for the line type
72063    --
72064 
72065    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72066    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72067 
72068    ---------------------------------------------------------------------------------------------------------------
72069    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72070    ---------------------------------------------------------------------------------------------------------------
72071    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72072 
72073    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72074    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72075 
72076    IF xla_accounting_cache_pkg.GetValueChar
72077          (p_source_code         => 'LEDGER_CATEGORY_CODE'
72078          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72079    AND l_bflow_method_code = 'PRIOR_ENTRY'
72080 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72081    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72082          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72083        )
72084    THEN
72085          xla_ae_lines_pkg.BflowUpgEntry
72086            (p_business_method_code    => l_bflow_method_code
72087            ,p_business_class_code     => l_bflow_class_code
72088            ,p_balance_type            => l_balance_type_code);
72089    ELSE
72090       NULL;
72091 -- No business flow processing for business flow method of NONE.
72092    END IF;
72093 
72094    --
72095    -- call analytical criteria
72096    --
72097    
72098    --
72099    -- call description
72100    --
72101    -- No description or it is inherited.
72102    --
72103    -- call ADRs
72104    -- Bug 4922099
72105    --
72106    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72107         (NVL(l_actual_upg_option, 'N') = 'O') OR
72108         (NVL(l_enc_upg_option, 'N') = 'O')
72109       )
72110    THEN
72111    NULL;
72112    --
72113    --
72114    
72115   l_ccid := AcctDerRule_11(
72116            p_application_id           => p_application_id
72117          , p_ae_header_id             => l_ae_header_id 
72118 , p_source_3 => p_source_3
72119          , x_transaction_coa_id       => l_adr_transaction_coa_id
72120          , x_accounting_coa_id        => l_adr_accounting_coa_id
72121          , x_value_type_code          => l_adr_value_type_code
72122          , p_side                     => 'NA'
72123    );
72124 
72125    xla_ae_lines_pkg.set_ccid(
72126     p_code_combination_id          => l_ccid
72127   , p_value_type_code              => l_adr_value_type_code
72128   , p_transaction_coa_id           => l_adr_transaction_coa_id
72129   , p_accounting_coa_id            => l_adr_accounting_coa_id
72130   , p_adr_code                     => 'PA_BUDGET_ACCT_RULE'
72131   , p_adr_type_code                => 'S'
72132   , p_component_type               => l_component_type
72133   , p_component_code               => l_component_code
72134   , p_component_type_code          => l_component_type_code
72135   , p_component_appl_id            => l_component_appl_id
72136   , p_amb_context_code             => l_amb_context_code
72140 
72137   , p_side                         => 'NA'
72138   );
72139 
72141    l_segment := AcctDerRule_10(
72142            p_application_id           => p_application_id
72143          , p_ae_header_id             => l_ae_header_id 
72144          , x_transaction_coa_id       => l_adr_transaction_coa_id
72145          , x_accounting_coa_id        => l_adr_accounting_coa_id
72146          , x_flexfield_segment_code   => l_adr_flexfield_segment_code
72147          , x_flex_value_set_id        => l_adr_flex_value_set_id
72148          , x_value_type_code          => l_adr_value_type_code
72149          , x_value_combination_id     => l_adr_value_combination_id
72150          , x_value_segment_code       => l_adr_value_segment_code
72151          , p_side                     => 'NA'
72152          , p_override_seg_flag        => 'Y'
72153    );
72154 
72155    IF NVL(l_segment,'NULL') <> '#$NO_OVERRIDE#$' THEN  -- 4465612
72156 
72157       xla_ae_lines_pkg.set_segment(
72158           p_to_segment_code         => 'GL_ACCOUNT'
72159         , p_segment_value           => l_segment
72160         , p_from_segment_code       => l_adr_value_segment_code
72161         , p_from_combination_id     => l_adr_value_combination_id
72162         , p_value_type_code         => l_adr_value_type_code
72163         , p_transaction_coa_id      => l_adr_transaction_coa_id
72164         , p_accounting_coa_id       => l_adr_accounting_coa_id
72165         , p_flexfield_segment_code  => l_adr_flexfield_segment_code
72166         , p_flex_value_set_id       => l_adr_flex_value_set_id
72167         , p_adr_code                => 'PA_4222'
72168         , p_adr_type_code           => 'S'
72169         , p_component_type          => l_component_type
72170         , p_component_code          => l_component_code
72171         , p_component_type_code     => l_component_type_code
72172         , p_component_appl_id       => l_component_appl_id
72173         , p_amb_context_code        => l_amb_context_code
72174         , p_entity_code             => 'BUDGETS'
72175         , p_event_class_code        => 'BUDGET'
72176         , p_side                    => 'NA'
72177         );
72178 
72179   END IF;
72180 
72181    --
72182    --
72183    END IF;
72184    --
72185    -- Bug 4922099
72186    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72187           (NVL(l_enc_upg_option, 'N') = 'O')
72188         ) AND
72189         (l_bflow_method_code = 'PRIOR_ENTRY')
72190       )
72191    THEN
72192       IF
72193       --
72194       1 = 2
72195       --
72196       THEN
72197       xla_accounting_err_pkg.build_message
72198                                     (p_appli_s_name            => 'XLA'
72199                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72200                                     ,p_token_1                 => 'LINE_NUMBER'
72201                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
72202                                     ,p_token_2                 => 'LINE_TYPE_NAME'
72203                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
72204                                                                              l_component_type
72205                                                                             ,l_component_code
72206                                                                             ,l_component_type_code
72207                                                                             ,l_component_appl_id
72208                                                                             ,l_amb_context_code
72209                                                                             ,l_entity_code
72210                                                                             ,l_event_class_code
72211                                                                            )
72212                                     ,p_token_3                 => 'OWNER'
72213                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72214                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72215                                                                           ,p_lookup_code    => l_component_type_code
72216                                                                          )
72217                                     ,p_token_4                 => 'PRODUCT_NAME'
72218                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72219                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72220                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72221                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72222                                     ,p_ae_header_id            =>  NULL
72223                                        );
72224 
72225         IF (C_LEVEL_ERROR>= g_log_level) THEN
72226                  trace
72227                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72228                       ,p_level    => C_LEVEL_ERROR
72229                       ,p_module   => l_log_module);
72230         END IF;
72231       END IF;
72232    END IF;
72233    --
72234    --
72235    ------------------------------------------------------------------------------------------------
72236    -- 4219869 Business Flow
72237    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72238    -- Prior Entry.  Currently, the following code is always generated.
72239    ------------------------------------------------------------------------------------------------
72240    XLA_AE_LINES_PKG.ValidateCurrentLine;
72241 
72242    ------------------------------------------------------------------------------------
72243    -- 4219869 Business Flow
72247 
72244    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72245    ------------------------------------------------------------------------------------
72246    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72248    ----------------------------------------------------------------------------------
72249    -- 4219869 Business Flow
72250    -- Update journal entry status -- Need to generate this within IF <condition>
72251    ----------------------------------------------------------------------------------
72252    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72253          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72254          ,p_balance_type_code => l_balance_type_code
72255          );
72256 
72257    -------------------------------------------------------------------------------------------
72258    -- 4262811 - Generate the Accrual Reversal lines
72259    -------------------------------------------------------------------------------------------
72260    BEGIN
72261       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72262                               (g_array_event(p_event_id).array_value_num('header_index'));
72263       IF l_acc_rev_flag IS NULL THEN
72264          l_acc_rev_flag := 'N';
72265       END IF;
72266    EXCEPTION
72267       WHEN OTHERS THEN
72268          l_acc_rev_flag := 'N';
72269    END;
72270    --
72271    IF (l_acc_rev_flag = 'Y') THEN
72272 
72273        -- 4645092  ------------------------------------------------------------------------------
72274        -- To allow MPA report to determine if it should generate report process
72275        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72276        ------------------------------------------------------------------------------------------
72277 
72278        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72279        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72280 
72281        --
72282        -- Update the line information that should be overwritten
72283        --
72284        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72285                                          p_header_num   => 1);
72286        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72287 
72288        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72289 
72290        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72291           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72292        END IF;
72293 
72294       --
72295       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72296       --
72297       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72298           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72299       ELSE
72300           ---------------------------------------------------------------------------------------------------
72301           -- 4262811a Switch Sign
72302           ---------------------------------------------------------------------------------------------------
72303           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72304           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72305                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72306           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72307                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72308           -- 5132302
72309           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72310                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72311 
72312       END IF;
72313 
72314       -- 4955764
72315       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72316       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72317 
72318 
72319       XLA_AE_LINES_PKG.ValidateCurrentLine;
72320       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72321 
72322       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72323                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72324                ,p_balance_type_code => l_balance_type_code);
72325 
72326    END IF;
72327 
72328    -----------------------------------------------------------------------------------------
72329    -- 4262811 Multiperiod Accounting
72330    -----------------------------------------------------------------------------------------
72331      -- No MPA option is assigned.
72332 
72333 
72334 END IF;
72335 END IF;
72336 --
72337 
72338 --
72339 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72340    trace
72341       (p_msg      => 'END of AcctLineType_144'
72342       ,p_level    => C_LEVEL_PROCEDURE
72343       ,p_module   => l_log_module);
72344 END IF;
72345 --
72346 EXCEPTION
72347   WHEN xla_exceptions_pkg.application_exception THEN
72348       RAISE;
72349   WHEN OTHERS THEN
72350        xla_exceptions_pkg.raise_message
72351            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_144');
72352 END AcctLineType_144;
72353 --
72354 
72355 ---------------------------------------
72356 --
72357 -- PRIVATE FUNCTION
72358 --         AcctLineType_145
72359 --
72360 ---------------------------------------
72361 PROCEDURE AcctLineType_145 (
72362   p_application_id        IN NUMBER
72363  ,p_event_id              IN NUMBER
72364  ,p_calculate_acctd_flag  IN VARCHAR2
72368  ,p_gain_or_loss_ref      OUT VARCHAR2
72365  ,p_calculate_g_l_flag    IN VARCHAR2
72366  ,p_actual_flag           IN OUT VARCHAR2
72367  ,p_balance_type_code     OUT VARCHAR2
72369  
72370 --Revenue CCID
72371  , p_source_19            IN NUMBER
72372 --Entered Currency Code
72373  , p_source_26            IN VARCHAR2
72374 --Exchange Rate Date
72375  , p_source_28            IN DATE
72376 --Exchange Rate
72377  , p_source_29            IN NUMBER
72378 --Exchange Rate Type
72379  , p_source_30            IN VARCHAR2
72380 --Entered Amount
72381  , p_source_42            IN NUMBER
72382 --Accounted Amount
72383  , p_source_43            IN NUMBER
72384 --Revenue Distribution Type
72385  , p_source_46            IN VARCHAR2
72386 --System Linkage Function
72387  , p_source_47            IN VARCHAR2
72388 --Crediting Revenue Flag
72389  , p_source_48            IN VARCHAR2
72390 --Revenue First Distribution ID
72391  , p_source_49            IN NUMBER
72392 --Revenue Second Distribution ID
72393  , p_source_50            IN NUMBER
72394 --Event ID
72395  , p_source_51            IN NUMBER
72396 )
72397 IS
72398 
72399 l_component_type              VARCHAR2(80);
72400 l_component_code              VARCHAR2(30);
72401 l_component_type_code         VARCHAR2(1);
72402 l_component_appl_id           INTEGER;
72403 l_amb_context_code            VARCHAR2(30);
72404 l_entity_code                 VARCHAR2(30);
72405 l_event_class_code            VARCHAR2(30);
72406 l_ae_header_id                NUMBER;
72407 l_event_type_code             VARCHAR2(30);
72408 l_line_definition_code        VARCHAR2(30);
72409 l_line_definition_owner_code  VARCHAR2(1);
72410 --
72411 -- adr variables
72412 l_segment                     VARCHAR2(30);
72413 l_ccid                        NUMBER;
72414 l_adr_transaction_coa_id      NUMBER;
72415 l_adr_accounting_coa_id       NUMBER;
72416 l_adr_flexfield_segment_code  VARCHAR2(30);
72417 l_adr_flex_value_set_id       NUMBER;
72418 l_adr_value_type_code         VARCHAR2(30);
72419 l_adr_value_combination_id    NUMBER;
72420 l_adr_value_segment_code      VARCHAR2(30);
72421 
72422 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72423 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72424 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72425 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72426 
72427 -- 4262811 Variables ------------------------------------------------------------------------------------------
72428 l_entered_amt_idx             NUMBER;
72429 l_accted_amt_idx              NUMBER;
72430 l_acc_rev_flag                VARCHAR2(1);
72431 l_accrual_line_num            NUMBER;
72432 l_tmp_amt                     NUMBER;
72433 l_acc_rev_natural_side_code   VARCHAR2(1);
72434 
72435 l_num_entries                 NUMBER;
72436 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72437 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72438 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72439 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72440 l_recog_line_1                NUMBER;
72441 l_recog_line_2                NUMBER;
72442 
72443 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72444 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72445 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72446 
72447 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72448 
72449 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72450 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
72451 
72452 ---------------------------------------------------------------------------------------------------------------
72453 
72454 
72455 --
72456 -- bulk performance
72457 --
72458 l_balance_type_code           VARCHAR2(1);
72459 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
72460 l_log_module                  VARCHAR2(240);
72461 
72462 --
72463 -- Upgrade strategy
72464 --
72465 l_actual_upg_option           VARCHAR2(1);
72466 l_enc_upg_option           VARCHAR2(1);
72467 
72468 --
72469 BEGIN
72470 --
72471 IF g_log_enabled THEN
72472       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_145';
72473 END IF;
72474 --
72475 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72476 
72477       trace
72478          (p_msg      => 'BEGIN of AcctLineType_145'
72479          ,p_level    => C_LEVEL_PROCEDURE
72480          ,p_module   => l_log_module);
72481 
72482 END IF;
72483 --
72484 l_component_type             := 'AMB_JLT';
72485 l_component_code             := 'PA_USG_REV';
72486 l_component_type_code        := 'S';
72487 l_component_appl_id          :=  275;
72488 l_amb_context_code           := 'DEFAULT';
72489 l_entity_code                := 'REVENUE';
72490 l_event_class_code           := 'REVENUE';
72491 l_event_type_code            := 'REVENUE_ALL';
72492 l_line_definition_owner_code := 'S';
72493 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
72494 --
72495 l_balance_type_code          := 'A';
72496 l_segment                     := NULL;
72497 l_ccid                        := NULL;
72498 l_adr_transaction_coa_id      := NULL;
72499 l_adr_accounting_coa_id       := NULL;
72500 l_adr_flexfield_segment_code  := NULL;
72501 l_adr_flex_value_set_id       := NULL;
72502 l_adr_value_type_code         := NULL;
72503 l_adr_value_combination_id    := NULL;
72504 l_adr_value_segment_code      := NULL;
72505 
72506 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
72510 
72507 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
72508 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
72509 l_budgetary_control_flag     := 'N';
72511 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
72512 l_bflow_applied_to_amt       := NULL; -- 5132302
72513 l_entered_amt_idx            := NULL;          -- 4262811
72514 l_accted_amt_idx             := NULL;          -- 4262811
72515 l_acc_rev_flag               := NULL;          -- 4262811
72516 l_accrual_line_num           := NULL;          -- 4262811
72517 l_tmp_amt                    := NULL;          -- 4262811
72518 --
72519  
72520 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
72521     l_balance_type_code <> 'B' THEN
72522 IF NVL(p_source_46,'
72523 ') =  'Revenue - Normal Revenue' AND 
72524 NVL(p_source_47,'
72525 ') =  'USG' AND 
72526 NVL(p_source_48,'
72527 ') =  'N'
72528  THEN 
72529 
72530    --
72531    XLA_AE_LINES_PKG.SetNewLine;
72532 
72533    p_balance_type_code          := l_balance_type_code;
72534    -- set the flag so later we will know whether the gain loss line needs to be created
72535    
72536    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
72537      p_actual_flag :='A';
72538    END IF;
72539 
72540    --
72541    -- bulk performance
72542    --
72543    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
72544                                       p_header_num   => 0); -- 4262811
72545    --
72546    -- set accounting line options
72547    --
72548    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
72549            p_natural_side_code          => 'C'
72550          , p_gain_or_loss_flag          => 'N'
72551          , p_gl_transfer_mode_code      => 'S'
72552          , p_acct_entry_type_code       => 'A'
72553          , p_switch_side_flag           => 'Y'
72554          , p_merge_duplicate_code       => 'N'
72555          );
72556    --
72557    l_acc_rev_natural_side_code := 'D';  -- 4262811
72558    -- 
72559    --
72560    -- set accounting line type info
72561    --
72562    xla_ae_lines_pkg.SetAcctLineType
72563       (p_component_type             => l_component_type
72564       ,p_event_type_code            => l_event_type_code
72565       ,p_line_definition_owner_code => l_line_definition_owner_code
72566       ,p_line_definition_code       => l_line_definition_code
72567       ,p_accounting_line_code       => l_component_code
72568       ,p_accounting_line_type_code  => l_component_type_code
72569       ,p_accounting_line_appl_id    => l_component_appl_id
72570       ,p_amb_context_code           => l_amb_context_code
72571       ,p_entity_code                => l_entity_code
72572       ,p_event_class_code           => l_event_class_code);
72573    --
72574    -- set accounting class
72575    --
72576    xla_ae_lines_pkg.SetAcctClass(
72577            p_accounting_class_code  => 'REVENUE'
72578          , p_ae_header_id           => l_ae_header_id
72579          );
72580 
72581    --
72582    -- set rounding class
72583    --
72584    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
72585                       'REVENUE';
72586 
72587    --
72588    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
72589    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
72590    --
72591    -- bulk performance
72592    --
72593    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
72594 
72595    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
72596       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
72597 
72598    -- 4955764
72599    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72600       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
72601 
72602    -- 4458381 Public Sector Enh
72603    
72604    --
72605    -- set accounting attributes for the line type
72606    --
72607    l_entered_amt_idx := 4;
72608    l_accted_amt_idx  := 10;
72609    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
72610    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
72611    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
72612    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
72613    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
72614    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
72615    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
72616    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
72617    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
72618    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
72619    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
72620    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
72621    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
72622    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
72623    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
72624    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
72625    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
72626    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
72627    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
72628    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
72629    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
72630 
72631    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
72632    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
72633 
72637    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
72634    ---------------------------------------------------------------------------------------------------------------
72635    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
72636    ---------------------------------------------------------------------------------------------------------------
72638 
72639    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72640    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
72641 
72642    IF xla_accounting_cache_pkg.GetValueChar
72643          (p_source_code         => 'LEDGER_CATEGORY_CODE'
72644          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
72645    AND l_bflow_method_code = 'PRIOR_ENTRY'
72646 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
72647    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
72648          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
72649        )
72650    THEN
72651          xla_ae_lines_pkg.BflowUpgEntry
72652            (p_business_method_code    => l_bflow_method_code
72653            ,p_business_class_code     => l_bflow_class_code
72654            ,p_balance_type            => l_balance_type_code);
72655    ELSE
72656       NULL;
72657 -- No business flow processing for business flow method of NONE.
72658    END IF;
72659 
72660    --
72661    -- call analytical criteria
72662    --
72663    
72664    --
72665    -- call description
72666    --
72667    -- No description or it is inherited.
72668    --
72669    -- call ADRs
72670    -- Bug 4922099
72671    --
72672    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
72673         (NVL(l_actual_upg_option, 'N') = 'O') OR
72674         (NVL(l_enc_upg_option, 'N') = 'O')
72675       )
72676    THEN
72677    NULL;
72678    --
72679    --
72680    
72681   l_ccid := AcctDerRule_26(
72682            p_application_id           => p_application_id
72683          , p_ae_header_id             => l_ae_header_id 
72684 , p_source_19 => p_source_19
72685          , x_transaction_coa_id       => l_adr_transaction_coa_id
72686          , x_accounting_coa_id        => l_adr_accounting_coa_id
72687          , x_value_type_code          => l_adr_value_type_code
72688          , p_side                     => 'NA'
72689    );
72690 
72691    xla_ae_lines_pkg.set_ccid(
72692     p_code_combination_id          => l_ccid
72693   , p_value_type_code              => l_adr_value_type_code
72694   , p_transaction_coa_id           => l_adr_transaction_coa_id
72695   , p_accounting_coa_id            => l_adr_accounting_coa_id
72696   , p_adr_code                     => 'REVENUE_RULE'
72697   , p_adr_type_code                => 'S'
72698   , p_component_type               => l_component_type
72699   , p_component_code               => l_component_code
72700   , p_component_type_code          => l_component_type_code
72701   , p_component_appl_id            => l_component_appl_id
72702   , p_amb_context_code             => l_amb_context_code
72703   , p_side                         => 'NA'
72704   );
72705 
72706 
72707    --
72708    --
72709    END IF;
72710    --
72711    -- Bug 4922099
72712    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
72713           (NVL(l_enc_upg_option, 'N') = 'O')
72714         ) AND
72715         (l_bflow_method_code = 'PRIOR_ENTRY')
72716       )
72717    THEN
72718       IF
72719       --
72720       1 = 2
72721       --
72722       THEN
72723       xla_accounting_err_pkg.build_message
72724                                     (p_appli_s_name            => 'XLA'
72725                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72726                                     ,p_token_1                 => 'LINE_NUMBER'
72727                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
72728                                     ,p_token_2                 => 'LINE_TYPE_NAME'
72729                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
72730                                                                              l_component_type
72731                                                                             ,l_component_code
72732                                                                             ,l_component_type_code
72733                                                                             ,l_component_appl_id
72734                                                                             ,l_amb_context_code
72735                                                                             ,l_entity_code
72736                                                                             ,l_event_class_code
72737                                                                            )
72738                                     ,p_token_3                 => 'OWNER'
72739                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
72740                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
72741                                                                           ,p_lookup_code    => l_component_type_code
72742                                                                          )
72743                                     ,p_token_4                 => 'PRODUCT_NAME'
72744                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
72745                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
72746                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
72750 
72747                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
72748                                     ,p_ae_header_id            =>  NULL
72749                                        );
72751         IF (C_LEVEL_ERROR>= g_log_level) THEN
72752                  trace
72753                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
72754                       ,p_level    => C_LEVEL_ERROR
72755                       ,p_module   => l_log_module);
72756         END IF;
72757       END IF;
72758    END IF;
72759    --
72760    --
72761    ------------------------------------------------------------------------------------------------
72762    -- 4219869 Business Flow
72763    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
72764    -- Prior Entry.  Currently, the following code is always generated.
72765    ------------------------------------------------------------------------------------------------
72766    XLA_AE_LINES_PKG.ValidateCurrentLine;
72767 
72768    ------------------------------------------------------------------------------------
72769    -- 4219869 Business Flow
72770    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
72771    ------------------------------------------------------------------------------------
72772    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72773 
72774    ----------------------------------------------------------------------------------
72775    -- 4219869 Business Flow
72776    -- Update journal entry status -- Need to generate this within IF <condition>
72777    ----------------------------------------------------------------------------------
72778    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72779          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
72780          ,p_balance_type_code => l_balance_type_code
72781          );
72782 
72783    -------------------------------------------------------------------------------------------
72784    -- 4262811 - Generate the Accrual Reversal lines
72785    -------------------------------------------------------------------------------------------
72786    BEGIN
72787       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
72788                               (g_array_event(p_event_id).array_value_num('header_index'));
72789       IF l_acc_rev_flag IS NULL THEN
72790          l_acc_rev_flag := 'N';
72791       END IF;
72792    EXCEPTION
72793       WHEN OTHERS THEN
72794          l_acc_rev_flag := 'N';
72795    END;
72796    --
72797    IF (l_acc_rev_flag = 'Y') THEN
72798 
72799        -- 4645092  ------------------------------------------------------------------------------
72800        -- To allow MPA report to determine if it should generate report process
72801        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
72802        ------------------------------------------------------------------------------------------
72803 
72804        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
72805        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
72806 
72807        --
72808        -- Update the line information that should be overwritten
72809        --
72810        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
72811                                          p_header_num   => 1);
72812        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
72813 
72814        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
72815 
72816        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
72817           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
72818        END IF;
72819 
72820       --
72821       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
72822       --
72823       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
72824           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
72825       ELSE
72826           ---------------------------------------------------------------------------------------------------
72827           -- 4262811a Switch Sign
72828           ---------------------------------------------------------------------------------------------------
72829           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
72830           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72831                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72832           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
72833                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72834           -- 5132302
72835           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
72836                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
72837 
72838       END IF;
72839 
72840       -- 4955764
72841       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
72842       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
72843 
72844 
72845       XLA_AE_LINES_PKG.ValidateCurrentLine;
72846       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
72847 
72848       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
72849                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
72850                ,p_balance_type_code => l_balance_type_code);
72851 
72852    END IF;
72853 
72854    -----------------------------------------------------------------------------------------
72858 
72855    -- 4262811 Multiperiod Accounting
72856    -----------------------------------------------------------------------------------------
72857      -- No MPA option is assigned.
72859 
72860 END IF;
72861 END IF;
72862 --
72863 
72864 --
72865 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72866    trace
72867       (p_msg      => 'END of AcctLineType_145'
72868       ,p_level    => C_LEVEL_PROCEDURE
72869       ,p_module   => l_log_module);
72870 END IF;
72871 --
72872 EXCEPTION
72873   WHEN xla_exceptions_pkg.application_exception THEN
72874       RAISE;
72875   WHEN OTHERS THEN
72876        xla_exceptions_pkg.raise_message
72877            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_145');
72878 END AcctLineType_145;
72879 --
72880 
72881 ---------------------------------------
72882 --
72883 -- PRIVATE FUNCTION
72884 --         AcctLineType_146
72885 --
72886 ---------------------------------------
72887 PROCEDURE AcctLineType_146 (
72888   p_application_id        IN NUMBER
72889  ,p_event_id              IN NUMBER
72890  ,p_calculate_acctd_flag  IN VARCHAR2
72891  ,p_calculate_g_l_flag    IN VARCHAR2
72892  ,p_actual_flag           IN OUT VARCHAR2
72893  ,p_balance_type_code     OUT VARCHAR2
72894  ,p_gain_or_loss_ref      OUT VARCHAR2
72895  
72896 --Revenue CCID
72897  , p_source_19            IN NUMBER
72898 --Entered Currency Code
72899  , p_source_26            IN VARCHAR2
72900 --Exchange Rate Date
72901  , p_source_28            IN DATE
72902 --Exchange Rate
72903  , p_source_29            IN NUMBER
72904 --Exchange Rate Type
72905  , p_source_30            IN VARCHAR2
72906 --Entered Amount
72907  , p_source_42            IN NUMBER
72908 --Accounted Amount
72909  , p_source_43            IN NUMBER
72910 --Revenue Distribution Type
72911  , p_source_46            IN VARCHAR2
72912 --System Linkage Function
72913  , p_source_47            IN VARCHAR2
72914 --Crediting Revenue Flag
72915  , p_source_48            IN VARCHAR2
72916 --Revenue First Distribution ID
72917  , p_source_49            IN NUMBER
72918 --Revenue Second Distribution ID
72919  , p_source_50            IN NUMBER
72920 --Event ID
72921  , p_source_51            IN NUMBER
72922 )
72923 IS
72924 
72925 l_component_type              VARCHAR2(80);
72926 l_component_code              VARCHAR2(30);
72927 l_component_type_code         VARCHAR2(1);
72928 l_component_appl_id           INTEGER;
72929 l_amb_context_code            VARCHAR2(30);
72930 l_entity_code                 VARCHAR2(30);
72931 l_event_class_code            VARCHAR2(30);
72932 l_ae_header_id                NUMBER;
72933 l_event_type_code             VARCHAR2(30);
72934 l_line_definition_code        VARCHAR2(30);
72935 l_line_definition_owner_code  VARCHAR2(1);
72936 --
72937 -- adr variables
72938 l_segment                     VARCHAR2(30);
72939 l_ccid                        NUMBER;
72940 l_adr_transaction_coa_id      NUMBER;
72941 l_adr_accounting_coa_id       NUMBER;
72942 l_adr_flexfield_segment_code  VARCHAR2(30);
72943 l_adr_flex_value_set_id       NUMBER;
72944 l_adr_value_type_code         VARCHAR2(30);
72945 l_adr_value_combination_id    NUMBER;
72946 l_adr_value_segment_code      VARCHAR2(30);
72947 
72948 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
72949 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
72950 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
72951 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
72952 
72953 -- 4262811 Variables ------------------------------------------------------------------------------------------
72954 l_entered_amt_idx             NUMBER;
72955 l_accted_amt_idx              NUMBER;
72956 l_acc_rev_flag                VARCHAR2(1);
72957 l_accrual_line_num            NUMBER;
72958 l_tmp_amt                     NUMBER;
72959 l_acc_rev_natural_side_code   VARCHAR2(1);
72960 
72961 l_num_entries                 NUMBER;
72962 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
72963 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
72964 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
72965 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
72966 l_recog_line_1                NUMBER;
72967 l_recog_line_2                NUMBER;
72968 
72969 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
72970 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
72971 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
72972 
72973 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
72974 
72975 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
72976 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
72977 
72978 ---------------------------------------------------------------------------------------------------------------
72979 
72980 
72981 --
72982 -- bulk performance
72983 --
72984 l_balance_type_code           VARCHAR2(1);
72985 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
72986 l_log_module                  VARCHAR2(240);
72987 
72988 --
72989 -- Upgrade strategy
72990 --
72991 l_actual_upg_option           VARCHAR2(1);
72992 l_enc_upg_option           VARCHAR2(1);
72993 
72994 --
72995 BEGIN
72996 --
72997 IF g_log_enabled THEN
72998       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_146';
72999 END IF;
73000 --
73001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73002 
73003       trace
73004          (p_msg      => 'BEGIN of AcctLineType_146'
73005          ,p_level    => C_LEVEL_PROCEDURE
73009 --
73006          ,p_module   => l_log_module);
73007 
73008 END IF;
73010 l_component_type             := 'AMB_JLT';
73011 l_component_code             := 'PA_VI_REV';
73012 l_component_type_code        := 'S';
73013 l_component_appl_id          :=  275;
73014 l_amb_context_code           := 'DEFAULT';
73015 l_entity_code                := 'REVENUE';
73016 l_event_class_code           := 'REVENUE';
73017 l_event_type_code            := 'REVENUE_ALL';
73018 l_line_definition_owner_code := 'S';
73019 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
73020 --
73021 l_balance_type_code          := 'A';
73022 l_segment                     := NULL;
73023 l_ccid                        := NULL;
73024 l_adr_transaction_coa_id      := NULL;
73025 l_adr_accounting_coa_id       := NULL;
73026 l_adr_flexfield_segment_code  := NULL;
73027 l_adr_flex_value_set_id       := NULL;
73028 l_adr_value_type_code         := NULL;
73029 l_adr_value_combination_id    := NULL;
73030 l_adr_value_segment_code      := NULL;
73031 
73032 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73033 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
73034 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
73035 l_budgetary_control_flag     := 'N';
73036 
73037 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
73038 l_bflow_applied_to_amt       := NULL; -- 5132302
73039 l_entered_amt_idx            := NULL;          -- 4262811
73040 l_accted_amt_idx             := NULL;          -- 4262811
73041 l_acc_rev_flag               := NULL;          -- 4262811
73042 l_accrual_line_num           := NULL;          -- 4262811
73043 l_tmp_amt                    := NULL;          -- 4262811
73044 --
73045  
73046 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73047     l_balance_type_code <> 'B' THEN
73048 IF NVL(p_source_46,'
73049 ') =  'Revenue - Normal Revenue' AND 
73050 NVL(p_source_47,'
73051 ') =  'VI' AND 
73052 NVL(p_source_48,'
73053 ') =  'N'
73054  THEN 
73055 
73056    --
73057    XLA_AE_LINES_PKG.SetNewLine;
73058 
73059    p_balance_type_code          := l_balance_type_code;
73060    -- set the flag so later we will know whether the gain loss line needs to be created
73061    
73062    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73063      p_actual_flag :='A';
73064    END IF;
73065 
73066    --
73067    -- bulk performance
73068    --
73069    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73070                                       p_header_num   => 0); -- 4262811
73071    --
73072    -- set accounting line options
73073    --
73074    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73075            p_natural_side_code          => 'C'
73076          , p_gain_or_loss_flag          => 'N'
73077          , p_gl_transfer_mode_code      => 'S'
73078          , p_acct_entry_type_code       => 'A'
73079          , p_switch_side_flag           => 'Y'
73080          , p_merge_duplicate_code       => 'N'
73081          );
73082    --
73083    l_acc_rev_natural_side_code := 'D';  -- 4262811
73084    -- 
73085    --
73086    -- set accounting line type info
73087    --
73088    xla_ae_lines_pkg.SetAcctLineType
73089       (p_component_type             => l_component_type
73090       ,p_event_type_code            => l_event_type_code
73091       ,p_line_definition_owner_code => l_line_definition_owner_code
73092       ,p_line_definition_code       => l_line_definition_code
73093       ,p_accounting_line_code       => l_component_code
73094       ,p_accounting_line_type_code  => l_component_type_code
73095       ,p_accounting_line_appl_id    => l_component_appl_id
73096       ,p_amb_context_code           => l_amb_context_code
73097       ,p_entity_code                => l_entity_code
73098       ,p_event_class_code           => l_event_class_code);
73099    --
73100    -- set accounting class
73101    --
73102    xla_ae_lines_pkg.SetAcctClass(
73103            p_accounting_class_code  => 'REVENUE'
73104          , p_ae_header_id           => l_ae_header_id
73105          );
73106 
73107    --
73108    -- set rounding class
73109    --
73110    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73111                       'REVENUE';
73112 
73113    --
73114    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73115    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73116    --
73117    -- bulk performance
73118    --
73119    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73120 
73121    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73122       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73123 
73124    -- 4955764
73125    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73126       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73127 
73128    -- 4458381 Public Sector Enh
73129    
73130    --
73131    -- set accounting attributes for the line type
73132    --
73133    l_entered_amt_idx := 4;
73134    l_accted_amt_idx  := 10;
73135    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
73136    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73137    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
73138    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
73139    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
73140    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
73141    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
73145    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
73142    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
73143    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
73144    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
73146    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
73147    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
73148    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
73149    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
73150    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
73151    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
73152    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
73153    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
73154    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
73155    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
73156 
73157    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73158    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73159 
73160    ---------------------------------------------------------------------------------------------------------------
73161    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73162    ---------------------------------------------------------------------------------------------------------------
73163    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73164 
73165    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73166    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73167 
73168    IF xla_accounting_cache_pkg.GetValueChar
73169          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73170          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73171    AND l_bflow_method_code = 'PRIOR_ENTRY'
73172 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73173    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73174          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73175        )
73176    THEN
73177          xla_ae_lines_pkg.BflowUpgEntry
73178            (p_business_method_code    => l_bflow_method_code
73179            ,p_business_class_code     => l_bflow_class_code
73180            ,p_balance_type            => l_balance_type_code);
73181    ELSE
73182       NULL;
73183 -- No business flow processing for business flow method of NONE.
73184    END IF;
73185 
73186    --
73187    -- call analytical criteria
73188    --
73189    
73190    --
73191    -- call description
73192    --
73193    -- No description or it is inherited.
73194    --
73195    -- call ADRs
73196    -- Bug 4922099
73197    --
73198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73199         (NVL(l_actual_upg_option, 'N') = 'O') OR
73200         (NVL(l_enc_upg_option, 'N') = 'O')
73201       )
73202    THEN
73203    NULL;
73204    --
73205    --
73206    
73207   l_ccid := AcctDerRule_26(
73208            p_application_id           => p_application_id
73209          , p_ae_header_id             => l_ae_header_id 
73210 , p_source_19 => p_source_19
73211          , x_transaction_coa_id       => l_adr_transaction_coa_id
73212          , x_accounting_coa_id        => l_adr_accounting_coa_id
73213          , x_value_type_code          => l_adr_value_type_code
73214          , p_side                     => 'NA'
73215    );
73216 
73217    xla_ae_lines_pkg.set_ccid(
73218     p_code_combination_id          => l_ccid
73219   , p_value_type_code              => l_adr_value_type_code
73220   , p_transaction_coa_id           => l_adr_transaction_coa_id
73221   , p_accounting_coa_id            => l_adr_accounting_coa_id
73222   , p_adr_code                     => 'REVENUE_RULE'
73223   , p_adr_type_code                => 'S'
73224   , p_component_type               => l_component_type
73225   , p_component_code               => l_component_code
73226   , p_component_type_code          => l_component_type_code
73227   , p_component_appl_id            => l_component_appl_id
73228   , p_amb_context_code             => l_amb_context_code
73229   , p_side                         => 'NA'
73230   );
73231 
73232 
73233    --
73234    --
73235    END IF;
73236    --
73237    -- Bug 4922099
73238    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73239           (NVL(l_enc_upg_option, 'N') = 'O')
73240         ) AND
73241         (l_bflow_method_code = 'PRIOR_ENTRY')
73242       )
73243    THEN
73244       IF
73245       --
73246       1 = 2
73247       --
73248       THEN
73249       xla_accounting_err_pkg.build_message
73250                                     (p_appli_s_name            => 'XLA'
73251                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73252                                     ,p_token_1                 => 'LINE_NUMBER'
73253                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73254                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73255                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73256                                                                              l_component_type
73257                                                                             ,l_component_code
73258                                                                             ,l_component_type_code
73259                                                                             ,l_component_appl_id
73260                                                                             ,l_amb_context_code
73264                                     ,p_token_3                 => 'OWNER'
73261                                                                             ,l_entity_code
73262                                                                             ,l_event_class_code
73263                                                                            )
73265                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73266                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73267                                                                           ,p_lookup_code    => l_component_type_code
73268                                                                          )
73269                                     ,p_token_4                 => 'PRODUCT_NAME'
73270                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73271                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73272                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73273                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73274                                     ,p_ae_header_id            =>  NULL
73275                                        );
73276 
73277         IF (C_LEVEL_ERROR>= g_log_level) THEN
73278                  trace
73279                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73280                       ,p_level    => C_LEVEL_ERROR
73281                       ,p_module   => l_log_module);
73282         END IF;
73283       END IF;
73284    END IF;
73285    --
73286    --
73287    ------------------------------------------------------------------------------------------------
73288    -- 4219869 Business Flow
73289    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73290    -- Prior Entry.  Currently, the following code is always generated.
73291    ------------------------------------------------------------------------------------------------
73292    XLA_AE_LINES_PKG.ValidateCurrentLine;
73293 
73294    ------------------------------------------------------------------------------------
73295    -- 4219869 Business Flow
73296    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73297    ------------------------------------------------------------------------------------
73298    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73299 
73300    ----------------------------------------------------------------------------------
73301    -- 4219869 Business Flow
73302    -- Update journal entry status -- Need to generate this within IF <condition>
73303    ----------------------------------------------------------------------------------
73304    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73305          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73306          ,p_balance_type_code => l_balance_type_code
73307          );
73308 
73309    -------------------------------------------------------------------------------------------
73310    -- 4262811 - Generate the Accrual Reversal lines
73311    -------------------------------------------------------------------------------------------
73312    BEGIN
73313       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73314                               (g_array_event(p_event_id).array_value_num('header_index'));
73315       IF l_acc_rev_flag IS NULL THEN
73316          l_acc_rev_flag := 'N';
73317       END IF;
73318    EXCEPTION
73319       WHEN OTHERS THEN
73320          l_acc_rev_flag := 'N';
73321    END;
73322    --
73323    IF (l_acc_rev_flag = 'Y') THEN
73324 
73325        -- 4645092  ------------------------------------------------------------------------------
73326        -- To allow MPA report to determine if it should generate report process
73327        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73328        ------------------------------------------------------------------------------------------
73329 
73330        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73331        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73332 
73333        --
73334        -- Update the line information that should be overwritten
73335        --
73336        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73337                                          p_header_num   => 1);
73338        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73339 
73340        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73341 
73342        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73343           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73344        END IF;
73345 
73346       --
73347       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73348       --
73349       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73350           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73351       ELSE
73352           ---------------------------------------------------------------------------------------------------
73353           -- 4262811a Switch Sign
73354           ---------------------------------------------------------------------------------------------------
73355           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
73356           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73357                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73358           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73362                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73359                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73360           -- 5132302
73361           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73363 
73364       END IF;
73365 
73366       -- 4955764
73367       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73368       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73369 
73370 
73371       XLA_AE_LINES_PKG.ValidateCurrentLine;
73372       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73373 
73374       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73375                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73376                ,p_balance_type_code => l_balance_type_code);
73377 
73378    END IF;
73379 
73380    -----------------------------------------------------------------------------------------
73381    -- 4262811 Multiperiod Accounting
73382    -----------------------------------------------------------------------------------------
73383      -- No MPA option is assigned.
73384 
73385 
73386 END IF;
73387 END IF;
73388 --
73389 
73390 --
73391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73392    trace
73393       (p_msg      => 'END of AcctLineType_146'
73394       ,p_level    => C_LEVEL_PROCEDURE
73395       ,p_module   => l_log_module);
73396 END IF;
73397 --
73398 EXCEPTION
73399   WHEN xla_exceptions_pkg.application_exception THEN
73400       RAISE;
73401   WHEN OTHERS THEN
73402        xla_exceptions_pkg.raise_message
73403            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_146');
73404 END AcctLineType_146;
73405 --
73406 
73407 ---------------------------------------
73408 --
73409 -- PRIVATE FUNCTION
73410 --         AcctLineType_147
73411 --
73412 ---------------------------------------
73413 PROCEDURE AcctLineType_147 (
73414   p_application_id        IN NUMBER
73415  ,p_event_id              IN NUMBER
73416  ,p_calculate_acctd_flag  IN VARCHAR2
73417  ,p_calculate_g_l_flag    IN VARCHAR2
73418  ,p_actual_flag           IN OUT VARCHAR2
73419  ,p_balance_type_code     OUT VARCHAR2
73420  ,p_gain_or_loss_ref      OUT VARCHAR2
73421  
73422 --Revenue CCID
73423  , p_source_19            IN NUMBER
73424 --Entered Currency Code
73425  , p_source_26            IN VARCHAR2
73426 --Exchange Rate Date
73427  , p_source_28            IN DATE
73428 --Exchange Rate
73429  , p_source_29            IN NUMBER
73430 --Exchange Rate Type
73431  , p_source_30            IN VARCHAR2
73432 --Entered Amount
73433  , p_source_42            IN NUMBER
73434 --Accounted Amount
73435  , p_source_43            IN NUMBER
73436 --Revenue Distribution Type
73437  , p_source_46            IN VARCHAR2
73438 --System Linkage Function
73439  , p_source_47            IN VARCHAR2
73440 --Crediting Revenue Flag
73441  , p_source_48            IN VARCHAR2
73442 --Revenue First Distribution ID
73443  , p_source_49            IN NUMBER
73444 --Revenue Second Distribution ID
73445  , p_source_50            IN NUMBER
73446 --Event ID
73447  , p_source_51            IN NUMBER
73448 )
73449 IS
73450 
73451 l_component_type              VARCHAR2(80);
73452 l_component_code              VARCHAR2(30);
73453 l_component_type_code         VARCHAR2(1);
73454 l_component_appl_id           INTEGER;
73455 l_amb_context_code            VARCHAR2(30);
73456 l_entity_code                 VARCHAR2(30);
73457 l_event_class_code            VARCHAR2(30);
73458 l_ae_header_id                NUMBER;
73459 l_event_type_code             VARCHAR2(30);
73460 l_line_definition_code        VARCHAR2(30);
73461 l_line_definition_owner_code  VARCHAR2(1);
73462 --
73463 -- adr variables
73464 l_segment                     VARCHAR2(30);
73465 l_ccid                        NUMBER;
73466 l_adr_transaction_coa_id      NUMBER;
73467 l_adr_accounting_coa_id       NUMBER;
73468 l_adr_flexfield_segment_code  VARCHAR2(30);
73469 l_adr_flex_value_set_id       NUMBER;
73470 l_adr_value_type_code         VARCHAR2(30);
73471 l_adr_value_combination_id    NUMBER;
73472 l_adr_value_segment_code      VARCHAR2(30);
73473 
73474 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
73475 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
73476 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
73477 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
73478 
73479 -- 4262811 Variables ------------------------------------------------------------------------------------------
73480 l_entered_amt_idx             NUMBER;
73481 l_accted_amt_idx              NUMBER;
73482 l_acc_rev_flag                VARCHAR2(1);
73483 l_accrual_line_num            NUMBER;
73484 l_tmp_amt                     NUMBER;
73485 l_acc_rev_natural_side_code   VARCHAR2(1);
73486 
73487 l_num_entries                 NUMBER;
73488 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
73489 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
73490 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
73491 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
73492 l_recog_line_1                NUMBER;
73493 l_recog_line_2                NUMBER;
73494 
73495 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
73496 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
73497 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
73498 
73502 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
73499 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
73500 
73501 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
73503 
73504 ---------------------------------------------------------------------------------------------------------------
73505 
73506 
73507 --
73508 -- bulk performance
73509 --
73510 l_balance_type_code           VARCHAR2(1);
73511 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
73512 l_log_module                  VARCHAR2(240);
73513 
73514 --
73515 -- Upgrade strategy
73516 --
73517 l_actual_upg_option           VARCHAR2(1);
73518 l_enc_upg_option           VARCHAR2(1);
73519 
73520 --
73521 BEGIN
73522 --
73523 IF g_log_enabled THEN
73524       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_147';
73525 END IF;
73526 --
73527 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73528 
73529       trace
73530          (p_msg      => 'BEGIN of AcctLineType_147'
73531          ,p_level    => C_LEVEL_PROCEDURE
73532          ,p_module   => l_log_module);
73533 
73534 END IF;
73535 --
73536 l_component_type             := 'AMB_JLT';
73537 l_component_code             := 'PA_WIP_REV';
73538 l_component_type_code        := 'S';
73539 l_component_appl_id          :=  275;
73540 l_amb_context_code           := 'DEFAULT';
73541 l_entity_code                := 'REVENUE';
73542 l_event_class_code           := 'REVENUE';
73543 l_event_type_code            := 'REVENUE_ALL';
73544 l_line_definition_owner_code := 'S';
73545 l_line_definition_code       := 'PA_STANDARD_ACCOUNTING';
73546 --
73547 l_balance_type_code          := 'A';
73548 l_segment                     := NULL;
73549 l_ccid                        := NULL;
73550 l_adr_transaction_coa_id      := NULL;
73551 l_adr_accounting_coa_id       := NULL;
73552 l_adr_flexfield_segment_code  := NULL;
73553 l_adr_flex_value_set_id       := NULL;
73554 l_adr_value_type_code         := NULL;
73555 l_adr_value_combination_id    := NULL;
73556 l_adr_value_segment_code      := NULL;
73557 
73558 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
73559 l_bflow_class_code           := 'PA_REV_ADJ';    -- 4219869 Business Flow
73560 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
73561 l_budgetary_control_flag     := 'N';
73562 
73563 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
73564 l_bflow_applied_to_amt       := NULL; -- 5132302
73565 l_entered_amt_idx            := NULL;          -- 4262811
73566 l_accted_amt_idx             := NULL;          -- 4262811
73567 l_acc_rev_flag               := NULL;          -- 4262811
73568 l_accrual_line_num           := NULL;          -- 4262811
73569 l_tmp_amt                    := NULL;          -- 4262811
73570 --
73571  
73572 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
73573     l_balance_type_code <> 'B' THEN
73574 IF NVL(p_source_46,'
73575 ') =  'Revenue - Normal Revenue' AND 
73576 NVL(p_source_47,'
73577 ') =  'WIP' AND 
73578 NVL(p_source_48,'
73579 ') =  'N'
73580  THEN 
73581 
73582    --
73583    XLA_AE_LINES_PKG.SetNewLine;
73584 
73585    p_balance_type_code          := l_balance_type_code;
73586    -- set the flag so later we will know whether the gain loss line needs to be created
73587    
73588    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
73589      p_actual_flag :='A';
73590    END IF;
73591 
73592    --
73593    -- bulk performance
73594    --
73595    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
73596                                       p_header_num   => 0); -- 4262811
73597    --
73598    -- set accounting line options
73599    --
73600    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
73601            p_natural_side_code          => 'C'
73602          , p_gain_or_loss_flag          => 'N'
73603          , p_gl_transfer_mode_code      => 'S'
73604          , p_acct_entry_type_code       => 'A'
73605          , p_switch_side_flag           => 'Y'
73606          , p_merge_duplicate_code       => 'N'
73607          );
73608    --
73609    l_acc_rev_natural_side_code := 'D';  -- 4262811
73610    -- 
73611    --
73612    -- set accounting line type info
73613    --
73614    xla_ae_lines_pkg.SetAcctLineType
73615       (p_component_type             => l_component_type
73616       ,p_event_type_code            => l_event_type_code
73617       ,p_line_definition_owner_code => l_line_definition_owner_code
73618       ,p_line_definition_code       => l_line_definition_code
73619       ,p_accounting_line_code       => l_component_code
73620       ,p_accounting_line_type_code  => l_component_type_code
73621       ,p_accounting_line_appl_id    => l_component_appl_id
73622       ,p_amb_context_code           => l_amb_context_code
73623       ,p_entity_code                => l_entity_code
73624       ,p_event_class_code           => l_event_class_code);
73625    --
73626    -- set accounting class
73627    --
73628    xla_ae_lines_pkg.SetAcctClass(
73629            p_accounting_class_code  => 'REVENUE'
73630          , p_ae_header_id           => l_ae_header_id
73631          );
73632 
73633    --
73634    -- set rounding class
73635    --
73636    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
73637                       'REVENUE';
73638 
73639    --
73640    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
73641    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
73642    --
73643    -- bulk performance
73644    --
73648       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
73645    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
73646 
73647    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
73649 
73650    -- 4955764
73651    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73652       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
73653 
73654    -- 4458381 Public Sector Enh
73655    
73656    --
73657    -- set accounting attributes for the line type
73658    --
73659    l_entered_amt_idx := 4;
73660    l_accted_amt_idx  := 10;
73661    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
73662    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
73663    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_49);
73664    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_IDENTIFIER_2';
73665    l_rec_acct_attrs.array_num_value(2)  :=  to_char(p_source_50);
73666    l_rec_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_TYPE';
73667    l_rec_acct_attrs.array_char_value(3)  := p_source_46;
73668    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_AMOUNT';
73669    l_rec_acct_attrs.array_num_value(4)  := p_source_42;
73670    l_rec_acct_attrs.array_acct_attr_code(5) := 'ENTERED_CURRENCY_CODE';
73671    l_rec_acct_attrs.array_char_value(5)  := p_source_26;
73672    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_DATE';
73673    l_rec_acct_attrs.array_date_value(6)  := p_source_28;
73674    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE';
73675    l_rec_acct_attrs.array_num_value(7)  := p_source_29;
73676    l_rec_acct_attrs.array_acct_attr_code(8) := 'EXCHANGE_RATE_TYPE';
73677    l_rec_acct_attrs.array_char_value(8)  := p_source_30;
73678    l_rec_acct_attrs.array_acct_attr_code(9) := 'GAIN_LOSS_REFERENCE';
73679    l_rec_acct_attrs.array_num_value(9)  :=  to_char(p_source_51);
73680    l_rec_acct_attrs.array_acct_attr_code(10) := 'LEDGER_AMOUNT';
73681    l_rec_acct_attrs.array_num_value(10)  := p_source_43;
73682 
73683    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
73684    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
73685 
73686    ---------------------------------------------------------------------------------------------------------------
73687    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
73688    ---------------------------------------------------------------------------------------------------------------
73689    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
73690 
73691    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73692    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
73693 
73694    IF xla_accounting_cache_pkg.GetValueChar
73695          (p_source_code         => 'LEDGER_CATEGORY_CODE'
73696          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
73697    AND l_bflow_method_code = 'PRIOR_ENTRY'
73698 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
73699    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
73700          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
73701        )
73702    THEN
73703          xla_ae_lines_pkg.BflowUpgEntry
73704            (p_business_method_code    => l_bflow_method_code
73705            ,p_business_class_code     => l_bflow_class_code
73706            ,p_balance_type            => l_balance_type_code);
73707    ELSE
73708       NULL;
73709 -- No business flow processing for business flow method of NONE.
73710    END IF;
73711 
73712    --
73713    -- call analytical criteria
73714    --
73715    
73716    --
73717    -- call description
73718    --
73719    -- No description or it is inherited.
73720    --
73721    -- call ADRs
73722    -- Bug 4922099
73723    --
73724    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
73725         (NVL(l_actual_upg_option, 'N') = 'O') OR
73726         (NVL(l_enc_upg_option, 'N') = 'O')
73727       )
73728    THEN
73729    NULL;
73730    --
73731    --
73732    
73733   l_ccid := AcctDerRule_26(
73734            p_application_id           => p_application_id
73735          , p_ae_header_id             => l_ae_header_id 
73736 , p_source_19 => p_source_19
73737          , x_transaction_coa_id       => l_adr_transaction_coa_id
73738          , x_accounting_coa_id        => l_adr_accounting_coa_id
73739          , x_value_type_code          => l_adr_value_type_code
73740          , p_side                     => 'NA'
73741    );
73742 
73743    xla_ae_lines_pkg.set_ccid(
73744     p_code_combination_id          => l_ccid
73745   , p_value_type_code              => l_adr_value_type_code
73746   , p_transaction_coa_id           => l_adr_transaction_coa_id
73747   , p_accounting_coa_id            => l_adr_accounting_coa_id
73748   , p_adr_code                     => 'REVENUE_RULE'
73749   , p_adr_type_code                => 'S'
73750   , p_component_type               => l_component_type
73751   , p_component_code               => l_component_code
73752   , p_component_type_code          => l_component_type_code
73753   , p_component_appl_id            => l_component_appl_id
73754   , p_amb_context_code             => l_amb_context_code
73755   , p_side                         => 'NA'
73756   );
73757 
73758 
73759    --
73760    --
73761    END IF;
73762    --
73763    -- Bug 4922099
73764    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
73765           (NVL(l_enc_upg_option, 'N') = 'O')
73766         ) AND
73767         (l_bflow_method_code = 'PRIOR_ENTRY')
73768       )
73769    THEN
73770       IF
73774       THEN
73771       --
73772       1 = 2
73773       --
73775       xla_accounting_err_pkg.build_message
73776                                     (p_appli_s_name            => 'XLA'
73777                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73778                                     ,p_token_1                 => 'LINE_NUMBER'
73779                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
73780                                     ,p_token_2                 => 'LINE_TYPE_NAME'
73781                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
73782                                                                              l_component_type
73783                                                                             ,l_component_code
73784                                                                             ,l_component_type_code
73785                                                                             ,l_component_appl_id
73786                                                                             ,l_amb_context_code
73787                                                                             ,l_entity_code
73788                                                                             ,l_event_class_code
73789                                                                            )
73790                                     ,p_token_3                 => 'OWNER'
73791                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
73792                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
73793                                                                           ,p_lookup_code    => l_component_type_code
73794                                                                          )
73795                                     ,p_token_4                 => 'PRODUCT_NAME'
73796                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
73797                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
73798                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
73799                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
73800                                     ,p_ae_header_id            =>  NULL
73801                                        );
73802 
73803         IF (C_LEVEL_ERROR>= g_log_level) THEN
73804                  trace
73805                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
73806                       ,p_level    => C_LEVEL_ERROR
73807                       ,p_module   => l_log_module);
73808         END IF;
73809       END IF;
73810    END IF;
73811    --
73812    --
73813    ------------------------------------------------------------------------------------------------
73814    -- 4219869 Business Flow
73815    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
73816    -- Prior Entry.  Currently, the following code is always generated.
73817    ------------------------------------------------------------------------------------------------
73818    XLA_AE_LINES_PKG.ValidateCurrentLine;
73819 
73820    ------------------------------------------------------------------------------------
73821    -- 4219869 Business Flow
73822    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
73823    ------------------------------------------------------------------------------------
73824    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73825 
73826    ----------------------------------------------------------------------------------
73827    -- 4219869 Business Flow
73828    -- Update journal entry status -- Need to generate this within IF <condition>
73829    ----------------------------------------------------------------------------------
73830    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73831          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
73832          ,p_balance_type_code => l_balance_type_code
73833          );
73834 
73835    -------------------------------------------------------------------------------------------
73836    -- 4262811 - Generate the Accrual Reversal lines
73837    -------------------------------------------------------------------------------------------
73838    BEGIN
73839       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
73840                               (g_array_event(p_event_id).array_value_num('header_index'));
73841       IF l_acc_rev_flag IS NULL THEN
73842          l_acc_rev_flag := 'N';
73843       END IF;
73844    EXCEPTION
73845       WHEN OTHERS THEN
73846          l_acc_rev_flag := 'N';
73847    END;
73848    --
73849    IF (l_acc_rev_flag = 'Y') THEN
73850 
73851        -- 4645092  ------------------------------------------------------------------------------
73852        -- To allow MPA report to determine if it should generate report process
73853        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
73854        ------------------------------------------------------------------------------------------
73855 
73856        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
73857        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
73858 
73859        --
73860        -- Update the line information that should be overwritten
73861        --
73862        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
73863                                          p_header_num   => 1);
73864        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
73865 
73866        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
73867 
73868        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
73872       --
73869           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
73870        END IF;
73871 
73873       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
73874       --
73875       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
73876           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
73877       ELSE
73878           ---------------------------------------------------------------------------------------------------
73879           -- 4262811a Switch Sign
73880           ---------------------------------------------------------------------------------------------------
73881           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
73882           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73883                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73884           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
73885                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73886           -- 5132302
73887           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
73888                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
73889 
73890       END IF;
73891 
73892       -- 4955764
73893       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
73894       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
73895 
73896 
73897       XLA_AE_LINES_PKG.ValidateCurrentLine;
73898       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
73899 
73900       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
73901                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
73902                ,p_balance_type_code => l_balance_type_code);
73903 
73904    END IF;
73905 
73906    -----------------------------------------------------------------------------------------
73907    -- 4262811 Multiperiod Accounting
73908    -----------------------------------------------------------------------------------------
73909      -- No MPA option is assigned.
73910 
73911 
73912 END IF;
73913 END IF;
73914 --
73915 
73916 --
73917 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73918    trace
73919       (p_msg      => 'END of AcctLineType_147'
73920       ,p_level    => C_LEVEL_PROCEDURE
73921       ,p_module   => l_log_module);
73922 END IF;
73923 --
73924 EXCEPTION
73925   WHEN xla_exceptions_pkg.application_exception THEN
73926       RAISE;
73927   WHEN OTHERS THEN
73928        xla_exceptions_pkg.raise_message
73929            (p_location => 'XLA_00275_AAD_S_000015_PKG.AcctLineType_147');
73930 END AcctLineType_147;
73931 --
73932 
73933 ---------------------------------------
73934 --
73935 -- PRIVATE PROCEDURE
73936 --         insert_sources_148
73937 --
73938 ----------------------------------------
73939 --
73940 PROCEDURE insert_sources_148(
73941                                 p_target_ledger_id       IN NUMBER
73942                               , p_language               IN VARCHAR2
73943                               , p_sla_ledger_id          IN NUMBER
73944                               , p_pad_start_date         IN DATE
73945                               , p_pad_end_date           IN DATE
73946                          )
73947 IS
73948 
73949 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ADJ_ALL';
73950 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT_ADJ';
73951 p_apps_owner                   VARCHAR2(30);
73952 l_log_module                   VARCHAR2(240);
73953 BEGIN
73954 IF g_log_enabled THEN
73955       l_log_module := C_DEFAULT_MODULE||'.insert_sources_148';
73956 END IF;
73957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73958 
73959       trace
73960          (p_msg      => 'BEGIN of insert_sources_148'
73961          ,p_level    => C_LEVEL_PROCEDURE
73962          ,p_module   => l_log_module);
73963 
73964 END IF;
73965 
73966 -- select APPS owner
73967 SELECT oracle_username
73968   INTO p_apps_owner
73969   FROM fnd_oracle_userid
73970  WHERE read_only_flag = 'U'
73971 ;
73972 
73973 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73974       trace
73975          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
73976                         ' - p_language = '||p_language||
73977                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
73978                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
73979                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
73980                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
73981          ,p_level    => C_LEVEL_STATEMENT
73982          ,p_module   => l_log_module);
73983 END IF;
73984 
73985 
73986 --
73987 INSERT INTO xla_diag_sources --hdr2
73988 (
73989         event_id
73990       , ledger_id
73991       , sla_ledger_id
73992       , description_language
73993       , object_name
73994       , object_type_code
73995       , line_number
73996       , source_application_id
73997       , source_type_code
73998       , source_code
73999       , source_value
74000       , source_meaning
74001       , created_by
74002       , creation_date
74003       , last_update_date
74004       , last_updated_by
74005       , last_update_login
74006       , program_update_date
74007       , program_application_id
74008       , program_id
74012         event_id
74009       , request_id
74010 )
74011 SELECT
74013       , p_target_ledger_id
74014       , p_sla_ledger_id
74015       , p_language
74016       , object_name
74017       , object_type_code
74018       , line_number
74019       , source_application_id
74020       , source_type_code
74021       , source_code
74022       , SUBSTR(source_value ,1,1996)
74023       , SUBSTR(source_meaning ,1,200)
74024       , xla_environment_pkg.g_Usr_Id
74025       , TRUNC(SYSDATE)
74026       , TRUNC(SYSDATE)
74027       , xla_environment_pkg.g_Usr_Id
74028       , xla_environment_pkg.g_Login_Id
74029       , TRUNC(SYSDATE)
74030       , xla_environment_pkg.g_Prog_Appl_Id
74031       , xla_environment_pkg.g_Prog_Id
74032       , xla_environment_pkg.g_Req_Id
74033   FROM (
74034        SELECT xet.event_id                  event_id
74035             , 0                          line_number
74036             , CASE r
74037                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
74038                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
74039                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
74040                 
74041                ELSE null
74042               END                           object_name
74043             , CASE r
74044                 WHEN 1 THEN 'HEADER' 
74045                 WHEN 2 THEN 'HEADER' 
74046                 WHEN 3 THEN 'HEADER' 
74047                 
74048                 ELSE null
74049               END                           object_type_code
74050             , CASE r
74051                 WHEN 1 THEN '275' 
74052                 WHEN 2 THEN '275' 
74053                 WHEN 3 THEN '275' 
74054                 
74055                 ELSE null
74056               END                           source_application_id
74057             , 'S'             source_type_code
74058             , CASE r
74059                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
74060                 WHEN 2 THEN 'TP_AMT_TYPE_CODE' 
74061                 WHEN 3 THEN 'GL_DATE' 
74062                 
74063                 ELSE null
74064               END                           source_code
74065             , CASE r
74066                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
74067                 WHEN 2 THEN TO_CHAR(h2.TP_AMT_TYPE_CODE)
74068                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
74069                 
74070                 ELSE null
74071               END                           source_value
74072             , CASE r
74073                 WHEN 2 THEN fvl73.meaning
74074                 
74075                 ELSE null
74076               END               source_meaning
74077          FROM xla_events_gt     xet  
74078       , PA_XLA_EXP_HEADER_V  h2
74079   , fnd_lookup_values    fvl73
74080              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
74081          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74082            AND xet.event_class_code = C_EVENT_CLASS_CODE
74083               AND h2.event_id = xet.event_id
74084    AND fvl73.lookup_type(+)         = 'TP_AMOUNT_TYPE'
74085   AND fvl73.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
74086   AND fvl73.view_application_id(+) = 275
74087   AND fvl73.language(+)            = USERENV('LANG')
74088   
74089 )
74090 ;
74091 --
74092 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74093 
74094       trace
74095          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
74096          ,p_level    => C_LEVEL_STATEMENT
74097          ,p_module   => l_log_module);
74098 
74099 END IF;
74100 --
74101 
74102 
74103 
74104 --
74105 INSERT INTO xla_diag_sources  --line2
74106 (
74107         event_id
74108       , ledger_id
74109       , sla_ledger_id
74110       , description_language
74111       , object_name
74112       , object_type_code
74113       , line_number
74114       , source_application_id
74115       , source_type_code
74116       , source_code
74117       , source_value
74118       , source_meaning
74119       , created_by
74120       , creation_date
74121       , last_update_date
74122       , last_updated_by
74123       , last_update_login
74124       , program_update_date
74125       , program_application_id
74126       , program_id
74127       , request_id
74128 )
74129 SELECT  event_id
74130       , p_target_ledger_id
74131       , p_sla_ledger_id
74132       , p_language
74133       , object_name
74134       , object_type_code
74135       , line_number
74136       , source_application_id
74137       , source_type_code
74138       , source_code
74139       , SUBSTR(source_value,1,1996)
74140       , SUBSTR(source_meaning ,1,200)
74141       , xla_environment_pkg.g_Usr_Id
74142       , TRUNC(SYSDATE)
74143       , TRUNC(SYSDATE)
74144       , xla_environment_pkg.g_Usr_Id
74145       , xla_environment_pkg.g_Login_Id
74146       , TRUNC(SYSDATE)
74147       , xla_environment_pkg.g_Prog_Appl_Id
74148       , xla_environment_pkg.g_Prog_Id
74149       , xla_environment_pkg.g_Req_Id
74150   FROM (
74151        SELECT xet.event_id                  event_id
74152             , l1.line_number                 line_number
74153             , CASE r
74154                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
74155                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
74156                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
74157                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
74158                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
74159                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
74160                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
74161                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
74162                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
74166                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
74163                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
74164                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
74165                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
74167                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
74168                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
74169                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
74170                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
74171                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
74172                 
74173                ELSE null
74174               END                           object_name
74175             , CASE r
74176                 WHEN 1 THEN 'LINE' 
74177                 WHEN 2 THEN 'LINE' 
74178                 WHEN 3 THEN 'LINE' 
74179                 WHEN 4 THEN 'LINE' 
74180                 WHEN 5 THEN 'LINE' 
74181                 WHEN 6 THEN 'LINE' 
74182                 WHEN 7 THEN 'LINE' 
74183                 WHEN 8 THEN 'LINE' 
74184                 WHEN 9 THEN 'LINE' 
74185                 WHEN 10 THEN 'LINE' 
74186                 WHEN 11 THEN 'LINE' 
74187                 WHEN 12 THEN 'LINE' 
74188                 WHEN 13 THEN 'LINE' 
74189                 WHEN 14 THEN 'LINE' 
74190                 WHEN 15 THEN 'LINE' 
74191                 WHEN 16 THEN 'LINE' 
74192                 WHEN 17 THEN 'LINE' 
74193                 WHEN 18 THEN 'LINE' 
74194                 
74195                 ELSE null
74196               END                           object_type_code
74197             , CASE r
74198                 WHEN 1 THEN '275' 
74199                 WHEN 2 THEN '275' 
74200                 WHEN 3 THEN '275' 
74201                 WHEN 4 THEN '275' 
74202                 WHEN 5 THEN '275' 
74203                 WHEN 6 THEN '275' 
74204                 WHEN 7 THEN '275' 
74205                 WHEN 8 THEN '275' 
74206                 WHEN 9 THEN '275' 
74207                 WHEN 10 THEN '275' 
74208                 WHEN 11 THEN '275' 
74209                 WHEN 12 THEN '275' 
74210                 WHEN 13 THEN '275' 
74211                 WHEN 14 THEN '275' 
74212                 WHEN 15 THEN '275' 
74213                 WHEN 16 THEN '275' 
74214                 WHEN 17 THEN '275' 
74215                 WHEN 18 THEN '275' 
74216                 
74217                 ELSE null
74218               END                           source_application_id
74219             , 'S'             source_type_code
74220             , CASE r
74221                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
74222                 WHEN 2 THEN 'PROVIDER_CCID' 
74223                 WHEN 3 THEN 'ADJ_PROVIDER_CCID' 
74224                 WHEN 4 THEN 'ADJ_RECEIVER_CCID' 
74225                 WHEN 5 THEN 'RECEIVER_CCID' 
74226                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
74227                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
74228                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
74229                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
74230                 WHEN 10 THEN 'EXCHANGE_RATE' 
74231                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
74232                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
74233                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
74234                 WHEN 14 THEN 'LINE_NUMBER' 
74235                 WHEN 15 THEN 'LINE_TYPE' 
74236                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
74237                 WHEN 17 THEN 'ENTERED_AMOUNT' 
74238                 WHEN 18 THEN 'ACCT_AMOUNT' 
74239                 
74240                 ELSE null
74241               END                           source_code
74242             , CASE r
74243                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
74244                 WHEN 2 THEN TO_CHAR(l1.PROVIDER_CCID)
74245                 WHEN 3 THEN TO_CHAR(l1.ADJ_PROVIDER_CCID)
74246                 WHEN 4 THEN TO_CHAR(l1.ADJ_RECEIVER_CCID)
74247                 WHEN 5 THEN TO_CHAR(l1.RECEIVER_CCID)
74248                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
74249                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
74250                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
74251                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
74252                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
74253                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
74254                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
74255                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
74256                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
74257                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
74258                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
74259                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
74260                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
74261                 
74262                 ELSE null
74263               END                           source_value
74264             , CASE r
74265                 WHEN 1 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
74266                           103371
74267                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
74268                          ,'ALLOW_OVERRIDE_CCID_FLAG'
74269                          ,'S'
74270                          ,275)
74271                 WHEN 15 THEN fvl35.meaning
74272                 
74273                 ELSE null
74274               END               source_meaning
74275          FROM  xla_events_gt     xet  
74276         , PA_XLA_CCDL_LINES_V  l1
74277   , fnd_lookup_values    fvl35
74278             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
74279         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74280           AND xet.event_class_code = C_EVENT_CLASS_CODE
74281             AND l1.event_id          = xet.event_id
74282    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
74283   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
74284   AND fvl35.view_application_id(+) = 275
74288 ;
74285   AND fvl35.language(+)            = USERENV('LANG')
74286   
74287 )
74289 --
74290 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74291 
74292       trace
74293          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
74294          ,p_level    => C_LEVEL_STATEMENT
74295          ,p_module   => l_log_module);
74296 
74297 END IF;
74298 
74299 
74300 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74301       trace
74302          (p_msg      => 'END of insert_sources_148'
74303          ,p_level    => C_LEVEL_PROCEDURE
74304          ,p_module   => l_log_module);
74305 END IF;
74306 EXCEPTION
74307   WHEN xla_exceptions_pkg.application_exception THEN
74308       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
74309             trace
74310                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
74311                ,p_level    => C_LEVEL_EXCEPTION
74312                ,p_module   => l_log_module);
74313       END IF;
74314       RAISE;
74315   WHEN OTHERS THEN
74316       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
74317             trace
74318                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
74319                ,p_level    => C_LEVEL_EXCEPTION
74320                ,p_module   => l_log_module);
74321        END IF;
74322        xla_exceptions_pkg.raise_message
74323            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_148');
74324 END insert_sources_148;
74325 --
74326 
74327 ---------------------------------------
74328 --
74329 -- PRIVATE FUNCTION
74330 --         EventClass_148
74331 --
74332 ----------------------------------------
74333 --
74334 FUNCTION EventClass_148
74335        (p_application_id         IN NUMBER
74336        ,p_base_ledger_id         IN NUMBER
74337        ,p_target_ledger_id       IN NUMBER
74338        ,p_language               IN VARCHAR2
74339        ,p_currency_code          IN VARCHAR2
74340        ,p_sla_ledger_id          IN NUMBER
74341        ,p_pad_start_date         IN DATE
74342        ,p_pad_end_date           IN DATE
74343        ,p_primary_ledger_id      IN NUMBER)
74344 RETURN BOOLEAN IS
74345 --
74346 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ADJ_ALL';
74347 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT_ADJ';
74348 
74349 l_calculate_acctd_flag   VARCHAR2(1) :='N';
74350 l_calculate_g_l_flag     VARCHAR2(1) :='N';
74351 --
74352 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74353 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74354 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74355 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74356 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74357 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74358 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74359 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74360 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74361 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74362 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74363 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74364 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74365 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74366 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74367 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74368 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74369 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74370 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74371 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74372 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74373 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74374 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
74375 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74376 
74377 l_event_id                             NUMBER;
74378 l_previous_event_id                    NUMBER;
74379 l_first_event_id                       NUMBER;
74380 l_last_event_id                        NUMBER;
74381 
74382 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
74383 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
74384 --
74385 --
74386 l_result                    BOOLEAN := TRUE;
74387 l_rows                      NUMBER  := 1000;
74388 l_event_type_name           VARCHAR2(80) := 'All';
74389 l_event_class_name          VARCHAR2(80) := 'Borrowed and Lent Adjustment';
74390 l_description               VARCHAR2(4000);
74391 l_transaction_reversal      NUMBER;
74392 l_ae_header_id              NUMBER;
74393 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
74394 l_log_module                VARCHAR2(240);
74395 --
74396 l_acct_reversal_source      VARCHAR2(30);
74397 l_trx_reversal_source       VARCHAR2(30);
74398 
74399 l_continue_with_lines       BOOLEAN := TRUE;
74400 --
74401 l_acc_rev_gl_date_source    DATE;                      -- 4262811
74402 --
74403 type t_array_event_id is table of number index by binary_integer;
74404 
74405 l_rec_array_event                    t_rec_array_event;
74406 l_null_rec_array_event               t_rec_array_event;
74407 l_array_ae_header_id                 xla_number_array_type;
74408 l_actual_flag                        VARCHAR2(1) := NULL;
74409 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
74413 --
74410 l_balance_type_code                  VARCHAR2(1) :=NULL;
74411 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
74412 
74414 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
74415 --
74416 
74417 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
74418 TYPE t_array_source_73 IS TABLE OF PA_XLA_EXP_HEADER_V.TP_AMT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
74419 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
74420 
74421 TYPE t_array_source_5 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
74422 TYPE t_array_source_9 IS TABLE OF PA_XLA_CCDL_LINES_V.PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
74423 TYPE t_array_source_10 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
74424 TYPE t_array_source_11 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
74425 TYPE t_array_source_16 IS TABLE OF PA_XLA_CCDL_LINES_V.RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
74426 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
74427 TYPE t_array_source_24 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
74428 TYPE t_array_source_26 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
74429 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
74430 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
74431 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
74432 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
74433 TYPE t_array_source_32 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
74434 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
74435 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
74436 TYPE t_array_source_36 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
74437 TYPE t_array_source_42 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
74438 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
74439 
74440 l_array_source_33              t_array_source_33;
74441 l_array_source_73              t_array_source_73;
74442 l_array_source_73_meaning      t_array_lookup_meaning;
74443 l_array_source_75              t_array_source_75;
74444 
74445 l_array_source_5      t_array_source_5;
74446 l_array_source_9      t_array_source_9;
74447 l_array_source_10      t_array_source_10;
74448 l_array_source_11      t_array_source_11;
74449 l_array_source_16      t_array_source_16;
74450 l_array_source_23      t_array_source_23;
74451 l_array_source_24      t_array_source_24;
74452 l_array_source_26      t_array_source_26;
74453 l_array_source_28      t_array_source_28;
74454 l_array_source_29      t_array_source_29;
74455 l_array_source_30      t_array_source_30;
74456 l_array_source_31      t_array_source_31;
74457 l_array_source_32      t_array_source_32;
74458 l_array_source_34      t_array_source_34;
74459 l_array_source_35      t_array_source_35;
74460 l_array_source_35_meaning      t_array_lookup_meaning;
74461 l_array_source_36      t_array_source_36;
74462 l_array_source_42      t_array_source_42;
74463 l_array_source_43      t_array_source_43;
74464 
74465 --
74466 CURSOR header_cur
74467 IS
74468 SELECT /*+ leading(xet) cardinality(xet,1) */
74469 -- Event Class Code: BORROWED_AND_LENT_ADJ
74470     xet.entity_id
74471    ,xet.legal_entity_id
74472    ,xet.entity_code
74473    ,xet.transaction_number
74474    ,xet.event_id
74475    ,xet.event_class_code
74476    ,xet.event_type_code
74477    ,xet.event_number
74478    ,xet.event_date
74479    ,xet.transaction_date
74480    ,xet.reference_num_1
74481    ,xet.reference_num_2
74482    ,xet.reference_num_3
74483    ,xet.reference_num_4
74484    ,xet.reference_char_1
74485    ,xet.reference_char_2
74486    ,xet.reference_char_3
74487    ,xet.reference_char_4
74488    ,xet.reference_date_1
74489    ,xet.reference_date_2
74490    ,xet.reference_date_3
74491    ,xet.reference_date_4
74492    ,xet.event_created_by
74493    ,xet.budgetary_control_flag 
74494   , h2.EXPENDITURE_ITEM_ID    source_33
74495   , h2.TP_AMT_TYPE_CODE    source_73
74496   , fvl73.meaning   source_73_meaning
74497   , h2.GL_DATE    source_75
74498   FROM xla_events_gt     xet 
74499   , PA_XLA_EXP_HEADER_V  h2
74500   , fnd_lookup_values    fvl73
74501  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
74502    and xet.event_class_code = C_EVENT_CLASS_CODE
74503    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
74504    AND fvl73.lookup_type(+)         = 'TP_AMOUNT_TYPE'
74505   AND fvl73.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
74506   AND fvl73.view_application_id(+) = 275
74507   AND fvl73.language(+)            = USERENV('LANG')
74508   
74509  ORDER BY event_id
74510 ;
74511 
74512 
74513 --
74514 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
74515 IS
74516 SELECT  /*+ leading(xet) cardinality(xet,1) */
74517 -- Event Class Code: BORROWED_AND_LENT_ADJ
74518     xet.entity_id
74519    ,xet.legal_entity_id
74520    ,xet.entity_code
74521    ,xet.transaction_number
74522    ,xet.event_id
74523    ,xet.event_class_code
74524    ,xet.event_type_code
74525    ,xet.event_number
74526    ,xet.event_date
74527    ,xet.transaction_date
74528    ,xet.reference_num_1
74529    ,xet.reference_num_2
74530    ,xet.reference_num_3
74531    ,xet.reference_num_4
74532    ,xet.reference_char_1
74533    ,xet.reference_char_2
74534    ,xet.reference_char_3
74538    ,xet.reference_date_3
74535    ,xet.reference_char_4
74536    ,xet.reference_date_1
74537    ,xet.reference_date_2
74539    ,xet.reference_date_4
74540    ,xet.event_created_by
74541    ,xet.budgetary_control_flag
74542  , l1.LINE_NUMBER  
74543   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
74544   , l1.PROVIDER_CCID    source_9
74545   , l1.ADJ_PROVIDER_CCID    source_10
74546   , l1.ADJ_RECEIVER_CCID    source_11
74547   , l1.RECEIVER_CCID    source_16
74548   , l1.REVERSING_LINE_FLAG    source_23
74549   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
74550   , l1.ENTERED_CURRENCY_CODE    source_26
74551   , l1.EXCHANGE_RATE_DATE    source_28
74552   , l1.EXCHANGE_RATE    source_29
74553   , l1.EXCHANGE_RATE_TYPE    source_30
74554   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
74555   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
74556   , l1.LINE_NUMBER    source_34
74557   , l1.LINE_TYPE    source_35
74558   , fvl35.meaning   source_35_meaning
74559   , l1.LINE_NUM_REVERSED    source_36
74560   , l1.ENTERED_AMOUNT    source_42
74561   , l1.ACCT_AMOUNT    source_43
74562   FROM xla_events_gt     xet 
74563   , PA_XLA_CCDL_LINES_V  l1
74564   , fnd_lookup_values    fvl35
74565  WHERE xet.event_id between x_first_event_id and x_last_event_id
74566    and xet.event_date between p_pad_start_date and p_pad_end_date
74567    and xet.event_class_code = C_EVENT_CLASS_CODE
74568    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
74569    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
74570   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
74571   AND fvl35.view_application_id(+) = 275
74572   AND fvl35.language(+)            = USERENV('LANG')
74573   ;
74574 
74575 --
74576 BEGIN
74577 IF g_log_enabled THEN
74578    l_log_module := C_DEFAULT_MODULE||'.EventClass_148';
74579 END IF;
74580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74581    trace
74582       (p_msg      => 'BEGIN of EventClass_148'
74583       ,p_level    => C_LEVEL_PROCEDURE
74584       ,p_module   => l_log_module);
74585 END IF;
74586 
74587 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74588    trace
74589       (p_msg      => 'p_application_id = '||p_application_id||
74590                      ' - p_base_ledger_id = '||p_base_ledger_id||
74591                      ' - p_target_ledger_id  = '||p_target_ledger_id||
74592                      ' - p_language = '||p_language||
74593                      ' - p_currency_code = '||p_currency_code||
74594                      ' - p_sla_ledger_id = '||p_sla_ledger_id
74595       ,p_level    => C_LEVEL_STATEMENT
74596       ,p_module   => l_log_module);
74597 END IF;
74598 --
74599 -- initialze arrays
74600 --
74601 g_array_event.DELETE;
74602 l_rec_array_event := l_null_rec_array_event;
74603 --
74604 --------------------------------------
74605 -- 4262811 Initialze MPA Line Number
74606 --------------------------------------
74607 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
74608 
74609 --
74610 
74611 --
74612 OPEN header_cur;
74613 --
74614 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74615    trace
74616    (p_msg      => 'SQL - FETCH header_cur'
74617    ,p_level    => C_LEVEL_STATEMENT
74618    ,p_module   => l_log_module);
74619 END IF;
74620 --
74621 LOOP
74622 FETCH header_cur BULK COLLECT INTO
74623         l_array_entity_id
74624       , l_array_legal_entity_id
74625       , l_array_entity_code
74626       , l_array_transaction_num
74627       , l_array_event_id
74628       , l_array_class_code
74629       , l_array_event_type
74630       , l_array_event_number
74631       , l_array_event_date
74632       , l_array_transaction_date
74633       , l_array_reference_num_1
74634       , l_array_reference_num_2
74635       , l_array_reference_num_3
74636       , l_array_reference_num_4
74637       , l_array_reference_char_1
74638       , l_array_reference_char_2
74639       , l_array_reference_char_3
74640       , l_array_reference_char_4
74641       , l_array_reference_date_1
74642       , l_array_reference_date_2
74643       , l_array_reference_date_3
74644       , l_array_reference_date_4
74645       , l_array_event_created_by
74646       , l_array_budgetary_control_flag 
74647       , l_array_source_33
74648       , l_array_source_73
74649       , l_array_source_73_meaning
74650       , l_array_source_75
74651       LIMIT l_rows;
74652 --
74653 IF (C_LEVEL_EVENT >= g_log_level) THEN
74654    trace
74655    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
74656    ,p_level    => C_LEVEL_EVENT
74657    ,p_module   => l_log_module);
74658 END IF;
74659 --
74660 EXIT WHEN l_array_entity_id.COUNT = 0;
74661 
74662 -- initialize arrays
74663 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
74664 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
74665 
74666 --
74667 -- Bug 4458708
74668 --
74669 XLA_AE_LINES_PKG.g_LineNumber := 0;
74670 
74671 
74672 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
74673 g_last_hdr_idx := l_array_event_id.LAST;
74674 --
74675 -- loop for the headers. Each iteration is for each header extract row
74676 -- fetched in header cursor
74677 --
74678 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
74679 
74680 --
74681 -- set event info as cache for other routines to refer event attributes
74682 --
74683 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
74684    (p_application_id           => p_application_id
74685    ,p_primary_ledger_id        => p_primary_ledger_id
74686    ,p_base_ledger_id           => p_base_ledger_id
74687    ,p_target_ledger_id         => p_target_ledger_id
74688    ,p_entity_id                => l_array_entity_id(hdr_idx)
74692    ,p_event_id                 => l_array_event_id(hdr_idx)
74689    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
74690    ,p_entity_code              => l_array_entity_code(hdr_idx)
74691    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
74693    ,p_event_class_code         => l_array_class_code(hdr_idx)
74694    ,p_event_type_code          => l_array_event_type(hdr_idx)
74695    ,p_event_number             => l_array_event_number(hdr_idx)
74696    ,p_event_date               => l_array_event_date(hdr_idx)
74697    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
74698    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
74699    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
74700    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
74701    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
74702    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
74703    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
74704    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
74705    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
74706    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
74707    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
74708    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
74709    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
74710    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
74711    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
74712 
74713 --
74714 -- set the status of entry to C_VALID (0)
74715 --
74716 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
74717 
74718 --
74719 -- initialize a row for ae header
74720 --
74721 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
74722 
74723 l_event_id := l_array_event_id(hdr_idx);
74724 
74725 --
74726 -- storing the hdr_idx for event. May be used by line cursor.
74727 --
74728 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
74729 
74730 --
74731 -- store sources from header extract. This can be improved to
74732 -- store only those sources from header extract that may be used in lines
74733 --
74734 
74735 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
74736 g_array_event(l_event_id).array_value_char('source_73') := l_array_source_73(hdr_idx);
74737 g_array_event(l_event_id).array_value_char('source_73_meaning') := l_array_source_73_meaning(hdr_idx);
74738 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
74739 
74740 --
74741 -- initilaize the status of ae headers for diffrent balance types
74742 -- the status is initialised to C_NOT_CREATED (2)
74743 --
74744 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74745 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74746 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74747 
74748 --
74749 -- call api to validate and store accounting attributes for header
74750 --
74751 
74752 ------------------------------------------------------------
74753 -- Accrual Reversal : to get date for Standard Source (NONE)
74754 ------------------------------------------------------------
74755 l_acc_rev_gl_date_source := NULL;
74756 
74757      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
74758       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
74759 
74760 
74761 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
74762 
74763 XLA_AE_HEADER_PKG.SetJeCategoryName;
74764 
74765 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
74766 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
74767 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
74768 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
74769 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
74770 
74771 
74772 -- No header level analytical criteria
74773 
74774 --
74775 --accounting attribute enhancement, bug 3612931
74776 --
74777 l_trx_reversal_source := SUBSTR(NULL, 1,30);
74778 
74779 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
74780    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
74781 
74782    xla_accounting_err_pkg.build_message
74783       (p_appli_s_name            => 'XLA'
74784       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
74785       ,p_token_1                 => 'ACCT_ATTR_NAME'
74786       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
74787       ,p_token_2                 => 'PRODUCT_NAME'
74788       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
74789       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
74790       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
74791       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
74792 
74793 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
74794    --
74795    -- following sets the accounting attributes needed to reverse
74796    -- accounting for a distributeion
74797    --
74798    xla_ae_lines_pkg.SetTrxReversalAttrs
74799       (p_event_id              => l_event_id
74800       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
74801       ,p_trx_reversal_source   => l_trx_reversal_source);
74802 
74803 END IF;
74804 
74805 
74806 ----------------------------------------------------------------
74810 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
74807 -- 4262811 -  update the header statuses to invalid in need be
74808 ----------------------------------------------------------------
74809 --
74811 
74812 
74813   -----------------------------------------------
74814   -- No accrual reversal for the event class/type
74815   -----------------------------------------------
74816 ----------------------------------------------------------------
74817 
74818 --
74819 -- this ends the header loop iteration for one bulk fetch
74820 --
74821 END LOOP;
74822 
74823 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
74824 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
74825 
74826 --
74827 -- insert dummy rows into lines gt table that were created due to
74828 -- transaction reversals
74829 --
74830 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
74831    l_result := XLA_AE_LINES_PKG.InsertLines;
74832 END IF;
74833 
74834 --
74835 -- reset the temp_line_num for each set of events fetched from header
74836 -- cursor rather than doing it for each new event in line cursor
74837 -- Bug 3939231
74838 --
74839 xla_ae_lines_pkg.g_temp_line_num := 0;
74840 
74841 
74842 
74843 --
74844 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
74845 --
74846 --
74847 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74848 
74849       trace
74850          (p_msg      => 'SQL - FETCH line_cur'
74851          ,p_level    => C_LEVEL_STATEMENT
74852          ,p_module   => l_log_module);
74853 
74854 END IF;
74855 --
74856 --
74857 LOOP
74858   --
74859   FETCH line_cur BULK COLLECT INTO
74860         l_array_entity_id
74861       , l_array_legal_entity_id
74862       , l_array_entity_code
74863       , l_array_transaction_num
74864       , l_array_event_id
74865       , l_array_class_code
74866       , l_array_event_type
74867       , l_array_event_number
74868       , l_array_event_date
74869       , l_array_transaction_date
74870       , l_array_reference_num_1
74871       , l_array_reference_num_2
74872       , l_array_reference_num_3
74873       , l_array_reference_num_4
74874       , l_array_reference_char_1
74875       , l_array_reference_char_2
74876       , l_array_reference_char_3
74877       , l_array_reference_char_4
74878       , l_array_reference_date_1
74879       , l_array_reference_date_2
74880       , l_array_reference_date_3
74881       , l_array_reference_date_4
74882       , l_array_event_created_by
74883       , l_array_budgetary_control_flag
74884       , l_array_extract_line_num 
74885       , l_array_source_5
74886       , l_array_source_9
74887       , l_array_source_10
74888       , l_array_source_11
74889       , l_array_source_16
74890       , l_array_source_23
74891       , l_array_source_24
74892       , l_array_source_26
74893       , l_array_source_28
74894       , l_array_source_29
74895       , l_array_source_30
74896       , l_array_source_31
74897       , l_array_source_32
74898       , l_array_source_34
74899       , l_array_source_35
74900       , l_array_source_35_meaning
74901       , l_array_source_36
74902       , l_array_source_42
74903       , l_array_source_43
74904       LIMIT l_rows;
74905 
74906   --
74907   IF (C_LEVEL_EVENT >= g_log_level) THEN
74908             trace
74909                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
74910                ,p_level    => C_LEVEL_EVENT
74911                ,p_module   => l_log_module);
74912   END IF;
74913   --
74914   EXIT WHEN l_array_entity_id.count = 0;
74915 
74916   XLA_AE_LINES_PKG.g_rec_lines := null;
74917 
74918 --
74919 -- Bug 4458708
74920 --
74921 XLA_AE_LINES_PKG.g_LineNumber := 0;
74922 --
74923 --
74924 
74925 FOR Idx IN 1..l_array_event_id.count LOOP
74926    --
74927    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
74928    --
74929    l_event_id := l_array_event_id(idx);  -- 5648433
74930 
74931    --
74932    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74933    --
74934 
74935    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
74936              (g_array_event(l_event_id).array_value_num('header_index'))
74937          ,'N'
74938          ) <> 'Y'
74939    THEN
74940       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74941          trace
74942             (p_msg      => 'Trancaction revesal option is not Y '
74943             ,p_level    => C_LEVEL_STATEMENT
74944             ,p_module   => l_log_module);
74945       END IF;
74946 
74947 --
74948 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
74949 --
74950 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
74951 --
74952 -- set event info as cache for other routines to refer event attributes
74953 --
74954 
74955 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
74956    l_previous_event_id := l_event_id;
74957 
74958    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
74959       (p_application_id           => p_application_id
74960       ,p_primary_ledger_id        => p_primary_ledger_id
74961       ,p_base_ledger_id           => p_base_ledger_id
74962       ,p_target_ledger_id         => p_target_ledger_id
74963       ,p_entity_id                => l_array_entity_id(Idx)
74964       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
74965       ,p_entity_code              => l_array_entity_code(Idx)
74966       ,p_transaction_num          => l_array_transaction_num(Idx)
74970       ,p_event_number             => l_array_event_number(Idx)
74967       ,p_event_id                 => l_array_event_id(Idx)
74968       ,p_event_class_code         => l_array_class_code(Idx)
74969       ,p_event_type_code          => l_array_event_type(Idx)
74971       ,p_event_date               => l_array_event_date(Idx)
74972       ,p_transaction_date         => l_array_transaction_date(Idx)
74973       ,p_reference_num_1          => l_array_reference_num_1(Idx)
74974       ,p_reference_num_2          => l_array_reference_num_2(Idx)
74975       ,p_reference_num_3          => l_array_reference_num_3(Idx)
74976       ,p_reference_num_4          => l_array_reference_num_4(Idx)
74977       ,p_reference_char_1         => l_array_reference_char_1(Idx)
74978       ,p_reference_char_2         => l_array_reference_char_2(Idx)
74979       ,p_reference_char_3         => l_array_reference_char_3(Idx)
74980       ,p_reference_char_4         => l_array_reference_char_4(Idx)
74981       ,p_reference_date_1         => l_array_reference_date_1(Idx)
74982       ,p_reference_date_2         => l_array_reference_date_2(Idx)
74983       ,p_reference_date_3         => l_array_reference_date_3(Idx)
74984       ,p_reference_date_4         => l_array_reference_date_4(Idx)
74985       ,p_event_created_by         => l_array_event_created_by(Idx)
74986       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
74987        --
74988 END IF;
74989 
74990 
74991 
74992 --
74993 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
74994 
74995 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
74996 
74997 IF l_continue_with_lines THEN
74998    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
74999       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75000 
75001       xla_accounting_err_pkg.build_message
75002          (p_appli_s_name            => 'XLA'
75003          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
75004          ,p_token_1                 => 'LINE_NUMBER'
75005          ,p_value_1                 => l_array_extract_line_num(Idx)
75006          ,p_token_2                 => 'PRODUCT_NAME'
75007          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75008          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75009          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75010          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75011 
75012    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
75013       --
75014       -- following sets the accounting attributes needed to reverse
75015       -- accounting for a distributeion
75016       --
75017 
75018       --
75019       -- 5217187
75020       --
75021       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
75022       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
75023                                        g_array_event(l_event_id).array_value_num('header_index'));
75024       --
75025       --
75026 
75027       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
75028       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
75029       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
75030       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
75031       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
75032       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_9(Idx));
75033       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
75034       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_42(Idx);
75035       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
75036       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
75037       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
75038       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
75039       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
75040       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
75041       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
75042       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
75043       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
75044       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
75045       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
75046       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
75047       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
75048       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_16(Idx));
75049       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
75050       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_42(Idx);
75051       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
75052       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
75053       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
75054       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
75055       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
75056       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
75057       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
75058       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
75059       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
75060       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
75061       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
75062       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
75066       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
75063       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
75064       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
75065       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
75067       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
75068       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
75069       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
75070       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
75071       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
75072       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
75073       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
75074       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
75075 
75076 
75077       xla_ae_lines_pkg.SetAcctReversalAttrs
75078          (p_event_id             => l_event_id
75079          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
75080          ,p_calculate_acctd_flag => l_calculate_acctd_flag
75081          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
75082    END IF;
75083 
75084    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
75085        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
75086 
75087 --
75088 AcctLineType_63 (
75089  p_application_id  => p_application_id
75090  ,p_event_id     => l_event_id
75091  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75092  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75093  ,p_actual_flag => l_actual_flag
75094  ,p_balance_type_code => l_balance_type_code
75095  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75096  
75097  , p_source_5 => l_array_source_5(Idx)
75098  , p_source_9 => l_array_source_9(Idx)
75099  , p_source_10 => l_array_source_10(Idx)
75100  , p_source_16 => l_array_source_16(Idx)
75101  , p_source_23 => l_array_source_23(Idx)
75102  , p_source_24 => l_array_source_24(Idx)
75103  , p_source_26 => l_array_source_26(Idx)
75104  , p_source_28 => l_array_source_28(Idx)
75105  , p_source_29 => l_array_source_29(Idx)
75106  , p_source_30 => l_array_source_30(Idx)
75107  , p_source_31 => l_array_source_31(Idx)
75108  , p_source_32 => l_array_source_32(Idx)
75109  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
75110  , p_source_34 => l_array_source_34(Idx)
75111  , p_source_35 => l_array_source_35(Idx)
75112  , p_source_35_meaning => l_array_source_35_meaning(Idx)
75113  , p_source_36 => l_array_source_36(Idx)
75114  , p_source_42 => l_array_source_42(Idx)
75115  , p_source_43 => l_array_source_43(Idx)
75116  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
75117  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
75118  );
75119 If(l_balance_type_code = 'A') THEN
75120   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75121 END IF;
75122 
75123 --
75124 
75125 
75126 --
75127 AcctLineType_65 (
75128  p_application_id  => p_application_id
75129  ,p_event_id     => l_event_id
75130  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75131  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75132  ,p_actual_flag => l_actual_flag
75133  ,p_balance_type_code => l_balance_type_code
75134  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75135  
75136  , p_source_5 => l_array_source_5(Idx)
75137  , p_source_9 => l_array_source_9(Idx)
75138  , p_source_10 => l_array_source_10(Idx)
75139  , p_source_16 => l_array_source_16(Idx)
75140  , p_source_23 => l_array_source_23(Idx)
75141  , p_source_24 => l_array_source_24(Idx)
75142  , p_source_26 => l_array_source_26(Idx)
75143  , p_source_28 => l_array_source_28(Idx)
75144  , p_source_29 => l_array_source_29(Idx)
75145  , p_source_30 => l_array_source_30(Idx)
75146  , p_source_31 => l_array_source_31(Idx)
75147  , p_source_32 => l_array_source_32(Idx)
75148  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
75149  , p_source_34 => l_array_source_34(Idx)
75150  , p_source_35 => l_array_source_35(Idx)
75151  , p_source_35_meaning => l_array_source_35_meaning(Idx)
75152  , p_source_36 => l_array_source_36(Idx)
75153  , p_source_42 => l_array_source_42(Idx)
75154  , p_source_43 => l_array_source_43(Idx)
75155  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
75156  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
75157  );
75158 If(l_balance_type_code = 'A') THEN
75159   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75160 END IF;
75161 
75162 --
75163 
75164 
75165 --
75166 AcctLineType_119 (
75167  p_application_id  => p_application_id
75168  ,p_event_id     => l_event_id
75169  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75170  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75171  ,p_actual_flag => l_actual_flag
75172  ,p_balance_type_code => l_balance_type_code
75173  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75174  
75175  , p_source_5 => l_array_source_5(Idx)
75176  , p_source_9 => l_array_source_9(Idx)
75177  , p_source_11 => l_array_source_11(Idx)
75178  , p_source_16 => l_array_source_16(Idx)
75179  , p_source_23 => l_array_source_23(Idx)
75180  , p_source_24 => l_array_source_24(Idx)
75181  , p_source_26 => l_array_source_26(Idx)
75182  , p_source_28 => l_array_source_28(Idx)
75183  , p_source_29 => l_array_source_29(Idx)
75184  , p_source_30 => l_array_source_30(Idx)
75185  , p_source_31 => l_array_source_31(Idx)
75186  , p_source_32 => l_array_source_32(Idx)
75187  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
75188  , p_source_34 => l_array_source_34(Idx)
75189  , p_source_35 => l_array_source_35(Idx)
75190  , p_source_35_meaning => l_array_source_35_meaning(Idx)
75194  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
75191  , p_source_36 => l_array_source_36(Idx)
75192  , p_source_42 => l_array_source_42(Idx)
75193  , p_source_43 => l_array_source_43(Idx)
75195  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
75196  );
75197 If(l_balance_type_code = 'A') THEN
75198   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75199 END IF;
75200 
75201 --
75202 
75203 
75204 --
75205 AcctLineType_121 (
75206  p_application_id  => p_application_id
75207  ,p_event_id     => l_event_id
75208  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75209  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75210  ,p_actual_flag => l_actual_flag
75211  ,p_balance_type_code => l_balance_type_code
75212  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75213  
75214  , p_source_5 => l_array_source_5(Idx)
75215  , p_source_9 => l_array_source_9(Idx)
75216  , p_source_11 => l_array_source_11(Idx)
75217  , p_source_16 => l_array_source_16(Idx)
75218  , p_source_23 => l_array_source_23(Idx)
75219  , p_source_24 => l_array_source_24(Idx)
75220  , p_source_26 => l_array_source_26(Idx)
75221  , p_source_28 => l_array_source_28(Idx)
75222  , p_source_29 => l_array_source_29(Idx)
75223  , p_source_30 => l_array_source_30(Idx)
75224  , p_source_31 => l_array_source_31(Idx)
75225  , p_source_32 => l_array_source_32(Idx)
75226  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
75227  , p_source_34 => l_array_source_34(Idx)
75228  , p_source_35 => l_array_source_35(Idx)
75229  , p_source_35_meaning => l_array_source_35_meaning(Idx)
75230  , p_source_36 => l_array_source_36(Idx)
75231  , p_source_42 => l_array_source_42(Idx)
75232  , p_source_43 => l_array_source_43(Idx)
75233  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
75234  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
75235  );
75236 If(l_balance_type_code = 'A') THEN
75237   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75238 END IF;
75239 
75240 --
75241 
75242       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
75243       -- or secondary ledger that has different currency with primary
75244       -- or alc that is calculated by sla
75245       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
75246             (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'))
75247 
75248 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
75249 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
75250           AND (l_actual_flag = 'A')) THEN
75251         XLA_AE_LINES_PKG.CreateGainOrLossLines(
75252           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
75253          ,p_application_id   => p_application_id
75254          ,p_amb_context_code => 'DEFAULT'
75255          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
75256          ,p_event_class_code => C_EVENT_CLASS_CODE
75257          ,p_event_type_code  => C_EVENT_TYPE_CODE
75258          
75259          ,p_gain_ccid        => -1
75260          ,p_loss_ccid        => -1
75261 
75262          ,p_actual_flag      => l_actual_flag
75263          ,p_enc_flag         => null
75264          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
75265          ,p_enc_g_l_ref      => null
75266          );
75267       END IF;
75268    END IF;
75269 END IF;
75270 
75271    ELSE
75272       --
75273       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
75274       --
75275       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75276          trace
75277             (p_msg      => 'Trancaction revesal option is Y'
75278             ,p_level    => C_LEVEL_STATEMENT
75279             ,p_module   => l_log_module);
75280       END IF;
75281    END IF;
75282 
75283 END LOOP;
75284 l_result := XLA_AE_LINES_PKG.InsertLines ;
75285 end loop;
75286 close line_cur;
75287 
75288 
75289 --
75290 -- insert headers into xla_ae_headers_gt table
75291 --
75292 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
75293 
75294 -- insert into errors table here.
75295 
75296 END LOOP;
75297 
75298 --
75299 -- 4865292
75300 --
75301 -- Compare g_hdr_extract_count with event count in
75302 -- CreateHeadersAndLines.
75303 --
75304 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
75305 
75306 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75307    trace (p_msg     => '# rows extracted from header extract objects '
75308                     || ' (running total): '
75309                     || g_hdr_extract_count
75310          ,p_level   => C_LEVEL_STATEMENT
75311          ,p_module  => l_log_module);
75312 END IF;
75313 
75314 CLOSE header_cur;
75315 --
75316 
75317 --
75318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75319    trace
75320       (p_msg      => 'END of EventClass_148'
75321       ,p_level    => C_LEVEL_PROCEDURE
75322       ,p_module   => l_log_module);
75323 END IF;
75324 --
75325 RETURN l_result;
75326 EXCEPTION
75327 WHEN xla_exceptions_pkg.application_exception THEN
75328    
75329 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
75330 
75331    
75332 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
75333 
75334    RAISE;
75335 WHEN OTHERS THEN
75336    xla_exceptions_pkg.raise_message
75337       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_148');
75338 END EventClass_148;
75339 --
75340 
75341 ---------------------------------------
75342 --
75346 ----------------------------------------
75343 -- PRIVATE PROCEDURE
75344 --         insert_sources_149
75345 --
75347 --
75348 PROCEDURE insert_sources_149(
75349                                 p_target_ledger_id       IN NUMBER
75350                               , p_language               IN VARCHAR2
75351                               , p_sla_ledger_id          IN NUMBER
75352                               , p_pad_start_date         IN DATE
75353                               , p_pad_end_date           IN DATE
75354                          )
75355 IS
75356 
75357 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ALL';
75358 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT';
75359 p_apps_owner                   VARCHAR2(30);
75360 l_log_module                   VARCHAR2(240);
75361 BEGIN
75362 IF g_log_enabled THEN
75363       l_log_module := C_DEFAULT_MODULE||'.insert_sources_149';
75364 END IF;
75365 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75366 
75367       trace
75368          (p_msg      => 'BEGIN of insert_sources_149'
75369          ,p_level    => C_LEVEL_PROCEDURE
75370          ,p_module   => l_log_module);
75371 
75372 END IF;
75373 
75374 -- select APPS owner
75375 SELECT oracle_username
75376   INTO p_apps_owner
75377   FROM fnd_oracle_userid
75378  WHERE read_only_flag = 'U'
75379 ;
75380 
75381 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75382       trace
75383          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
75384                         ' - p_language = '||p_language||
75385                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
75386                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
75387                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
75388                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
75389          ,p_level    => C_LEVEL_STATEMENT
75390          ,p_module   => l_log_module);
75391 END IF;
75392 
75393 
75394 --
75395 INSERT INTO xla_diag_sources --hdr2
75396 (
75397         event_id
75398       , ledger_id
75399       , sla_ledger_id
75400       , description_language
75401       , object_name
75402       , object_type_code
75403       , line_number
75404       , source_application_id
75405       , source_type_code
75406       , source_code
75407       , source_value
75408       , source_meaning
75409       , created_by
75410       , creation_date
75411       , last_update_date
75412       , last_updated_by
75413       , last_update_login
75414       , program_update_date
75415       , program_application_id
75416       , program_id
75417       , request_id
75418 )
75419 SELECT
75420         event_id
75421       , p_target_ledger_id
75422       , p_sla_ledger_id
75423       , p_language
75424       , object_name
75425       , object_type_code
75426       , line_number
75427       , source_application_id
75428       , source_type_code
75429       , source_code
75430       , SUBSTR(source_value ,1,1996)
75431       , SUBSTR(source_meaning ,1,200)
75432       , xla_environment_pkg.g_Usr_Id
75433       , TRUNC(SYSDATE)
75434       , TRUNC(SYSDATE)
75435       , xla_environment_pkg.g_Usr_Id
75436       , xla_environment_pkg.g_Login_Id
75437       , TRUNC(SYSDATE)
75438       , xla_environment_pkg.g_Prog_Appl_Id
75439       , xla_environment_pkg.g_Prog_Id
75440       , xla_environment_pkg.g_Req_Id
75441   FROM (
75442        SELECT xet.event_id                  event_id
75443             , 0                          line_number
75444             , CASE r
75445                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
75446                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
75447                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
75448                 
75449                ELSE null
75450               END                           object_name
75451             , CASE r
75452                 WHEN 1 THEN 'HEADER' 
75453                 WHEN 2 THEN 'HEADER' 
75454                 WHEN 3 THEN 'HEADER' 
75455                 
75456                 ELSE null
75457               END                           object_type_code
75458             , CASE r
75459                 WHEN 1 THEN '275' 
75460                 WHEN 2 THEN '275' 
75461                 WHEN 3 THEN '275' 
75462                 
75463                 ELSE null
75464               END                           source_application_id
75465             , 'S'             source_type_code
75466             , CASE r
75467                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
75468                 WHEN 2 THEN 'TP_AMT_TYPE_CODE' 
75469                 WHEN 3 THEN 'GL_DATE' 
75470                 
75471                 ELSE null
75472               END                           source_code
75473             , CASE r
75474                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
75475                 WHEN 2 THEN TO_CHAR(h2.TP_AMT_TYPE_CODE)
75476                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
75477                 
75478                 ELSE null
75479               END                           source_value
75480             , CASE r
75481                 WHEN 2 THEN fvl73.meaning
75482                 
75483                 ELSE null
75484               END               source_meaning
75485          FROM xla_events_gt     xet  
75486       , PA_XLA_EXP_HEADER_V  h2
75487   , fnd_lookup_values    fvl73
75488              ,(select rownum r from all_objects where rownum <= 3 and owner = p_apps_owner)
75489          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
75490            AND xet.event_class_code = C_EVENT_CLASS_CODE
75491               AND h2.event_id = xet.event_id
75492    AND fvl73.lookup_type(+)         = 'TP_AMOUNT_TYPE'
75496   
75493   AND fvl73.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
75494   AND fvl73.view_application_id(+) = 275
75495   AND fvl73.language(+)            = USERENV('LANG')
75497 )
75498 ;
75499 --
75500 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75501 
75502       trace
75503          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
75504          ,p_level    => C_LEVEL_STATEMENT
75505          ,p_module   => l_log_module);
75506 
75507 END IF;
75508 --
75509 
75510 
75511 
75512 --
75513 INSERT INTO xla_diag_sources  --line2
75514 (
75515         event_id
75516       , ledger_id
75517       , sla_ledger_id
75518       , description_language
75519       , object_name
75520       , object_type_code
75521       , line_number
75522       , source_application_id
75523       , source_type_code
75524       , source_code
75525       , source_value
75526       , source_meaning
75527       , created_by
75528       , creation_date
75529       , last_update_date
75530       , last_updated_by
75531       , last_update_login
75532       , program_update_date
75533       , program_application_id
75534       , program_id
75535       , request_id
75536 )
75537 SELECT  event_id
75538       , p_target_ledger_id
75539       , p_sla_ledger_id
75540       , p_language
75541       , object_name
75542       , object_type_code
75543       , line_number
75544       , source_application_id
75545       , source_type_code
75546       , source_code
75547       , SUBSTR(source_value,1,1996)
75548       , SUBSTR(source_meaning ,1,200)
75549       , xla_environment_pkg.g_Usr_Id
75550       , TRUNC(SYSDATE)
75551       , TRUNC(SYSDATE)
75552       , xla_environment_pkg.g_Usr_Id
75553       , xla_environment_pkg.g_Login_Id
75554       , TRUNC(SYSDATE)
75555       , xla_environment_pkg.g_Prog_Appl_Id
75556       , xla_environment_pkg.g_Prog_Id
75557       , xla_environment_pkg.g_Req_Id
75558   FROM (
75559        SELECT xet.event_id                  event_id
75560             , l1.line_number                 line_number
75561             , CASE r
75562                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
75563                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
75564                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
75565                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
75566                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
75567                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
75568                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
75569                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
75570                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
75571                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
75572                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
75573                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
75574                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
75575                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
75576                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
75577                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
75578                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
75579                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
75580                 
75581                ELSE null
75582               END                           object_name
75583             , CASE r
75584                 WHEN 1 THEN 'LINE' 
75585                 WHEN 2 THEN 'LINE' 
75586                 WHEN 3 THEN 'LINE' 
75587                 WHEN 4 THEN 'LINE' 
75588                 WHEN 5 THEN 'LINE' 
75589                 WHEN 6 THEN 'LINE' 
75590                 WHEN 7 THEN 'LINE' 
75591                 WHEN 8 THEN 'LINE' 
75592                 WHEN 9 THEN 'LINE' 
75593                 WHEN 10 THEN 'LINE' 
75594                 WHEN 11 THEN 'LINE' 
75595                 WHEN 12 THEN 'LINE' 
75596                 WHEN 13 THEN 'LINE' 
75597                 WHEN 14 THEN 'LINE' 
75598                 WHEN 15 THEN 'LINE' 
75599                 WHEN 16 THEN 'LINE' 
75600                 WHEN 17 THEN 'LINE' 
75601                 WHEN 18 THEN 'LINE' 
75602                 
75603                 ELSE null
75604               END                           object_type_code
75605             , CASE r
75606                 WHEN 1 THEN '275' 
75607                 WHEN 2 THEN '275' 
75608                 WHEN 3 THEN '275' 
75609                 WHEN 4 THEN '275' 
75610                 WHEN 5 THEN '275' 
75611                 WHEN 6 THEN '275' 
75612                 WHEN 7 THEN '275' 
75613                 WHEN 8 THEN '275' 
75614                 WHEN 9 THEN '275' 
75615                 WHEN 10 THEN '275' 
75616                 WHEN 11 THEN '275' 
75617                 WHEN 12 THEN '275' 
75618                 WHEN 13 THEN '275' 
75619                 WHEN 14 THEN '275' 
75620                 WHEN 15 THEN '275' 
75621                 WHEN 16 THEN '275' 
75622                 WHEN 17 THEN '275' 
75623                 WHEN 18 THEN '275' 
75624                 
75625                 ELSE null
75626               END                           source_application_id
75627             , 'S'             source_type_code
75628             , CASE r
75629                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
75630                 WHEN 2 THEN 'PROVIDER_CCID' 
75631                 WHEN 3 THEN 'ADJ_PROVIDER_CCID' 
75632                 WHEN 4 THEN 'ADJ_RECEIVER_CCID' 
75633                 WHEN 5 THEN 'RECEIVER_CCID' 
75634                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
75635                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
75636                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
75637                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
75638                 WHEN 10 THEN 'EXCHANGE_RATE' 
75639                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
75640                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
75644                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
75641                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
75642                 WHEN 14 THEN 'LINE_NUMBER' 
75643                 WHEN 15 THEN 'LINE_TYPE' 
75645                 WHEN 17 THEN 'ENTERED_AMOUNT' 
75646                 WHEN 18 THEN 'ACCT_AMOUNT' 
75647                 
75648                 ELSE null
75649               END                           source_code
75650             , CASE r
75651                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
75652                 WHEN 2 THEN TO_CHAR(l1.PROVIDER_CCID)
75653                 WHEN 3 THEN TO_CHAR(l1.ADJ_PROVIDER_CCID)
75654                 WHEN 4 THEN TO_CHAR(l1.ADJ_RECEIVER_CCID)
75655                 WHEN 5 THEN TO_CHAR(l1.RECEIVER_CCID)
75656                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
75657                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
75658                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
75659                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
75660                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
75661                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
75662                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
75663                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
75664                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
75665                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
75666                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
75667                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
75668                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
75669                 
75670                 ELSE null
75671               END                           source_value
75672             , CASE r
75673                 WHEN 1 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
75674                           103371
75675                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
75676                          ,'ALLOW_OVERRIDE_CCID_FLAG'
75677                          ,'S'
75678                          ,275)
75679                 WHEN 15 THEN fvl35.meaning
75680                 
75681                 ELSE null
75682               END               source_meaning
75683          FROM  xla_events_gt     xet  
75684         , PA_XLA_CCDL_LINES_V  l1
75685   , fnd_lookup_values    fvl35
75686             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
75687         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
75688           AND xet.event_class_code = C_EVENT_CLASS_CODE
75689             AND l1.event_id          = xet.event_id
75690    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
75691   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
75692   AND fvl35.view_application_id(+) = 275
75693   AND fvl35.language(+)            = USERENV('LANG')
75694   
75695 )
75696 ;
75697 --
75698 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75699 
75700       trace
75701          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
75702          ,p_level    => C_LEVEL_STATEMENT
75703          ,p_module   => l_log_module);
75704 
75705 END IF;
75706 
75707 
75708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75709       trace
75710          (p_msg      => 'END of insert_sources_149'
75711          ,p_level    => C_LEVEL_PROCEDURE
75712          ,p_module   => l_log_module);
75713 END IF;
75714 EXCEPTION
75715   WHEN xla_exceptions_pkg.application_exception THEN
75716       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
75717             trace
75718                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
75719                ,p_level    => C_LEVEL_EXCEPTION
75720                ,p_module   => l_log_module);
75721       END IF;
75722       RAISE;
75723   WHEN OTHERS THEN
75724       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
75725             trace
75726                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
75727                ,p_level    => C_LEVEL_EXCEPTION
75728                ,p_module   => l_log_module);
75729        END IF;
75730        xla_exceptions_pkg.raise_message
75731            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_149');
75732 END insert_sources_149;
75733 --
75734 
75735 ---------------------------------------
75736 --
75737 -- PRIVATE FUNCTION
75738 --         EventClass_149
75739 --
75740 ----------------------------------------
75741 --
75742 FUNCTION EventClass_149
75743        (p_application_id         IN NUMBER
75744        ,p_base_ledger_id         IN NUMBER
75745        ,p_target_ledger_id       IN NUMBER
75746        ,p_language               IN VARCHAR2
75747        ,p_currency_code          IN VARCHAR2
75748        ,p_sla_ledger_id          IN NUMBER
75749        ,p_pad_start_date         IN DATE
75750        ,p_pad_end_date           IN DATE
75751        ,p_primary_ledger_id      IN NUMBER)
75752 RETURN BOOLEAN IS
75753 --
75754 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BORROWED_AND_LENT_ALL';
75755 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BORROWED_AND_LENT';
75756 
75757 l_calculate_acctd_flag   VARCHAR2(1) :='N';
75758 l_calculate_g_l_flag     VARCHAR2(1) :='N';
75759 --
75760 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75761 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75762 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75763 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75764 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75765 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75766 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75767 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75768 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75772 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75769 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75770 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75771 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75773 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75774 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75775 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75776 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75777 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75778 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75779 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75780 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75781 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75782 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
75783 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75784 
75785 l_event_id                             NUMBER;
75786 l_previous_event_id                    NUMBER;
75787 l_first_event_id                       NUMBER;
75788 l_last_event_id                        NUMBER;
75789 
75790 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
75791 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
75792 --
75793 --
75794 l_result                    BOOLEAN := TRUE;
75795 l_rows                      NUMBER  := 1000;
75796 l_event_type_name           VARCHAR2(80) := 'All';
75797 l_event_class_name          VARCHAR2(80) := 'Borrowed and Lent';
75798 l_description               VARCHAR2(4000);
75799 l_transaction_reversal      NUMBER;
75800 l_ae_header_id              NUMBER;
75801 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
75802 l_log_module                VARCHAR2(240);
75803 --
75804 l_acct_reversal_source      VARCHAR2(30);
75805 l_trx_reversal_source       VARCHAR2(30);
75806 
75807 l_continue_with_lines       BOOLEAN := TRUE;
75808 --
75809 l_acc_rev_gl_date_source    DATE;                      -- 4262811
75810 --
75811 type t_array_event_id is table of number index by binary_integer;
75812 
75813 l_rec_array_event                    t_rec_array_event;
75814 l_null_rec_array_event               t_rec_array_event;
75815 l_array_ae_header_id                 xla_number_array_type;
75816 l_actual_flag                        VARCHAR2(1) := NULL;
75817 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
75818 l_balance_type_code                  VARCHAR2(1) :=NULL;
75819 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
75820 
75821 --
75822 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
75823 --
75824 
75825 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
75826 TYPE t_array_source_73 IS TABLE OF PA_XLA_EXP_HEADER_V.TP_AMT_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
75827 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
75828 
75829 TYPE t_array_source_5 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
75830 TYPE t_array_source_9 IS TABLE OF PA_XLA_CCDL_LINES_V.PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
75831 TYPE t_array_source_10 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_PROVIDER_CCID%TYPE INDEX BY BINARY_INTEGER;
75832 TYPE t_array_source_11 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
75833 TYPE t_array_source_16 IS TABLE OF PA_XLA_CCDL_LINES_V.RECEIVER_CCID%TYPE INDEX BY BINARY_INTEGER;
75834 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
75835 TYPE t_array_source_24 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
75836 TYPE t_array_source_26 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
75837 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
75838 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
75839 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
75840 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
75841 TYPE t_array_source_32 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
75842 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
75843 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
75844 TYPE t_array_source_36 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
75845 TYPE t_array_source_42 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
75846 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
75847 
75848 l_array_source_33              t_array_source_33;
75849 l_array_source_73              t_array_source_73;
75850 l_array_source_73_meaning      t_array_lookup_meaning;
75851 l_array_source_75              t_array_source_75;
75852 
75853 l_array_source_5      t_array_source_5;
75854 l_array_source_9      t_array_source_9;
75855 l_array_source_10      t_array_source_10;
75856 l_array_source_11      t_array_source_11;
75857 l_array_source_16      t_array_source_16;
75858 l_array_source_23      t_array_source_23;
75859 l_array_source_24      t_array_source_24;
75860 l_array_source_26      t_array_source_26;
75861 l_array_source_28      t_array_source_28;
75862 l_array_source_29      t_array_source_29;
75863 l_array_source_30      t_array_source_30;
75864 l_array_source_31      t_array_source_31;
75865 l_array_source_32      t_array_source_32;
75866 l_array_source_34      t_array_source_34;
75870 l_array_source_42      t_array_source_42;
75867 l_array_source_35      t_array_source_35;
75868 l_array_source_35_meaning      t_array_lookup_meaning;
75869 l_array_source_36      t_array_source_36;
75871 l_array_source_43      t_array_source_43;
75872 
75873 --
75874 CURSOR header_cur
75875 IS
75876 SELECT /*+ leading(xet) cardinality(xet,1) */
75877 -- Event Class Code: BORROWED_AND_LENT
75878     xet.entity_id
75879    ,xet.legal_entity_id
75880    ,xet.entity_code
75881    ,xet.transaction_number
75882    ,xet.event_id
75883    ,xet.event_class_code
75884    ,xet.event_type_code
75885    ,xet.event_number
75886    ,xet.event_date
75887    ,xet.transaction_date
75888    ,xet.reference_num_1
75889    ,xet.reference_num_2
75890    ,xet.reference_num_3
75891    ,xet.reference_num_4
75892    ,xet.reference_char_1
75893    ,xet.reference_char_2
75894    ,xet.reference_char_3
75895    ,xet.reference_char_4
75896    ,xet.reference_date_1
75897    ,xet.reference_date_2
75898    ,xet.reference_date_3
75899    ,xet.reference_date_4
75900    ,xet.event_created_by
75901    ,xet.budgetary_control_flag 
75902   , h2.EXPENDITURE_ITEM_ID    source_33
75903   , h2.TP_AMT_TYPE_CODE    source_73
75904   , fvl73.meaning   source_73_meaning
75905   , h2.GL_DATE    source_75
75906   FROM xla_events_gt     xet 
75907   , PA_XLA_EXP_HEADER_V  h2
75908   , fnd_lookup_values    fvl73
75909  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
75910    and xet.event_class_code = C_EVENT_CLASS_CODE
75911    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
75912    AND fvl73.lookup_type(+)         = 'TP_AMOUNT_TYPE'
75913   AND fvl73.lookup_code(+)         = h2.TP_AMT_TYPE_CODE
75914   AND fvl73.view_application_id(+) = 275
75915   AND fvl73.language(+)            = USERENV('LANG')
75916   
75917  ORDER BY event_id
75918 ;
75919 
75920 
75921 --
75922 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
75923 IS
75924 SELECT  /*+ leading(xet) cardinality(xet,1) */
75925 -- Event Class Code: BORROWED_AND_LENT
75926     xet.entity_id
75927    ,xet.legal_entity_id
75928    ,xet.entity_code
75929    ,xet.transaction_number
75930    ,xet.event_id
75931    ,xet.event_class_code
75932    ,xet.event_type_code
75933    ,xet.event_number
75934    ,xet.event_date
75935    ,xet.transaction_date
75936    ,xet.reference_num_1
75937    ,xet.reference_num_2
75938    ,xet.reference_num_3
75939    ,xet.reference_num_4
75940    ,xet.reference_char_1
75941    ,xet.reference_char_2
75942    ,xet.reference_char_3
75943    ,xet.reference_char_4
75944    ,xet.reference_date_1
75945    ,xet.reference_date_2
75946    ,xet.reference_date_3
75947    ,xet.reference_date_4
75948    ,xet.event_created_by
75949    ,xet.budgetary_control_flag
75950  , l1.LINE_NUMBER  
75951   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
75952   , l1.PROVIDER_CCID    source_9
75953   , l1.ADJ_PROVIDER_CCID    source_10
75954   , l1.ADJ_RECEIVER_CCID    source_11
75955   , l1.RECEIVER_CCID    source_16
75956   , l1.REVERSING_LINE_FLAG    source_23
75957   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
75958   , l1.ENTERED_CURRENCY_CODE    source_26
75959   , l1.EXCHANGE_RATE_DATE    source_28
75960   , l1.EXCHANGE_RATE    source_29
75961   , l1.EXCHANGE_RATE_TYPE    source_30
75962   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
75963   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
75964   , l1.LINE_NUMBER    source_34
75965   , l1.LINE_TYPE    source_35
75966   , fvl35.meaning   source_35_meaning
75967   , l1.LINE_NUM_REVERSED    source_36
75968   , l1.ENTERED_AMOUNT    source_42
75969   , l1.ACCT_AMOUNT    source_43
75970   FROM xla_events_gt     xet 
75971   , PA_XLA_CCDL_LINES_V  l1
75972   , fnd_lookup_values    fvl35
75973  WHERE xet.event_id between x_first_event_id and x_last_event_id
75974    and xet.event_date between p_pad_start_date and p_pad_end_date
75975    and xet.event_class_code = C_EVENT_CLASS_CODE
75976    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
75977    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
75978   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
75979   AND fvl35.view_application_id(+) = 275
75980   AND fvl35.language(+)            = USERENV('LANG')
75981   ;
75982 
75983 --
75984 BEGIN
75985 IF g_log_enabled THEN
75986    l_log_module := C_DEFAULT_MODULE||'.EventClass_149';
75987 END IF;
75988 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75989    trace
75990       (p_msg      => 'BEGIN of EventClass_149'
75991       ,p_level    => C_LEVEL_PROCEDURE
75992       ,p_module   => l_log_module);
75993 END IF;
75994 
75995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75996    trace
75997       (p_msg      => 'p_application_id = '||p_application_id||
75998                      ' - p_base_ledger_id = '||p_base_ledger_id||
75999                      ' - p_target_ledger_id  = '||p_target_ledger_id||
76000                      ' - p_language = '||p_language||
76001                      ' - p_currency_code = '||p_currency_code||
76002                      ' - p_sla_ledger_id = '||p_sla_ledger_id
76003       ,p_level    => C_LEVEL_STATEMENT
76004       ,p_module   => l_log_module);
76005 END IF;
76006 --
76007 -- initialze arrays
76008 --
76009 g_array_event.DELETE;
76010 l_rec_array_event := l_null_rec_array_event;
76011 --
76012 --------------------------------------
76013 -- 4262811 Initialze MPA Line Number
76014 --------------------------------------
76015 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
76016 
76017 --
76018 
76019 --
76020 OPEN header_cur;
76021 --
76022 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76023    trace
76024    (p_msg      => 'SQL - FETCH header_cur'
76028 --
76025    ,p_level    => C_LEVEL_STATEMENT
76026    ,p_module   => l_log_module);
76027 END IF;
76029 LOOP
76030 FETCH header_cur BULK COLLECT INTO
76031         l_array_entity_id
76032       , l_array_legal_entity_id
76033       , l_array_entity_code
76034       , l_array_transaction_num
76035       , l_array_event_id
76036       , l_array_class_code
76037       , l_array_event_type
76038       , l_array_event_number
76039       , l_array_event_date
76040       , l_array_transaction_date
76041       , l_array_reference_num_1
76042       , l_array_reference_num_2
76043       , l_array_reference_num_3
76044       , l_array_reference_num_4
76045       , l_array_reference_char_1
76046       , l_array_reference_char_2
76047       , l_array_reference_char_3
76048       , l_array_reference_char_4
76049       , l_array_reference_date_1
76050       , l_array_reference_date_2
76051       , l_array_reference_date_3
76052       , l_array_reference_date_4
76053       , l_array_event_created_by
76054       , l_array_budgetary_control_flag 
76055       , l_array_source_33
76056       , l_array_source_73
76057       , l_array_source_73_meaning
76058       , l_array_source_75
76059       LIMIT l_rows;
76060 --
76061 IF (C_LEVEL_EVENT >= g_log_level) THEN
76062    trace
76063    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
76064    ,p_level    => C_LEVEL_EVENT
76065    ,p_module   => l_log_module);
76066 END IF;
76067 --
76068 EXIT WHEN l_array_entity_id.COUNT = 0;
76069 
76070 -- initialize arrays
76071 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
76072 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
76073 
76074 --
76075 -- Bug 4458708
76076 --
76077 XLA_AE_LINES_PKG.g_LineNumber := 0;
76078 
76079 
76080 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
76081 g_last_hdr_idx := l_array_event_id.LAST;
76082 --
76083 -- loop for the headers. Each iteration is for each header extract row
76084 -- fetched in header cursor
76085 --
76086 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
76087 
76088 --
76089 -- set event info as cache for other routines to refer event attributes
76090 --
76091 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
76092    (p_application_id           => p_application_id
76093    ,p_primary_ledger_id        => p_primary_ledger_id
76094    ,p_base_ledger_id           => p_base_ledger_id
76095    ,p_target_ledger_id         => p_target_ledger_id
76096    ,p_entity_id                => l_array_entity_id(hdr_idx)
76097    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
76098    ,p_entity_code              => l_array_entity_code(hdr_idx)
76099    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
76100    ,p_event_id                 => l_array_event_id(hdr_idx)
76101    ,p_event_class_code         => l_array_class_code(hdr_idx)
76102    ,p_event_type_code          => l_array_event_type(hdr_idx)
76103    ,p_event_number             => l_array_event_number(hdr_idx)
76104    ,p_event_date               => l_array_event_date(hdr_idx)
76105    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
76106    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
76107    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
76108    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
76109    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
76110    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
76111    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
76112    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
76113    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
76114    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
76115    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
76116    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
76117    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
76118    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
76119    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
76120 
76121 --
76122 -- set the status of entry to C_VALID (0)
76123 --
76124 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
76125 
76126 --
76127 -- initialize a row for ae header
76128 --
76129 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
76130 
76131 l_event_id := l_array_event_id(hdr_idx);
76132 
76133 --
76134 -- storing the hdr_idx for event. May be used by line cursor.
76135 --
76136 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
76137 
76138 --
76139 -- store sources from header extract. This can be improved to
76140 -- store only those sources from header extract that may be used in lines
76141 --
76142 
76143 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
76144 g_array_event(l_event_id).array_value_char('source_73') := l_array_source_73(hdr_idx);
76145 g_array_event(l_event_id).array_value_char('source_73_meaning') := l_array_source_73_meaning(hdr_idx);
76146 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
76147 
76148 --
76149 -- initilaize the status of ae headers for diffrent balance types
76150 -- the status is initialised to C_NOT_CREATED (2)
76151 --
76152 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76153 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76154 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76155 
76156 --
76157 -- call api to validate and store accounting attributes for header
76158 --
76159 
76163 l_acc_rev_gl_date_source := NULL;
76160 ------------------------------------------------------------
76161 -- Accrual Reversal : to get date for Standard Source (NONE)
76162 ------------------------------------------------------------
76164 
76165      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
76166       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
76167 
76168 
76169 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
76170 
76171 XLA_AE_HEADER_PKG.SetJeCategoryName;
76172 
76173 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
76174 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
76175 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
76176 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
76177 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
76178 
76179 
76180 -- No header level analytical criteria
76181 
76182 --
76183 --accounting attribute enhancement, bug 3612931
76184 --
76185 l_trx_reversal_source := SUBSTR(NULL, 1,30);
76186 
76187 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
76188    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
76189 
76190    xla_accounting_err_pkg.build_message
76191       (p_appli_s_name            => 'XLA'
76192       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
76193       ,p_token_1                 => 'ACCT_ATTR_NAME'
76194       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
76195       ,p_token_2                 => 'PRODUCT_NAME'
76196       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
76197       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
76198       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
76199       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
76200 
76201 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
76202    --
76203    -- following sets the accounting attributes needed to reverse
76204    -- accounting for a distributeion
76205    --
76206    xla_ae_lines_pkg.SetTrxReversalAttrs
76207       (p_event_id              => l_event_id
76208       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
76209       ,p_trx_reversal_source   => l_trx_reversal_source);
76210 
76211 END IF;
76212 
76213 
76214 ----------------------------------------------------------------
76215 -- 4262811 -  update the header statuses to invalid in need be
76216 ----------------------------------------------------------------
76217 --
76218 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
76219 
76220 
76221   -----------------------------------------------
76222   -- No accrual reversal for the event class/type
76223   -----------------------------------------------
76224 ----------------------------------------------------------------
76225 
76226 --
76227 -- this ends the header loop iteration for one bulk fetch
76228 --
76229 END LOOP;
76230 
76231 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
76232 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
76233 
76234 --
76235 -- insert dummy rows into lines gt table that were created due to
76236 -- transaction reversals
76237 --
76238 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
76239    l_result := XLA_AE_LINES_PKG.InsertLines;
76240 END IF;
76241 
76242 --
76243 -- reset the temp_line_num for each set of events fetched from header
76244 -- cursor rather than doing it for each new event in line cursor
76245 -- Bug 3939231
76246 --
76247 xla_ae_lines_pkg.g_temp_line_num := 0;
76248 
76249 
76250 
76251 --
76252 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
76253 --
76254 --
76255 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76256 
76257       trace
76258          (p_msg      => 'SQL - FETCH line_cur'
76259          ,p_level    => C_LEVEL_STATEMENT
76260          ,p_module   => l_log_module);
76261 
76262 END IF;
76263 --
76264 --
76265 LOOP
76266   --
76267   FETCH line_cur BULK COLLECT INTO
76268         l_array_entity_id
76269       , l_array_legal_entity_id
76270       , l_array_entity_code
76271       , l_array_transaction_num
76272       , l_array_event_id
76273       , l_array_class_code
76274       , l_array_event_type
76275       , l_array_event_number
76276       , l_array_event_date
76277       , l_array_transaction_date
76278       , l_array_reference_num_1
76279       , l_array_reference_num_2
76280       , l_array_reference_num_3
76281       , l_array_reference_num_4
76282       , l_array_reference_char_1
76283       , l_array_reference_char_2
76284       , l_array_reference_char_3
76285       , l_array_reference_char_4
76286       , l_array_reference_date_1
76287       , l_array_reference_date_2
76288       , l_array_reference_date_3
76289       , l_array_reference_date_4
76290       , l_array_event_created_by
76291       , l_array_budgetary_control_flag
76292       , l_array_extract_line_num 
76293       , l_array_source_5
76294       , l_array_source_9
76295       , l_array_source_10
76296       , l_array_source_11
76297       , l_array_source_16
76298       , l_array_source_23
76299       , l_array_source_24
76300       , l_array_source_26
76301       , l_array_source_28
76302       , l_array_source_29
76303       , l_array_source_30
76304       , l_array_source_31
76305       , l_array_source_32
76309       , l_array_source_36
76306       , l_array_source_34
76307       , l_array_source_35
76308       , l_array_source_35_meaning
76310       , l_array_source_42
76311       , l_array_source_43
76312       LIMIT l_rows;
76313 
76314   --
76315   IF (C_LEVEL_EVENT >= g_log_level) THEN
76316             trace
76317                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
76318                ,p_level    => C_LEVEL_EVENT
76319                ,p_module   => l_log_module);
76320   END IF;
76321   --
76322   EXIT WHEN l_array_entity_id.count = 0;
76323 
76324   XLA_AE_LINES_PKG.g_rec_lines := null;
76325 
76326 --
76327 -- Bug 4458708
76328 --
76329 XLA_AE_LINES_PKG.g_LineNumber := 0;
76330 --
76331 --
76332 
76333 FOR Idx IN 1..l_array_event_id.count LOOP
76334    --
76335    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
76336    --
76337    l_event_id := l_array_event_id(idx);  -- 5648433
76338 
76339    --
76340    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
76341    --
76342 
76343    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
76344              (g_array_event(l_event_id).array_value_num('header_index'))
76345          ,'N'
76346          ) <> 'Y'
76347    THEN
76348       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76349          trace
76350             (p_msg      => 'Trancaction revesal option is not Y '
76351             ,p_level    => C_LEVEL_STATEMENT
76352             ,p_module   => l_log_module);
76353       END IF;
76354 
76355 --
76356 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
76357 --
76358 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
76359 --
76360 -- set event info as cache for other routines to refer event attributes
76361 --
76362 
76363 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
76364    l_previous_event_id := l_event_id;
76365 
76366    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
76367       (p_application_id           => p_application_id
76368       ,p_primary_ledger_id        => p_primary_ledger_id
76369       ,p_base_ledger_id           => p_base_ledger_id
76370       ,p_target_ledger_id         => p_target_ledger_id
76371       ,p_entity_id                => l_array_entity_id(Idx)
76372       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
76373       ,p_entity_code              => l_array_entity_code(Idx)
76374       ,p_transaction_num          => l_array_transaction_num(Idx)
76375       ,p_event_id                 => l_array_event_id(Idx)
76376       ,p_event_class_code         => l_array_class_code(Idx)
76377       ,p_event_type_code          => l_array_event_type(Idx)
76378       ,p_event_number             => l_array_event_number(Idx)
76379       ,p_event_date               => l_array_event_date(Idx)
76380       ,p_transaction_date         => l_array_transaction_date(Idx)
76381       ,p_reference_num_1          => l_array_reference_num_1(Idx)
76382       ,p_reference_num_2          => l_array_reference_num_2(Idx)
76383       ,p_reference_num_3          => l_array_reference_num_3(Idx)
76384       ,p_reference_num_4          => l_array_reference_num_4(Idx)
76385       ,p_reference_char_1         => l_array_reference_char_1(Idx)
76386       ,p_reference_char_2         => l_array_reference_char_2(Idx)
76387       ,p_reference_char_3         => l_array_reference_char_3(Idx)
76388       ,p_reference_char_4         => l_array_reference_char_4(Idx)
76389       ,p_reference_date_1         => l_array_reference_date_1(Idx)
76390       ,p_reference_date_2         => l_array_reference_date_2(Idx)
76391       ,p_reference_date_3         => l_array_reference_date_3(Idx)
76392       ,p_reference_date_4         => l_array_reference_date_4(Idx)
76393       ,p_event_created_by         => l_array_event_created_by(Idx)
76394       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
76395        --
76396 END IF;
76397 
76398 
76399 
76400 --
76401 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
76402 
76403 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
76404 
76405 IF l_continue_with_lines THEN
76406    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
76407       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
76408 
76409       xla_accounting_err_pkg.build_message
76410          (p_appli_s_name            => 'XLA'
76411          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
76412          ,p_token_1                 => 'LINE_NUMBER'
76413          ,p_value_1                 => l_array_extract_line_num(Idx)
76414          ,p_token_2                 => 'PRODUCT_NAME'
76415          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
76416          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
76417          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
76418          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
76419 
76420    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
76421       --
76422       -- following sets the accounting attributes needed to reverse
76423       -- accounting for a distributeion
76424       --
76425 
76426       --
76427       -- 5217187
76428       --
76429       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
76430       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
76431                                        g_array_event(l_event_id).array_value_num('header_index'));
76432       --
76433       --
76434 
76435       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
76439       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
76436       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
76437       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
76438       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
76440       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_9(Idx));
76441       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
76442       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_42(Idx);
76443       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
76444       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
76445       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
76446       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
76447       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
76448       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
76449       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
76450       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
76451       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
76452       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
76453       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
76454       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
76455       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
76456       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_16(Idx));
76457       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
76458       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_42(Idx);
76459       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
76460       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
76461       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
76462       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
76463       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
76464       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
76465       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
76466       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
76467       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
76468       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
76469       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
76470       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
76471       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
76472       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
76473       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
76474       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
76475       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
76476       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
76477       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
76478       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
76479       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
76480       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
76481       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
76482       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
76483 
76484 
76485       xla_ae_lines_pkg.SetAcctReversalAttrs
76486          (p_event_id             => l_event_id
76487          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
76488          ,p_calculate_acctd_flag => l_calculate_acctd_flag
76489          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
76490    END IF;
76491 
76492    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
76493        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
76494 
76495 --
76496 AcctLineType_62 (
76497  p_application_id  => p_application_id
76498  ,p_event_id     => l_event_id
76499  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76500  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76501  ,p_actual_flag => l_actual_flag
76502  ,p_balance_type_code => l_balance_type_code
76503  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76504  
76505  , p_source_5 => l_array_source_5(Idx)
76506  , p_source_9 => l_array_source_9(Idx)
76507  , p_source_10 => l_array_source_10(Idx)
76508  , p_source_16 => l_array_source_16(Idx)
76509  , p_source_23 => l_array_source_23(Idx)
76510  , p_source_24 => l_array_source_24(Idx)
76511  , p_source_26 => l_array_source_26(Idx)
76512  , p_source_28 => l_array_source_28(Idx)
76513  , p_source_29 => l_array_source_29(Idx)
76514  , p_source_30 => l_array_source_30(Idx)
76515  , p_source_31 => l_array_source_31(Idx)
76516  , p_source_32 => l_array_source_32(Idx)
76517  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
76518  , p_source_34 => l_array_source_34(Idx)
76519  , p_source_35 => l_array_source_35(Idx)
76520  , p_source_35_meaning => l_array_source_35_meaning(Idx)
76521  , p_source_36 => l_array_source_36(Idx)
76522  , p_source_42 => l_array_source_42(Idx)
76523  , p_source_43 => l_array_source_43(Idx)
76524  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
76525  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
76526  );
76527 If(l_balance_type_code = 'A') THEN
76528   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76529 END IF;
76530 
76531 --
76532 
76533 
76534 --
76535 AcctLineType_64 (
76536  p_application_id  => p_application_id
76537  ,p_event_id     => l_event_id
76541  ,p_balance_type_code => l_balance_type_code
76538  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76539  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76540  ,p_actual_flag => l_actual_flag
76542  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76543  
76544  , p_source_5 => l_array_source_5(Idx)
76545  , p_source_9 => l_array_source_9(Idx)
76546  , p_source_10 => l_array_source_10(Idx)
76547  , p_source_16 => l_array_source_16(Idx)
76548  , p_source_23 => l_array_source_23(Idx)
76549  , p_source_24 => l_array_source_24(Idx)
76550  , p_source_26 => l_array_source_26(Idx)
76551  , p_source_28 => l_array_source_28(Idx)
76552  , p_source_29 => l_array_source_29(Idx)
76553  , p_source_30 => l_array_source_30(Idx)
76554  , p_source_31 => l_array_source_31(Idx)
76555  , p_source_32 => l_array_source_32(Idx)
76556  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
76557  , p_source_34 => l_array_source_34(Idx)
76558  , p_source_35 => l_array_source_35(Idx)
76559  , p_source_35_meaning => l_array_source_35_meaning(Idx)
76560  , p_source_36 => l_array_source_36(Idx)
76561  , p_source_42 => l_array_source_42(Idx)
76562  , p_source_43 => l_array_source_43(Idx)
76563  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
76564  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
76565  );
76566 If(l_balance_type_code = 'A') THEN
76567   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76568 END IF;
76569 
76570 --
76571 
76572 
76573 --
76574 AcctLineType_118 (
76575  p_application_id  => p_application_id
76576  ,p_event_id     => l_event_id
76577  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76578  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76579  ,p_actual_flag => l_actual_flag
76580  ,p_balance_type_code => l_balance_type_code
76581  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76582  
76583  , p_source_5 => l_array_source_5(Idx)
76584  , p_source_9 => l_array_source_9(Idx)
76585  , p_source_11 => l_array_source_11(Idx)
76586  , p_source_16 => l_array_source_16(Idx)
76587  , p_source_23 => l_array_source_23(Idx)
76588  , p_source_24 => l_array_source_24(Idx)
76589  , p_source_26 => l_array_source_26(Idx)
76590  , p_source_28 => l_array_source_28(Idx)
76591  , p_source_29 => l_array_source_29(Idx)
76592  , p_source_30 => l_array_source_30(Idx)
76593  , p_source_31 => l_array_source_31(Idx)
76594  , p_source_32 => l_array_source_32(Idx)
76595  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
76596  , p_source_34 => l_array_source_34(Idx)
76597  , p_source_35 => l_array_source_35(Idx)
76598  , p_source_35_meaning => l_array_source_35_meaning(Idx)
76599  , p_source_36 => l_array_source_36(Idx)
76600  , p_source_42 => l_array_source_42(Idx)
76601  , p_source_43 => l_array_source_43(Idx)
76602  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
76603  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
76604  );
76605 If(l_balance_type_code = 'A') THEN
76606   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76607 END IF;
76608 
76609 --
76610 
76611 
76612 --
76613 AcctLineType_120 (
76614  p_application_id  => p_application_id
76615  ,p_event_id     => l_event_id
76616  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76617  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76618  ,p_actual_flag => l_actual_flag
76619  ,p_balance_type_code => l_balance_type_code
76620  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76621  
76622  , p_source_5 => l_array_source_5(Idx)
76623  , p_source_9 => l_array_source_9(Idx)
76624  , p_source_11 => l_array_source_11(Idx)
76625  , p_source_16 => l_array_source_16(Idx)
76626  , p_source_23 => l_array_source_23(Idx)
76627  , p_source_24 => l_array_source_24(Idx)
76628  , p_source_26 => l_array_source_26(Idx)
76629  , p_source_28 => l_array_source_28(Idx)
76630  , p_source_29 => l_array_source_29(Idx)
76631  , p_source_30 => l_array_source_30(Idx)
76632  , p_source_31 => l_array_source_31(Idx)
76633  , p_source_32 => l_array_source_32(Idx)
76634  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
76635  , p_source_34 => l_array_source_34(Idx)
76636  , p_source_35 => l_array_source_35(Idx)
76637  , p_source_35_meaning => l_array_source_35_meaning(Idx)
76638  , p_source_36 => l_array_source_36(Idx)
76639  , p_source_42 => l_array_source_42(Idx)
76640  , p_source_43 => l_array_source_43(Idx)
76641  , p_source_73 => g_array_event(l_event_id).array_value_char('source_73')
76642  , p_source_73_meaning => g_array_event(l_event_id).array_value_char('source_73_meaning')
76643  );
76644 If(l_balance_type_code = 'A') THEN
76645   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76646 END IF;
76647 
76648 --
76649 
76650       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
76651       -- or secondary ledger that has different currency with primary
76652       -- or alc that is calculated by sla
76653       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
76654             (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'))
76655 
76656 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
76657 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
76658           AND (l_actual_flag = 'A')) THEN
76659         XLA_AE_LINES_PKG.CreateGainOrLossLines(
76660           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
76661          ,p_application_id   => p_application_id
76662          ,p_amb_context_code => 'DEFAULT'
76663          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
76664          ,p_event_class_code => C_EVENT_CLASS_CODE
76665          ,p_event_type_code  => C_EVENT_TYPE_CODE
76669 
76666          
76667          ,p_gain_ccid        => -1
76668          ,p_loss_ccid        => -1
76670          ,p_actual_flag      => l_actual_flag
76671          ,p_enc_flag         => null
76672          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
76673          ,p_enc_g_l_ref      => null
76674          );
76675       END IF;
76676    END IF;
76677 END IF;
76678 
76679    ELSE
76680       --
76681       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
76682       --
76683       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76684          trace
76685             (p_msg      => 'Trancaction revesal option is Y'
76686             ,p_level    => C_LEVEL_STATEMENT
76687             ,p_module   => l_log_module);
76688       END IF;
76689    END IF;
76690 
76691 END LOOP;
76692 l_result := XLA_AE_LINES_PKG.InsertLines ;
76693 end loop;
76694 close line_cur;
76695 
76696 
76697 --
76698 -- insert headers into xla_ae_headers_gt table
76699 --
76700 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
76701 
76702 -- insert into errors table here.
76703 
76704 END LOOP;
76705 
76706 --
76707 -- 4865292
76708 --
76709 -- Compare g_hdr_extract_count with event count in
76710 -- CreateHeadersAndLines.
76711 --
76712 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
76713 
76714 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76715    trace (p_msg     => '# rows extracted from header extract objects '
76716                     || ' (running total): '
76717                     || g_hdr_extract_count
76718          ,p_level   => C_LEVEL_STATEMENT
76719          ,p_module  => l_log_module);
76720 END IF;
76721 
76722 CLOSE header_cur;
76723 --
76724 
76725 --
76726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76727    trace
76728       (p_msg      => 'END of EventClass_149'
76729       ,p_level    => C_LEVEL_PROCEDURE
76730       ,p_module   => l_log_module);
76731 END IF;
76732 --
76733 RETURN l_result;
76734 EXCEPTION
76735 WHEN xla_exceptions_pkg.application_exception THEN
76736    
76737 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
76738 
76739    
76740 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
76741 
76742    RAISE;
76743 WHEN OTHERS THEN
76744    xla_exceptions_pkg.raise_message
76745       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_149');
76746 END EventClass_149;
76747 --
76748 
76749 ---------------------------------------
76750 --
76751 -- PRIVATE PROCEDURE
76752 --         insert_sources_150
76753 --
76754 ----------------------------------------
76755 --
76756 PROCEDURE insert_sources_150(
76757                                 p_target_ledger_id       IN NUMBER
76758                               , p_language               IN VARCHAR2
76759                               , p_sla_ledger_id          IN NUMBER
76760                               , p_pad_start_date         IN DATE
76761                               , p_pad_end_date           IN DATE
76762                          )
76763 IS
76764 
76765 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
76766 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BUDGET';
76767 p_apps_owner                   VARCHAR2(30);
76768 l_log_module                   VARCHAR2(240);
76769 BEGIN
76770 IF g_log_enabled THEN
76771       l_log_module := C_DEFAULT_MODULE||'.insert_sources_150';
76772 END IF;
76773 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76774 
76775       trace
76776          (p_msg      => 'BEGIN of insert_sources_150'
76777          ,p_level    => C_LEVEL_PROCEDURE
76778          ,p_module   => l_log_module);
76779 
76780 END IF;
76781 
76782 -- select APPS owner
76783 SELECT oracle_username
76784   INTO p_apps_owner
76785   FROM fnd_oracle_userid
76786  WHERE read_only_flag = 'U'
76787 ;
76788 
76789 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76790       trace
76791          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
76792                         ' - p_language = '||p_language||
76793                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
76794                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
76795                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
76796                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
76797          ,p_level    => C_LEVEL_STATEMENT
76798          ,p_module   => l_log_module);
76799 END IF;
76800 
76801 
76802 --
76803 INSERT INTO xla_diag_sources --hdr2
76804 (
76805         event_id
76806       , ledger_id
76807       , sla_ledger_id
76808       , description_language
76809       , object_name
76810       , object_type_code
76811       , line_number
76812       , source_application_id
76813       , source_type_code
76814       , source_code
76815       , source_value
76816       , source_meaning
76817       , created_by
76818       , creation_date
76819       , last_update_date
76820       , last_updated_by
76821       , last_update_login
76822       , program_update_date
76823       , program_application_id
76824       , program_id
76825       , request_id
76826 )
76827 SELECT
76828         event_id
76829       , p_target_ledger_id
76830       , p_sla_ledger_id
76831       , p_language
76832       , object_name
76833       , object_type_code
76834       , line_number
76835       , source_application_id
76836       , source_type_code
76837       , source_code
76838       , SUBSTR(source_value ,1,1996)
76839       , SUBSTR(source_meaning ,1,200)
76840       , xla_environment_pkg.g_Usr_Id
76844       , xla_environment_pkg.g_Login_Id
76841       , TRUNC(SYSDATE)
76842       , TRUNC(SYSDATE)
76843       , xla_environment_pkg.g_Usr_Id
76845       , TRUNC(SYSDATE)
76846       , xla_environment_pkg.g_Prog_Appl_Id
76847       , xla_environment_pkg.g_Prog_Id
76848       , xla_environment_pkg.g_Req_Id
76849   FROM (
76850        SELECT xet.event_id                  event_id
76851             , 0                          line_number
76852             , CASE r
76853                WHEN 1 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
76854                 WHEN 2 THEN 'PA_XLA_PROJECT_REF_V' 
76855                 WHEN 3 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
76856                 WHEN 4 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
76857                 WHEN 5 THEN 'PA_XLA_BC_BUDGET_HEADER_V' 
76858                 
76859                ELSE null
76860               END                           object_name
76861             , CASE r
76862                 WHEN 1 THEN 'HEADER' 
76863                 WHEN 2 THEN 'HEADER' 
76864                 WHEN 3 THEN 'HEADER' 
76865                 WHEN 4 THEN 'HEADER' 
76866                 WHEN 5 THEN 'HEADER' 
76867                 
76868                 ELSE null
76869               END                           object_type_code
76870             , CASE r
76871                 WHEN 1 THEN '275' 
76872                 WHEN 2 THEN '275' 
76873                 WHEN 3 THEN '275' 
76874                 WHEN 4 THEN '275' 
76875                 WHEN 5 THEN '275' 
76876                 
76877                 ELSE null
76878               END                           source_application_id
76879             , 'S'             source_type_code
76880             , CASE r
76881                 WHEN 1 THEN 'BUDGET_AMOUNT_CODE' 
76882                 WHEN 2 THEN 'PROJECT_TYPE_CLASS_CODE' 
76883                 WHEN 3 THEN 'BC_BALANCE_TYPE' 
76884                 WHEN 4 THEN 'GL_DATE' 
76885                 WHEN 5 THEN 'GL_BUDGET_VERSION_ID' 
76886                 
76887                 ELSE null
76888               END                           source_code
76889             , CASE r
76890                 WHEN 1 THEN TO_CHAR(h1.BUDGET_AMOUNT_CODE)
76891                 WHEN 2 THEN TO_CHAR(h3.PROJECT_TYPE_CLASS_CODE)
76892                 WHEN 3 THEN TO_CHAR(h1.BC_BALANCE_TYPE)
76893                 WHEN 4 THEN TO_CHAR(h1.GL_DATE)
76894                 WHEN 5 THEN TO_CHAR(h1.GL_BUDGET_VERSION_ID)
76895                 
76896                 ELSE null
76897               END                           source_value
76898             , CASE r
76899                 WHEN 2 THEN fvl38.meaning
76900                 
76901                 ELSE null
76902               END               source_meaning
76903          FROM xla_events_gt     xet  
76904       , PA_XLA_BC_BUDGET_HEADER_V  h1
76905       , PA_XLA_PROJECT_REF_V  h3
76906   , fnd_lookup_values    fvl38
76907              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
76908          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
76909            AND xet.event_class_code = C_EVENT_CLASS_CODE
76910               AND h1.event_id = xet.event_id
76911  AND h3.project_id=h1.project_id   AND fvl38.lookup_type(+)         = 'PROJECT TYPE CLASS'
76912   AND fvl38.lookup_code(+)         = h3.PROJECT_TYPE_CLASS_CODE
76913   AND fvl38.view_application_id(+) = 275
76914   AND fvl38.language(+)            = USERENV('LANG')
76915   
76916 )
76917 ;
76918 --
76919 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76920 
76921       trace
76922          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
76923          ,p_level    => C_LEVEL_STATEMENT
76924          ,p_module   => l_log_module);
76925 
76926 END IF;
76927 --
76928 
76929 
76930 
76931 --
76932 INSERT INTO xla_diag_sources  --line2
76933 (
76934         event_id
76935       , ledger_id
76936       , sla_ledger_id
76937       , description_language
76938       , object_name
76939       , object_type_code
76940       , line_number
76941       , source_application_id
76942       , source_type_code
76943       , source_code
76944       , source_value
76945       , source_meaning
76946       , created_by
76947       , creation_date
76948       , last_update_date
76949       , last_updated_by
76950       , last_update_login
76951       , program_update_date
76952       , program_application_id
76953       , program_id
76954       , request_id
76955 )
76956 SELECT  event_id
76957       , p_target_ledger_id
76958       , p_sla_ledger_id
76959       , p_language
76960       , object_name
76961       , object_type_code
76962       , line_number
76963       , source_application_id
76964       , source_type_code
76965       , source_code
76966       , SUBSTR(source_value,1,1996)
76967       , SUBSTR(source_meaning ,1,200)
76968       , xla_environment_pkg.g_Usr_Id
76969       , TRUNC(SYSDATE)
76970       , TRUNC(SYSDATE)
76971       , xla_environment_pkg.g_Usr_Id
76972       , xla_environment_pkg.g_Login_Id
76973       , TRUNC(SYSDATE)
76974       , xla_environment_pkg.g_Prog_Appl_Id
76975       , xla_environment_pkg.g_Prog_Id
76976       , xla_environment_pkg.g_Req_Id
76977   FROM (
76978        SELECT xet.event_id                  event_id
76979             , l2.line_number                 line_number
76980             , CASE r
76981                WHEN 1 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76982                 WHEN 2 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76983                 WHEN 3 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76984                 WHEN 4 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76985                 WHEN 5 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76986                 WHEN 6 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76987                 WHEN 7 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76991                 WHEN 11 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76988                 WHEN 8 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76989                 WHEN 9 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76990                 WHEN 10 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76992                 WHEN 12 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76993                 WHEN 13 THEN 'PA_XLA_BC_BUDGET_LINES_V' 
76994                 
76995                ELSE null
76996               END                           object_name
76997             , CASE r
76998                 WHEN 1 THEN 'LINE' 
76999                 WHEN 2 THEN 'LINE' 
77000                 WHEN 3 THEN 'LINE' 
77001                 WHEN 4 THEN 'LINE' 
77002                 WHEN 5 THEN 'LINE' 
77003                 WHEN 6 THEN 'LINE' 
77004                 WHEN 7 THEN 'LINE' 
77005                 WHEN 8 THEN 'LINE' 
77006                 WHEN 9 THEN 'LINE' 
77007                 WHEN 10 THEN 'LINE' 
77008                 WHEN 11 THEN 'LINE' 
77009                 WHEN 12 THEN 'LINE' 
77010                 WHEN 13 THEN 'LINE' 
77011                 
77012                 ELSE null
77013               END                           object_type_code
77014             , CASE r
77015                 WHEN 1 THEN '275' 
77016                 WHEN 2 THEN '275' 
77017                 WHEN 3 THEN '275' 
77018                 WHEN 4 THEN '275' 
77019                 WHEN 5 THEN '275' 
77020                 WHEN 6 THEN '275' 
77021                 WHEN 7 THEN '275' 
77022                 WHEN 8 THEN '275' 
77023                 WHEN 9 THEN '275' 
77024                 WHEN 10 THEN '275' 
77025                 WHEN 11 THEN '275' 
77026                 WHEN 12 THEN '275' 
77027                 WHEN 13 THEN '275' 
77028                 
77029                 ELSE null
77030               END                           source_application_id
77031             , 'S'             source_type_code
77032             , CASE r
77033                 WHEN 1 THEN 'BUDGET_CCID' 
77034                 WHEN 2 THEN 'REVERSING_LINE_FLAG' 
77035                 WHEN 3 THEN 'ENTERED_CURRENCY_CODE' 
77036                 WHEN 4 THEN 'EXCHANGE_RATE_DATE' 
77037                 WHEN 5 THEN 'EXCHANGE_RATE' 
77038                 WHEN 6 THEN 'EXCHANGE_RATE_TYPE' 
77039                 WHEN 7 THEN 'LINE_TYPE' 
77040                 WHEN 8 THEN 'BUDGET_LINE_ID' 
77041                 WHEN 9 THEN 'ENC_UPG_DR_ACCT_CLASS' 
77042                 WHEN 10 THEN 'ENTERED_AMOUNT' 
77043                 WHEN 11 THEN 'ACCT_AMOUNT' 
77044                 WHEN 12 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
77045                 WHEN 13 THEN 'ENC_UPG_ENC_TYPE_ID' 
77046                 
77047                 ELSE null
77048               END                           source_code
77049             , CASE r
77050                 WHEN 1 THEN TO_CHAR(l2.BUDGET_CCID)
77051                 WHEN 2 THEN TO_CHAR(l2.REVERSING_LINE_FLAG)
77052                 WHEN 3 THEN TO_CHAR(l2.ENTERED_CURRENCY_CODE)
77053                 WHEN 4 THEN TO_CHAR(l2.EXCHANGE_RATE_DATE)
77054                 WHEN 5 THEN TO_CHAR(l2.EXCHANGE_RATE)
77055                 WHEN 6 THEN TO_CHAR(l2.EXCHANGE_RATE_TYPE)
77056                 WHEN 7 THEN TO_CHAR(l2.LINE_TYPE)
77057                 WHEN 8 THEN TO_CHAR(l2.BUDGET_LINE_ID)
77058                 WHEN 9 THEN TO_CHAR(l2.ENC_UPG_DR_ACCT_CLASS)
77059                 WHEN 10 THEN TO_CHAR(l2.ENTERED_AMOUNT)
77060                 WHEN 11 THEN TO_CHAR(l2.ACCT_AMOUNT)
77061                 WHEN 12 THEN TO_CHAR(l2.USE_ENC_UPG_ATTRIB_FLAG)
77062                 WHEN 13 THEN TO_CHAR(l2.ENC_UPG_ENC_TYPE_ID)
77063                 
77064                 ELSE null
77065               END                           source_value
77066             , CASE r
77067                 WHEN 7 THEN fvl35.meaning
77068                 
77069                 ELSE null
77070               END               source_meaning
77071          FROM  xla_events_gt     xet  
77072         , PA_XLA_BC_BUDGET_LINES_V  l2
77073   , fnd_lookup_values    fvl35
77074             , (select rownum r from all_objects where rownum <= 13 and owner = p_apps_owner)
77075         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77076           AND xet.event_class_code = C_EVENT_CLASS_CODE
77077             AND l2.event_id          = xet.event_id
77078    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
77079   AND fvl35.lookup_code(+)         = l2.LINE_TYPE
77080   AND fvl35.view_application_id(+) = 275
77081   AND fvl35.language(+)            = USERENV('LANG')
77082   
77083 )
77084 ;
77085 --
77086 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77087 
77088       trace
77089          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
77090          ,p_level    => C_LEVEL_STATEMENT
77091          ,p_module   => l_log_module);
77092 
77093 END IF;
77094 
77095 
77096 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77097       trace
77098          (p_msg      => 'END of insert_sources_150'
77099          ,p_level    => C_LEVEL_PROCEDURE
77100          ,p_module   => l_log_module);
77101 END IF;
77102 EXCEPTION
77103   WHEN xla_exceptions_pkg.application_exception THEN
77104       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
77105             trace
77106                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
77107                ,p_level    => C_LEVEL_EXCEPTION
77108                ,p_module   => l_log_module);
77109       END IF;
77110       RAISE;
77111   WHEN OTHERS THEN
77112       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
77113             trace
77114                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
77115                ,p_level    => C_LEVEL_EXCEPTION
77116                ,p_module   => l_log_module);
77117        END IF;
77118        xla_exceptions_pkg.raise_message
77119            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_150');
77123 ---------------------------------------
77120 END insert_sources_150;
77121 --
77122 
77124 --
77125 -- PRIVATE FUNCTION
77126 --         EventClass_150
77127 --
77128 ----------------------------------------
77129 --
77130 FUNCTION EventClass_150
77131        (p_application_id         IN NUMBER
77132        ,p_base_ledger_id         IN NUMBER
77133        ,p_target_ledger_id       IN NUMBER
77134        ,p_language               IN VARCHAR2
77135        ,p_currency_code          IN VARCHAR2
77136        ,p_sla_ledger_id          IN NUMBER
77137        ,p_pad_start_date         IN DATE
77138        ,p_pad_end_date           IN DATE
77139        ,p_primary_ledger_id      IN NUMBER)
77140 RETURN BOOLEAN IS
77141 --
77142 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BUDGET_ALL';
77143 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BUDGET';
77144 
77145 l_calculate_acctd_flag   VARCHAR2(1) :='N';
77146 l_calculate_g_l_flag     VARCHAR2(1) :='N';
77147 --
77148 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77149 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77150 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77151 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77152 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77153 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77154 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77155 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77156 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77157 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77158 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77159 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77160 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77161 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77162 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77163 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77164 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77165 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77166 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77167 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77168 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77169 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77170 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
77171 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77172 
77173 l_event_id                             NUMBER;
77174 l_previous_event_id                    NUMBER;
77175 l_first_event_id                       NUMBER;
77176 l_last_event_id                        NUMBER;
77177 
77178 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
77179 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
77180 --
77181 --
77182 l_result                    BOOLEAN := TRUE;
77183 l_rows                      NUMBER  := 1000;
77184 l_event_type_name           VARCHAR2(80) := 'All';
77185 l_event_class_name          VARCHAR2(80) := 'Budget';
77186 l_description               VARCHAR2(4000);
77187 l_transaction_reversal      NUMBER;
77188 l_ae_header_id              NUMBER;
77189 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
77190 l_log_module                VARCHAR2(240);
77191 --
77192 l_acct_reversal_source      VARCHAR2(30);
77193 l_trx_reversal_source       VARCHAR2(30);
77194 
77195 l_continue_with_lines       BOOLEAN := TRUE;
77196 --
77197 l_acc_rev_gl_date_source    DATE;                      -- 4262811
77198 --
77199 type t_array_event_id is table of number index by binary_integer;
77200 
77201 l_rec_array_event                    t_rec_array_event;
77202 l_null_rec_array_event               t_rec_array_event;
77203 l_array_ae_header_id                 xla_number_array_type;
77204 l_actual_flag                        VARCHAR2(1) := NULL;
77205 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
77206 l_balance_type_code                  VARCHAR2(1) :=NULL;
77207 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
77208 
77209 --
77210 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
77211 --
77212 
77213 TYPE t_array_source_37 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.BUDGET_AMOUNT_CODE%TYPE INDEX BY BINARY_INTEGER;
77214 TYPE t_array_source_38 IS TABLE OF PA_XLA_PROJECT_REF_V.PROJECT_TYPE_CLASS_CODE%TYPE INDEX BY BINARY_INTEGER;
77215 TYPE t_array_source_39 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.BC_BALANCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
77216 TYPE t_array_source_75 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
77217 TYPE t_array_source_76 IS TABLE OF PA_XLA_BC_BUDGET_HEADER_V.GL_BUDGET_VERSION_ID%TYPE INDEX BY BINARY_INTEGER;
77218 
77219 TYPE t_array_source_3 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
77220 TYPE t_array_source_23 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
77221 TYPE t_array_source_26 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
77222 TYPE t_array_source_28 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
77223 TYPE t_array_source_29 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
77224 TYPE t_array_source_30 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
77225 TYPE t_array_source_35 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
77229 TYPE t_array_source_43 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
77226 TYPE t_array_source_40 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.BUDGET_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
77227 TYPE t_array_source_41 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
77228 TYPE t_array_source_42 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
77230 TYPE t_array_source_44 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
77231 TYPE t_array_source_45 IS TABLE OF PA_XLA_BC_BUDGET_LINES_V.ENC_UPG_ENC_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
77232 
77233 l_array_source_37              t_array_source_37;
77234 l_array_source_38              t_array_source_38;
77235 l_array_source_38_meaning      t_array_lookup_meaning;
77236 l_array_source_39              t_array_source_39;
77237 l_array_source_75              t_array_source_75;
77238 l_array_source_76              t_array_source_76;
77239 
77240 l_array_source_3      t_array_source_3;
77241 l_array_source_23      t_array_source_23;
77242 l_array_source_26      t_array_source_26;
77243 l_array_source_28      t_array_source_28;
77244 l_array_source_29      t_array_source_29;
77245 l_array_source_30      t_array_source_30;
77246 l_array_source_35      t_array_source_35;
77247 l_array_source_35_meaning      t_array_lookup_meaning;
77248 l_array_source_40      t_array_source_40;
77249 l_array_source_41      t_array_source_41;
77250 l_array_source_42      t_array_source_42;
77251 l_array_source_43      t_array_source_43;
77252 l_array_source_44      t_array_source_44;
77253 l_array_source_45      t_array_source_45;
77254 
77255 --
77256 CURSOR header_cur
77257 IS
77258 SELECT /*+ leading(xet) cardinality(xet,1) */
77259 -- Event Class Code: BUDGET
77260     xet.entity_id
77261    ,xet.legal_entity_id
77262    ,xet.entity_code
77263    ,xet.transaction_number
77264    ,xet.event_id
77265    ,xet.event_class_code
77266    ,xet.event_type_code
77267    ,xet.event_number
77268    ,xet.event_date
77269    ,xet.transaction_date
77270    ,xet.reference_num_1
77271    ,xet.reference_num_2
77272    ,xet.reference_num_3
77273    ,xet.reference_num_4
77274    ,xet.reference_char_1
77275    ,xet.reference_char_2
77276    ,xet.reference_char_3
77277    ,xet.reference_char_4
77278    ,xet.reference_date_1
77279    ,xet.reference_date_2
77280    ,xet.reference_date_3
77281    ,xet.reference_date_4
77282    ,xet.event_created_by
77283    ,xet.budgetary_control_flag 
77284   , h1.BUDGET_AMOUNT_CODE    source_37
77285   , h3.PROJECT_TYPE_CLASS_CODE    source_38
77286   , fvl38.meaning   source_38_meaning
77287   , h1.BC_BALANCE_TYPE    source_39
77288   , h1.GL_DATE    source_75
77289   , h1.GL_BUDGET_VERSION_ID    source_76
77290   FROM xla_events_gt     xet 
77291   , PA_XLA_BC_BUDGET_HEADER_V  h1
77292   , PA_XLA_PROJECT_REF_V  h3
77293   , fnd_lookup_values    fvl38
77294  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
77295    and xet.event_class_code = C_EVENT_CLASS_CODE
77296    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
77297  AND h3.PROJECT_ID=h1.PROJECT_ID   AND fvl38.lookup_type(+)         = 'PROJECT TYPE CLASS'
77298   AND fvl38.lookup_code(+)         = h3.PROJECT_TYPE_CLASS_CODE
77299   AND fvl38.view_application_id(+) = 275
77300   AND fvl38.language(+)            = USERENV('LANG')
77301   
77302  ORDER BY event_id
77303 ;
77304 
77305 
77306 --
77307 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
77308 IS
77309 SELECT  /*+ leading(xet) cardinality(xet,1) */
77310 -- Event Class Code: BUDGET
77311     xet.entity_id
77312    ,xet.legal_entity_id
77313    ,xet.entity_code
77314    ,xet.transaction_number
77315    ,xet.event_id
77316    ,xet.event_class_code
77317    ,xet.event_type_code
77318    ,xet.event_number
77319    ,xet.event_date
77320    ,xet.transaction_date
77321    ,xet.reference_num_1
77322    ,xet.reference_num_2
77323    ,xet.reference_num_3
77324    ,xet.reference_num_4
77325    ,xet.reference_char_1
77326    ,xet.reference_char_2
77327    ,xet.reference_char_3
77328    ,xet.reference_char_4
77329    ,xet.reference_date_1
77330    ,xet.reference_date_2
77331    ,xet.reference_date_3
77332    ,xet.reference_date_4
77333    ,xet.event_created_by
77334    ,xet.budgetary_control_flag
77335  , l2.LINE_NUMBER  
77336   , l2.BUDGET_CCID    source_3
77337   , l2.REVERSING_LINE_FLAG    source_23
77338   , l2.ENTERED_CURRENCY_CODE    source_26
77339   , l2.EXCHANGE_RATE_DATE    source_28
77340   , l2.EXCHANGE_RATE    source_29
77341   , l2.EXCHANGE_RATE_TYPE    source_30
77342   , l2.LINE_TYPE    source_35
77343   , fvl35.meaning   source_35_meaning
77344   , l2.BUDGET_LINE_ID    source_40
77345   , l2.ENC_UPG_DR_ACCT_CLASS    source_41
77346   , l2.ENTERED_AMOUNT    source_42
77347   , l2.ACCT_AMOUNT    source_43
77348   , l2.USE_ENC_UPG_ATTRIB_FLAG    source_44
77349   , l2.ENC_UPG_ENC_TYPE_ID    source_45
77350   FROM xla_events_gt     xet 
77351   , PA_XLA_BC_BUDGET_LINES_V  l2
77352   , fnd_lookup_values    fvl35
77353  WHERE xet.event_id between x_first_event_id and x_last_event_id
77354    and xet.event_date between p_pad_start_date and p_pad_end_date
77355    and xet.event_class_code = C_EVENT_CLASS_CODE
77356    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
77357    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
77358   AND fvl35.lookup_code(+)         = l2.LINE_TYPE
77359   AND fvl35.view_application_id(+) = 275
77360   AND fvl35.language(+)            = USERENV('LANG')
77361   ;
77362 
77363 --
77364 BEGIN
77365 IF g_log_enabled THEN
77366    l_log_module := C_DEFAULT_MODULE||'.EventClass_150';
77367 END IF;
77371       ,p_level    => C_LEVEL_PROCEDURE
77368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77369    trace
77370       (p_msg      => 'BEGIN of EventClass_150'
77372       ,p_module   => l_log_module);
77373 END IF;
77374 
77375 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77376    trace
77377       (p_msg      => 'p_application_id = '||p_application_id||
77378                      ' - p_base_ledger_id = '||p_base_ledger_id||
77379                      ' - p_target_ledger_id  = '||p_target_ledger_id||
77380                      ' - p_language = '||p_language||
77381                      ' - p_currency_code = '||p_currency_code||
77382                      ' - p_sla_ledger_id = '||p_sla_ledger_id
77383       ,p_level    => C_LEVEL_STATEMENT
77384       ,p_module   => l_log_module);
77385 END IF;
77386 --
77387 -- initialze arrays
77388 --
77389 g_array_event.DELETE;
77390 l_rec_array_event := l_null_rec_array_event;
77391 --
77392 --------------------------------------
77393 -- 4262811 Initialze MPA Line Number
77394 --------------------------------------
77395 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
77396 
77397 --
77398 
77399 --
77400 OPEN header_cur;
77401 --
77402 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77403    trace
77404    (p_msg      => 'SQL - FETCH header_cur'
77405    ,p_level    => C_LEVEL_STATEMENT
77406    ,p_module   => l_log_module);
77407 END IF;
77408 --
77409 LOOP
77410 FETCH header_cur BULK COLLECT INTO
77411         l_array_entity_id
77412       , l_array_legal_entity_id
77413       , l_array_entity_code
77414       , l_array_transaction_num
77415       , l_array_event_id
77416       , l_array_class_code
77417       , l_array_event_type
77418       , l_array_event_number
77419       , l_array_event_date
77420       , l_array_transaction_date
77421       , l_array_reference_num_1
77422       , l_array_reference_num_2
77423       , l_array_reference_num_3
77424       , l_array_reference_num_4
77425       , l_array_reference_char_1
77426       , l_array_reference_char_2
77427       , l_array_reference_char_3
77428       , l_array_reference_char_4
77429       , l_array_reference_date_1
77430       , l_array_reference_date_2
77431       , l_array_reference_date_3
77432       , l_array_reference_date_4
77433       , l_array_event_created_by
77434       , l_array_budgetary_control_flag 
77435       , l_array_source_37
77436       , l_array_source_38
77437       , l_array_source_38_meaning
77438       , l_array_source_39
77439       , l_array_source_75
77440       , l_array_source_76
77441       LIMIT l_rows;
77442 --
77443 IF (C_LEVEL_EVENT >= g_log_level) THEN
77444    trace
77445    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
77446    ,p_level    => C_LEVEL_EVENT
77447    ,p_module   => l_log_module);
77448 END IF;
77449 --
77450 EXIT WHEN l_array_entity_id.COUNT = 0;
77451 
77452 -- initialize arrays
77453 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
77454 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
77455 
77456 --
77457 -- Bug 4458708
77458 --
77459 XLA_AE_LINES_PKG.g_LineNumber := 0;
77460 
77461 
77462 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
77463 g_last_hdr_idx := l_array_event_id.LAST;
77464 --
77465 -- loop for the headers. Each iteration is for each header extract row
77466 -- fetched in header cursor
77467 --
77468 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
77469 
77470 --
77471 -- set event info as cache for other routines to refer event attributes
77472 --
77473 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
77474    (p_application_id           => p_application_id
77475    ,p_primary_ledger_id        => p_primary_ledger_id
77476    ,p_base_ledger_id           => p_base_ledger_id
77477    ,p_target_ledger_id         => p_target_ledger_id
77478    ,p_entity_id                => l_array_entity_id(hdr_idx)
77479    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
77480    ,p_entity_code              => l_array_entity_code(hdr_idx)
77481    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
77482    ,p_event_id                 => l_array_event_id(hdr_idx)
77483    ,p_event_class_code         => l_array_class_code(hdr_idx)
77484    ,p_event_type_code          => l_array_event_type(hdr_idx)
77485    ,p_event_number             => l_array_event_number(hdr_idx)
77486    ,p_event_date               => l_array_event_date(hdr_idx)
77487    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
77488    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
77489    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
77490    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
77491    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
77492    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
77493    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
77494    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
77495    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
77496    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
77497    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
77498    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
77499    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
77500    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
77501    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
77502 
77503 --
77504 -- set the status of entry to C_VALID (0)
77505 --
77506 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
77507 
77508 --
77509 -- initialize a row for ae header
77510 --
77514 
77511 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
77512 
77513 l_event_id := l_array_event_id(hdr_idx);
77515 --
77516 -- storing the hdr_idx for event. May be used by line cursor.
77517 --
77518 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
77519 
77520 --
77521 -- store sources from header extract. This can be improved to
77522 -- store only those sources from header extract that may be used in lines
77523 --
77524 
77525 g_array_event(l_event_id).array_value_char('source_37') := l_array_source_37(hdr_idx);
77526 g_array_event(l_event_id).array_value_char('source_38') := l_array_source_38(hdr_idx);
77527 g_array_event(l_event_id).array_value_char('source_38_meaning') := l_array_source_38_meaning(hdr_idx);
77528 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
77529 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
77530 g_array_event(l_event_id).array_value_num('source_76') := l_array_source_76(hdr_idx);
77531 
77532 --
77533 -- initilaize the status of ae headers for diffrent balance types
77534 -- the status is initialised to C_NOT_CREATED (2)
77535 --
77536 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77537 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77538 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77539 
77540 --
77541 -- call api to validate and store accounting attributes for header
77542 --
77543 
77544 ------------------------------------------------------------
77545 -- Accrual Reversal : to get date for Standard Source (NONE)
77546 ------------------------------------------------------------
77547 l_acc_rev_gl_date_source := NULL;
77548 
77549      l_rec_acct_attrs.array_acct_attr_code(1)   := 'BUDGET_VERSION_ID';
77550       l_rec_acct_attrs.array_num_value(1) := g_array_event(l_event_id).array_value_num('source_76');
77551      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_DATE';
77552       l_rec_acct_attrs.array_date_value(2) := g_array_event(l_event_id).array_value_date('source_75');
77553 
77554 
77555 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
77556 
77557 XLA_AE_HEADER_PKG.SetJeCategoryName;
77558 
77559 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
77560 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
77561 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
77562 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
77563 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
77564 
77565 
77566 -- No header level analytical criteria
77567 
77568 --
77569 --accounting attribute enhancement, bug 3612931
77570 --
77571 l_trx_reversal_source := SUBSTR(NULL, 1,30);
77572 
77573 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
77574    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
77575 
77576    xla_accounting_err_pkg.build_message
77577       (p_appli_s_name            => 'XLA'
77578       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
77579       ,p_token_1                 => 'ACCT_ATTR_NAME'
77580       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
77581       ,p_token_2                 => 'PRODUCT_NAME'
77582       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
77583       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
77584       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
77585       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
77586 
77587 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
77588    --
77589    -- following sets the accounting attributes needed to reverse
77590    -- accounting for a distributeion
77591    --
77592    xla_ae_lines_pkg.SetTrxReversalAttrs
77593       (p_event_id              => l_event_id
77594       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
77595       ,p_trx_reversal_source   => l_trx_reversal_source);
77596 
77597 END IF;
77598 
77599 
77600 ----------------------------------------------------------------
77601 -- 4262811 -  update the header statuses to invalid in need be
77602 ----------------------------------------------------------------
77603 --
77604 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
77605 
77606 
77607   -----------------------------------------------
77608   -- No accrual reversal for the event class/type
77609   -----------------------------------------------
77610 ----------------------------------------------------------------
77611 
77612 --
77613 -- this ends the header loop iteration for one bulk fetch
77614 --
77615 END LOOP;
77616 
77617 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
77618 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
77619 
77620 --
77621 -- insert dummy rows into lines gt table that were created due to
77622 -- transaction reversals
77623 --
77624 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
77625    l_result := XLA_AE_LINES_PKG.InsertLines;
77626 END IF;
77627 
77628 --
77629 -- reset the temp_line_num for each set of events fetched from header
77630 -- cursor rather than doing it for each new event in line cursor
77631 -- Bug 3939231
77632 --
77633 xla_ae_lines_pkg.g_temp_line_num := 0;
77634 
77635 
77636 
77637 --
77638 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
77639 --
77640 --
77644          (p_msg      => 'SQL - FETCH line_cur'
77641 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77642 
77643       trace
77645          ,p_level    => C_LEVEL_STATEMENT
77646          ,p_module   => l_log_module);
77647 
77648 END IF;
77649 --
77650 --
77651 LOOP
77652   --
77653   FETCH line_cur BULK COLLECT INTO
77654         l_array_entity_id
77655       , l_array_legal_entity_id
77656       , l_array_entity_code
77657       , l_array_transaction_num
77658       , l_array_event_id
77659       , l_array_class_code
77660       , l_array_event_type
77661       , l_array_event_number
77662       , l_array_event_date
77663       , l_array_transaction_date
77664       , l_array_reference_num_1
77665       , l_array_reference_num_2
77666       , l_array_reference_num_3
77667       , l_array_reference_num_4
77668       , l_array_reference_char_1
77669       , l_array_reference_char_2
77670       , l_array_reference_char_3
77671       , l_array_reference_char_4
77672       , l_array_reference_date_1
77673       , l_array_reference_date_2
77674       , l_array_reference_date_3
77675       , l_array_reference_date_4
77676       , l_array_event_created_by
77677       , l_array_budgetary_control_flag
77678       , l_array_extract_line_num 
77679       , l_array_source_3
77680       , l_array_source_23
77681       , l_array_source_26
77682       , l_array_source_28
77683       , l_array_source_29
77684       , l_array_source_30
77685       , l_array_source_35
77686       , l_array_source_35_meaning
77687       , l_array_source_40
77688       , l_array_source_41
77689       , l_array_source_42
77690       , l_array_source_43
77691       , l_array_source_44
77692       , l_array_source_45
77693       LIMIT l_rows;
77694 
77695   --
77696   IF (C_LEVEL_EVENT >= g_log_level) THEN
77697             trace
77698                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
77699                ,p_level    => C_LEVEL_EVENT
77700                ,p_module   => l_log_module);
77701   END IF;
77702   --
77703   EXIT WHEN l_array_entity_id.count = 0;
77704 
77705   XLA_AE_LINES_PKG.g_rec_lines := null;
77706 
77707 --
77708 -- Bug 4458708
77709 --
77710 XLA_AE_LINES_PKG.g_LineNumber := 0;
77711 --
77712 --
77713 
77714 FOR Idx IN 1..l_array_event_id.count LOOP
77715    --
77716    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
77717    --
77718    l_event_id := l_array_event_id(idx);  -- 5648433
77719 
77720    --
77721    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
77722    --
77723 
77724    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
77725              (g_array_event(l_event_id).array_value_num('header_index'))
77726          ,'N'
77727          ) <> 'Y'
77728    THEN
77729       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77730          trace
77731             (p_msg      => 'Trancaction revesal option is not Y '
77732             ,p_level    => C_LEVEL_STATEMENT
77733             ,p_module   => l_log_module);
77734       END IF;
77735 
77736 --
77737 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
77738 --
77739 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
77740 --
77741 -- set event info as cache for other routines to refer event attributes
77742 --
77743 
77744 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
77745    l_previous_event_id := l_event_id;
77746 
77747    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
77748       (p_application_id           => p_application_id
77749       ,p_primary_ledger_id        => p_primary_ledger_id
77750       ,p_base_ledger_id           => p_base_ledger_id
77751       ,p_target_ledger_id         => p_target_ledger_id
77752       ,p_entity_id                => l_array_entity_id(Idx)
77753       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
77754       ,p_entity_code              => l_array_entity_code(Idx)
77755       ,p_transaction_num          => l_array_transaction_num(Idx)
77756       ,p_event_id                 => l_array_event_id(Idx)
77757       ,p_event_class_code         => l_array_class_code(Idx)
77758       ,p_event_type_code          => l_array_event_type(Idx)
77759       ,p_event_number             => l_array_event_number(Idx)
77760       ,p_event_date               => l_array_event_date(Idx)
77761       ,p_transaction_date         => l_array_transaction_date(Idx)
77762       ,p_reference_num_1          => l_array_reference_num_1(Idx)
77763       ,p_reference_num_2          => l_array_reference_num_2(Idx)
77764       ,p_reference_num_3          => l_array_reference_num_3(Idx)
77765       ,p_reference_num_4          => l_array_reference_num_4(Idx)
77766       ,p_reference_char_1         => l_array_reference_char_1(Idx)
77767       ,p_reference_char_2         => l_array_reference_char_2(Idx)
77768       ,p_reference_char_3         => l_array_reference_char_3(Idx)
77769       ,p_reference_char_4         => l_array_reference_char_4(Idx)
77770       ,p_reference_date_1         => l_array_reference_date_1(Idx)
77771       ,p_reference_date_2         => l_array_reference_date_2(Idx)
77772       ,p_reference_date_3         => l_array_reference_date_3(Idx)
77773       ,p_reference_date_4         => l_array_reference_date_4(Idx)
77774       ,p_event_created_by         => l_array_event_created_by(Idx)
77775       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
77776        --
77777 END IF;
77778 
77779 
77780 
77781 --
77782 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
77783 
77784 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
77785 
77786 IF l_continue_with_lines THEN
77790       xla_accounting_err_pkg.build_message
77787    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
77788       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
77789 
77791          (p_appli_s_name            => 'XLA'
77792          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
77793          ,p_token_1                 => 'LINE_NUMBER'
77794          ,p_value_1                 => l_array_extract_line_num(Idx)
77795          ,p_token_2                 => 'PRODUCT_NAME'
77796          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
77797          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
77798          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
77799          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
77800 
77801    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
77802       --
77803       -- following sets the accounting attributes needed to reverse
77804       -- accounting for a distributeion
77805       --
77806 
77807       --
77808       -- 5217187
77809       --
77810       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
77811       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
77812                                        g_array_event(l_event_id).array_value_num('header_index'));
77813       --
77814       --
77815 
77816       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
77817       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
77818       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
77819       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_40(Idx);
77820       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
77821       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_35(Idx);
77822       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ENC_UPG_DR_ACCT_CLASS';
77823       l_rec_rev_acct_attrs.array_char_value(5)  := l_array_source_41(Idx);
77824       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ENC_UPG_DR_CCID';
77825       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_3(Idx);
77826       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ENC_UPG_DR_ENTERED_AMT';
77827       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_42(Idx);
77828       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ENC_UPG_DR_ENTERED_CURR';
77829       l_rec_rev_acct_attrs.array_char_value(8)  := l_array_source_26(Idx);
77830       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ENC_UPG_DR_LEDGER_AMT';
77831       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_43(Idx);
77832       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ENC_UPG_OPTION';
77833       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_44(Idx);
77834       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'REVERSED_DISTRIBUTION_ID1';
77835       l_rec_rev_acct_attrs.array_num_value(11)  := l_array_source_40(Idx);
77836       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'REVERSED_DISTRIBUTION_TYPE';
77837       l_rec_rev_acct_attrs.array_char_value(12)  := l_array_source_35(Idx);
77838       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'UPG_DR_ENC_TYPE_ID';
77839       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_45(Idx);
77840 
77841 
77842       xla_ae_lines_pkg.SetAcctReversalAttrs
77843          (p_event_id             => l_event_id
77844          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
77845          ,p_calculate_acctd_flag => l_calculate_acctd_flag
77846          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
77847    END IF;
77848 
77849    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
77850        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
77851 
77852 --
77853 AcctLineType_33 (
77854  p_application_id  => p_application_id
77855  ,p_event_id     => l_event_id
77856  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77857  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77858  ,p_actual_flag => l_actual_flag
77859  ,p_balance_type_code => l_balance_type_code
77860  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77861  
77862  , p_source_3 => l_array_source_3(Idx)
77863  , p_source_23 => l_array_source_23(Idx)
77864  , p_source_26 => l_array_source_26(Idx)
77865  , p_source_28 => l_array_source_28(Idx)
77866  , p_source_29 => l_array_source_29(Idx)
77867  , p_source_30 => l_array_source_30(Idx)
77868  , p_source_35 => l_array_source_35(Idx)
77869  , p_source_35_meaning => l_array_source_35_meaning(Idx)
77870  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
77871  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
77872  , p_source_38_meaning => g_array_event(l_event_id).array_value_char('source_38_meaning')
77873  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77874  , p_source_40 => l_array_source_40(Idx)
77875  , p_source_41 => l_array_source_41(Idx)
77876  , p_source_42 => l_array_source_42(Idx)
77877  , p_source_43 => l_array_source_43(Idx)
77878  , p_source_44 => l_array_source_44(Idx)
77879  , p_source_45 => l_array_source_45(Idx)
77880  );
77881 If(l_balance_type_code = 'A') THEN
77882   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77883 END IF;
77884 
77885 --
77886 
77887 
77888 --
77889 AcctLineType_34 (
77890  p_application_id  => p_application_id
77891  ,p_event_id     => l_event_id
77892  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77893  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77894  ,p_actual_flag => l_actual_flag
77895  ,p_balance_type_code => l_balance_type_code
77896  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77897  
77898  , p_source_3 => l_array_source_3(Idx)
77899  , p_source_23 => l_array_source_23(Idx)
77900  , p_source_26 => l_array_source_26(Idx)
77901  , p_source_35 => l_array_source_35(Idx)
77905  , p_source_38_meaning => g_array_event(l_event_id).array_value_char('source_38_meaning')
77902  , p_source_35_meaning => l_array_source_35_meaning(Idx)
77903  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
77904  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
77906  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77907  , p_source_40 => l_array_source_40(Idx)
77908  , p_source_41 => l_array_source_41(Idx)
77909  , p_source_42 => l_array_source_42(Idx)
77910  , p_source_43 => l_array_source_43(Idx)
77911  , p_source_44 => l_array_source_44(Idx)
77912  );
77913 If(l_balance_type_code = 'A') THEN
77914   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77915 END IF;
77916 
77917 --
77918 
77919 
77920 --
77921 AcctLineType_143 (
77922  p_application_id  => p_application_id
77923  ,p_event_id     => l_event_id
77924  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77925  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77926  ,p_actual_flag => l_actual_flag
77927  ,p_balance_type_code => l_balance_type_code
77928  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77929  
77930  , p_source_3 => l_array_source_3(Idx)
77931  , p_source_23 => l_array_source_23(Idx)
77932  , p_source_26 => l_array_source_26(Idx)
77933  , p_source_28 => l_array_source_28(Idx)
77934  , p_source_29 => l_array_source_29(Idx)
77935  , p_source_30 => l_array_source_30(Idx)
77936  , p_source_35 => l_array_source_35(Idx)
77937  , p_source_35_meaning => l_array_source_35_meaning(Idx)
77938  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
77939  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
77940  , p_source_38_meaning => g_array_event(l_event_id).array_value_char('source_38_meaning')
77941  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77942  , p_source_40 => l_array_source_40(Idx)
77943  , p_source_41 => l_array_source_41(Idx)
77944  , p_source_42 => l_array_source_42(Idx)
77945  , p_source_43 => l_array_source_43(Idx)
77946  , p_source_44 => l_array_source_44(Idx)
77947  , p_source_45 => l_array_source_45(Idx)
77948  );
77949 If(l_balance_type_code = 'A') THEN
77950   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77951 END IF;
77952 
77953 --
77954 
77955 
77956 --
77957 AcctLineType_144 (
77958  p_application_id  => p_application_id
77959  ,p_event_id     => l_event_id
77960  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77961  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77962  ,p_actual_flag => l_actual_flag
77963  ,p_balance_type_code => l_balance_type_code
77964  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77965  
77966  , p_source_3 => l_array_source_3(Idx)
77967  , p_source_23 => l_array_source_23(Idx)
77968  , p_source_26 => l_array_source_26(Idx)
77969  , p_source_35 => l_array_source_35(Idx)
77970  , p_source_35_meaning => l_array_source_35_meaning(Idx)
77971  , p_source_37 => g_array_event(l_event_id).array_value_char('source_37')
77972  , p_source_38 => g_array_event(l_event_id).array_value_char('source_38')
77973  , p_source_38_meaning => g_array_event(l_event_id).array_value_char('source_38_meaning')
77974  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77975  , p_source_40 => l_array_source_40(Idx)
77976  , p_source_41 => l_array_source_41(Idx)
77977  , p_source_42 => l_array_source_42(Idx)
77978  , p_source_43 => l_array_source_43(Idx)
77979  , p_source_44 => l_array_source_44(Idx)
77980  );
77981 If(l_balance_type_code = 'A') THEN
77982   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77983 END IF;
77984 
77985 --
77986 
77987       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
77988       -- or secondary ledger that has different currency with primary
77989       -- or alc that is calculated by sla
77990       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
77991             (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'))
77992 
77993 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
77994 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
77995           AND (l_actual_flag = 'A')) THEN
77996         XLA_AE_LINES_PKG.CreateGainOrLossLines(
77997           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
77998          ,p_application_id   => p_application_id
77999          ,p_amb_context_code => 'DEFAULT'
78000          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
78001          ,p_event_class_code => C_EVENT_CLASS_CODE
78002          ,p_event_type_code  => C_EVENT_TYPE_CODE
78003          
78004          ,p_gain_ccid        => -1
78005          ,p_loss_ccid        => -1
78006 
78007          ,p_actual_flag      => l_actual_flag
78008          ,p_enc_flag         => null
78009          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
78010          ,p_enc_g_l_ref      => null
78011          );
78012       END IF;
78013    END IF;
78014 END IF;
78015 
78016    ELSE
78017       --
78018       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78019       --
78020       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78021          trace
78022             (p_msg      => 'Trancaction revesal option is Y'
78023             ,p_level    => C_LEVEL_STATEMENT
78024             ,p_module   => l_log_module);
78025       END IF;
78026    END IF;
78027 
78028 END LOOP;
78029 l_result := XLA_AE_LINES_PKG.InsertLines ;
78030 end loop;
78031 close line_cur;
78032 
78033 
78034 --
78035 -- insert headers into xla_ae_headers_gt table
78036 --
78037 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
78038 
78042 
78039 -- insert into errors table here.
78040 
78041 END LOOP;
78043 --
78044 -- 4865292
78045 --
78046 -- Compare g_hdr_extract_count with event count in
78047 -- CreateHeadersAndLines.
78048 --
78049 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
78050 
78051 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78052    trace (p_msg     => '# rows extracted from header extract objects '
78053                     || ' (running total): '
78054                     || g_hdr_extract_count
78055          ,p_level   => C_LEVEL_STATEMENT
78056          ,p_module  => l_log_module);
78057 END IF;
78058 
78059 CLOSE header_cur;
78060 --
78061 
78062 --
78063 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78064    trace
78065       (p_msg      => 'END of EventClass_150'
78066       ,p_level    => C_LEVEL_PROCEDURE
78067       ,p_module   => l_log_module);
78068 END IF;
78069 --
78070 RETURN l_result;
78071 EXCEPTION
78072 WHEN xla_exceptions_pkg.application_exception THEN
78073    
78074 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
78075 
78076    
78077 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
78078 
78079    RAISE;
78080 WHEN OTHERS THEN
78081    xla_exceptions_pkg.raise_message
78082       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_150');
78083 END EventClass_150;
78084 --
78085 
78086 ---------------------------------------
78087 --
78088 -- PRIVATE PROCEDURE
78089 --         insert_sources_151
78090 --
78091 ----------------------------------------
78092 --
78093 PROCEDURE insert_sources_151(
78094                                 p_target_ledger_id       IN NUMBER
78095                               , p_language               IN VARCHAR2
78096                               , p_sla_ledger_id          IN NUMBER
78097                               , p_pad_start_date         IN DATE
78098                               , p_pad_end_date           IN DATE
78099                          )
78100 IS
78101 
78102 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ADJ_ALL';
78103 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BURDEN_COST_ADJ';
78104 p_apps_owner                   VARCHAR2(30);
78105 l_log_module                   VARCHAR2(240);
78106 BEGIN
78107 IF g_log_enabled THEN
78108       l_log_module := C_DEFAULT_MODULE||'.insert_sources_151';
78109 END IF;
78110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78111 
78112       trace
78113          (p_msg      => 'BEGIN of insert_sources_151'
78114          ,p_level    => C_LEVEL_PROCEDURE
78115          ,p_module   => l_log_module);
78116 
78117 END IF;
78118 
78119 -- select APPS owner
78120 SELECT oracle_username
78121   INTO p_apps_owner
78122   FROM fnd_oracle_userid
78123  WHERE read_only_flag = 'U'
78124 ;
78125 
78126 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78127       trace
78128          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
78129                         ' - p_language = '||p_language||
78130                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
78131                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
78132                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
78133                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
78134          ,p_level    => C_LEVEL_STATEMENT
78135          ,p_module   => l_log_module);
78136 END IF;
78137 
78138 
78139 --
78140 INSERT INTO xla_diag_sources --hdr2
78141 (
78142         event_id
78143       , ledger_id
78144       , sla_ledger_id
78145       , description_language
78146       , object_name
78147       , object_type_code
78148       , line_number
78149       , source_application_id
78150       , source_type_code
78151       , source_code
78152       , source_value
78153       , source_meaning
78154       , created_by
78155       , creation_date
78156       , last_update_date
78157       , last_updated_by
78158       , last_update_login
78159       , program_update_date
78160       , program_application_id
78161       , program_id
78162       , request_id
78163 )
78164 SELECT
78165         event_id
78166       , p_target_ledger_id
78167       , p_sla_ledger_id
78168       , p_language
78169       , object_name
78170       , object_type_code
78171       , line_number
78172       , source_application_id
78173       , source_type_code
78174       , source_code
78175       , SUBSTR(source_value ,1,1996)
78176       , SUBSTR(source_meaning ,1,200)
78177       , xla_environment_pkg.g_Usr_Id
78178       , TRUNC(SYSDATE)
78179       , TRUNC(SYSDATE)
78180       , xla_environment_pkg.g_Usr_Id
78181       , xla_environment_pkg.g_Login_Id
78182       , TRUNC(SYSDATE)
78183       , xla_environment_pkg.g_Prog_Appl_Id
78184       , xla_environment_pkg.g_Prog_Id
78185       , xla_environment_pkg.g_Req_Id
78186   FROM (
78187        SELECT xet.event_id                  event_id
78188             , 0                          line_number
78189             , CASE r
78190                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
78191                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
78192                 
78193                ELSE null
78194               END                           object_name
78195             , CASE r
78196                 WHEN 1 THEN 'HEADER' 
78197                 WHEN 2 THEN 'HEADER' 
78198                 
78199                 ELSE null
78200               END                           object_type_code
78201             , CASE r
78202                 WHEN 1 THEN '275' 
78203                 WHEN 2 THEN '275' 
78204                 
78205                 ELSE null
78209                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
78206               END                           source_application_id
78207             , 'S'             source_type_code
78208             , CASE r
78210                 WHEN 2 THEN 'GL_DATE' 
78211                 
78212                 ELSE null
78213               END                           source_code
78214             , CASE r
78215                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
78216                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
78217                 
78218                 ELSE null
78219               END                           source_value
78220             , null              source_meaning
78221          FROM xla_events_gt     xet  
78222       , PA_XLA_EXP_HEADER_V  h2
78223              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
78224          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
78225            AND xet.event_class_code = C_EVENT_CLASS_CODE
78226               AND h2.event_id = xet.event_id
78227 
78228 )
78229 ;
78230 --
78231 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78232 
78233       trace
78234          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
78235          ,p_level    => C_LEVEL_STATEMENT
78236          ,p_module   => l_log_module);
78237 
78238 END IF;
78239 --
78240 
78241 
78242 
78243 --
78244 INSERT INTO xla_diag_sources  --line2
78245 (
78246         event_id
78247       , ledger_id
78248       , sla_ledger_id
78249       , description_language
78250       , object_name
78251       , object_type_code
78252       , line_number
78253       , source_application_id
78254       , source_type_code
78255       , source_code
78256       , source_value
78257       , source_meaning
78258       , created_by
78259       , creation_date
78260       , last_update_date
78261       , last_updated_by
78262       , last_update_login
78263       , program_update_date
78264       , program_application_id
78265       , program_id
78266       , request_id
78267 )
78268 SELECT  event_id
78269       , p_target_ledger_id
78270       , p_sla_ledger_id
78271       , p_language
78272       , object_name
78273       , object_type_code
78274       , line_number
78275       , source_application_id
78276       , source_type_code
78277       , source_code
78278       , SUBSTR(source_value,1,1996)
78279       , SUBSTR(source_meaning ,1,200)
78280       , xla_environment_pkg.g_Usr_Id
78281       , TRUNC(SYSDATE)
78282       , TRUNC(SYSDATE)
78283       , xla_environment_pkg.g_Usr_Id
78284       , xla_environment_pkg.g_Login_Id
78285       , TRUNC(SYSDATE)
78286       , xla_environment_pkg.g_Prog_Appl_Id
78287       , xla_environment_pkg.g_Prog_Id
78288       , xla_environment_pkg.g_Req_Id
78289   FROM (
78290        SELECT xet.event_id                  event_id
78291             , l1.line_number                 line_number
78292             , CASE r
78293                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
78294                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
78295                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
78296                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
78297                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
78298                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
78299                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
78300                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
78301                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
78302                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
78303                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
78304                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
78305                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
78306                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
78307                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
78308                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
78309                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
78310                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
78311                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
78312                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
78313                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
78314                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
78315                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
78316                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
78317                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
78318                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
78319                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
78320                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
78321                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
78322                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
78323                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
78324                 
78325                ELSE null
78326               END                           object_name
78327             , CASE r
78328                 WHEN 1 THEN 'LINE' 
78329                 WHEN 2 THEN 'LINE' 
78330                 WHEN 3 THEN 'LINE' 
78331                 WHEN 4 THEN 'LINE' 
78332                 WHEN 5 THEN 'LINE' 
78333                 WHEN 6 THEN 'LINE' 
78334                 WHEN 7 THEN 'LINE' 
78335                 WHEN 8 THEN 'LINE' 
78336                 WHEN 9 THEN 'LINE' 
78337                 WHEN 10 THEN 'LINE' 
78338                 WHEN 11 THEN 'LINE' 
78339                 WHEN 12 THEN 'LINE' 
78340                 WHEN 13 THEN 'LINE' 
78341                 WHEN 14 THEN 'LINE' 
78342                 WHEN 15 THEN 'LINE' 
78343                 WHEN 16 THEN 'LINE' 
78344                 WHEN 17 THEN 'LINE' 
78345                 WHEN 18 THEN 'LINE' 
78346                 WHEN 19 THEN 'LINE' 
78347                 WHEN 20 THEN 'LINE' 
78348                 WHEN 21 THEN 'LINE' 
78349                 WHEN 22 THEN 'LINE' 
78353                 WHEN 26 THEN 'LINE' 
78350                 WHEN 23 THEN 'LINE' 
78351                 WHEN 24 THEN 'LINE' 
78352                 WHEN 25 THEN 'LINE' 
78354                 WHEN 27 THEN 'LINE' 
78355                 WHEN 28 THEN 'LINE' 
78356                 WHEN 29 THEN 'LINE' 
78357                 WHEN 30 THEN 'LINE' 
78358                 WHEN 31 THEN 'LINE' 
78359                 
78360                 ELSE null
78361               END                           object_type_code
78362             , CASE r
78363                 WHEN 1 THEN '275' 
78364                 WHEN 2 THEN '275' 
78365                 WHEN 3 THEN '275' 
78366                 WHEN 4 THEN '275' 
78367                 WHEN 5 THEN '275' 
78368                 WHEN 6 THEN '275' 
78369                 WHEN 7 THEN '275' 
78370                 WHEN 8 THEN '275' 
78371                 WHEN 9 THEN '275' 
78372                 WHEN 10 THEN '275' 
78373                 WHEN 11 THEN '275' 
78374                 WHEN 12 THEN '275' 
78375                 WHEN 13 THEN '275' 
78376                 WHEN 14 THEN '275' 
78377                 WHEN 15 THEN '275' 
78378                 WHEN 16 THEN '275' 
78379                 WHEN 17 THEN '275' 
78380                 WHEN 18 THEN '275' 
78381                 WHEN 19 THEN '275' 
78382                 WHEN 20 THEN '275' 
78383                 WHEN 21 THEN '275' 
78384                 WHEN 22 THEN '275' 
78385                 WHEN 23 THEN '275' 
78386                 WHEN 24 THEN '275' 
78387                 WHEN 25 THEN '275' 
78388                 WHEN 26 THEN '275' 
78389                 WHEN 27 THEN '275' 
78390                 WHEN 28 THEN '275' 
78391                 WHEN 29 THEN '275' 
78392                 WHEN 30 THEN '275' 
78393                 WHEN 31 THEN '275' 
78394                 
78395                 ELSE null
78396               END                           source_application_id
78397             , 'S'             source_type_code
78398             , CASE r
78399                 WHEN 1 THEN 'BUDGET_CCID' 
78400                 WHEN 2 THEN 'COST_CCID' 
78401                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
78402                 WHEN 4 THEN 'ADJ_COST_CCID' 
78403                 WHEN 5 THEN 'COST_CLEARING_CCID' 
78404                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
78405                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
78406                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
78407                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
78408                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
78409                 WHEN 11 THEN 'EXCHANGE_RATE' 
78410                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
78411                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
78412                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
78413                 WHEN 15 THEN 'LINE_NUMBER' 
78414                 WHEN 16 THEN 'LINE_TYPE' 
78415                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
78416                 WHEN 18 THEN 'ENC_UPG_DR_ACCT_CLASS' 
78417                 WHEN 19 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
78418                 WHEN 20 THEN 'ENTERED_BURDENED_COST' 
78419                 WHEN 21 THEN 'ACCT_BURDENED_COST' 
78420                 WHEN 22 THEN 'ENCUMBRANCE_AMOUNT' 
78421                 WHEN 23 THEN 'PA_APPLICATION_ID' 
78422                 WHEN 24 THEN 'PA_DISTRIBUTION_TYPE' 
78423                 WHEN 25 THEN 'PA_ENTITY_CODE' 
78424                 WHEN 26 THEN 'PA_FIRST_DIST_ID' 
78425                 WHEN 27 THEN 'PA_FIRST_SYS_TRANS_ID' 
78426                 WHEN 28 THEN 'PA_SECOND_DIST_ID' 
78427                 WHEN 29 THEN 'ENC_UPG_CR_ACCT_CLASS' 
78428                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
78429                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
78430                 
78431                 ELSE null
78432               END                           source_code
78433             , CASE r
78434                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
78435                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
78436                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
78437                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
78438                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
78439                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
78440                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
78441                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
78442                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
78443                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
78444                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
78445                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
78446                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
78447                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
78448                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
78449                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
78450                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
78451                 WHEN 18 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
78452                 WHEN 19 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
78453                 WHEN 20 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
78454                 WHEN 21 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
78455                 WHEN 22 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
78456                 WHEN 23 THEN TO_CHAR(l1.PA_APPLICATION_ID)
78457                 WHEN 24 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
78458                 WHEN 25 THEN TO_CHAR(l1.PA_ENTITY_CODE)
78459                 WHEN 26 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
78460                 WHEN 27 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
78461                 WHEN 28 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
78462                 WHEN 29 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
78463                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
78464                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
78465                 
78466                 ELSE null
78467               END                           source_value
78471                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
78468             , CASE r
78469                 WHEN 3 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
78470                           103371
78472                          ,'ALLOW_OVERRIDE_CCID_FLAG'
78473                          ,'S'
78474                          ,275)
78475                 WHEN 16 THEN fvl35.meaning
78476                 
78477                 ELSE null
78478               END               source_meaning
78479          FROM  xla_events_gt     xet  
78480         , PA_XLA_CDL_LINES_V  l1
78481   , fnd_lookup_values    fvl35
78482             , (select rownum r from all_objects where rownum <= 31 and owner = p_apps_owner)
78483         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
78484           AND xet.event_class_code = C_EVENT_CLASS_CODE
78485             AND l1.event_id          = xet.event_id
78486    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
78487   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
78488   AND fvl35.view_application_id(+) = 275
78489   AND fvl35.language(+)            = USERENV('LANG')
78490   
78491 )
78492 ;
78493 --
78494 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78495 
78496       trace
78497          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
78498          ,p_level    => C_LEVEL_STATEMENT
78499          ,p_module   => l_log_module);
78500 
78501 END IF;
78502 
78503 
78504 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78505       trace
78506          (p_msg      => 'END of insert_sources_151'
78507          ,p_level    => C_LEVEL_PROCEDURE
78508          ,p_module   => l_log_module);
78509 END IF;
78510 EXCEPTION
78511   WHEN xla_exceptions_pkg.application_exception THEN
78512       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
78513             trace
78514                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
78515                ,p_level    => C_LEVEL_EXCEPTION
78516                ,p_module   => l_log_module);
78517       END IF;
78518       RAISE;
78519   WHEN OTHERS THEN
78520       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
78521             trace
78522                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
78523                ,p_level    => C_LEVEL_EXCEPTION
78524                ,p_module   => l_log_module);
78525        END IF;
78526        xla_exceptions_pkg.raise_message
78527            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_151');
78528 END insert_sources_151;
78529 --
78530 
78531 ---------------------------------------
78532 --
78533 -- PRIVATE FUNCTION
78534 --         EventClass_151
78535 --
78536 ----------------------------------------
78537 --
78538 FUNCTION EventClass_151
78539        (p_application_id         IN NUMBER
78540        ,p_base_ledger_id         IN NUMBER
78541        ,p_target_ledger_id       IN NUMBER
78542        ,p_language               IN VARCHAR2
78543        ,p_currency_code          IN VARCHAR2
78544        ,p_sla_ledger_id          IN NUMBER
78545        ,p_pad_start_date         IN DATE
78546        ,p_pad_end_date           IN DATE
78547        ,p_primary_ledger_id      IN NUMBER)
78548 RETURN BOOLEAN IS
78549 --
78550 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ADJ_ALL';
78551 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BURDEN_COST_ADJ';
78552 
78553 l_calculate_acctd_flag   VARCHAR2(1) :='N';
78554 l_calculate_g_l_flag     VARCHAR2(1) :='N';
78555 --
78556 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78557 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78558 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78559 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78560 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78561 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78562 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78563 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78564 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78565 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78566 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78567 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78568 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78569 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78570 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78571 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78572 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78573 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78574 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78575 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78576 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78577 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78578 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
78579 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78580 
78581 l_event_id                             NUMBER;
78582 l_previous_event_id                    NUMBER;
78583 l_first_event_id                       NUMBER;
78584 l_last_event_id                        NUMBER;
78585 
78586 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
78587 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
78588 --
78589 --
78590 l_result                    BOOLEAN := TRUE;
78591 l_rows                      NUMBER  := 1000;
78595 l_transaction_reversal      NUMBER;
78592 l_event_type_name           VARCHAR2(80) := 'All';
78593 l_event_class_name          VARCHAR2(80) := 'Burden Cost Adjustments';
78594 l_description               VARCHAR2(4000);
78596 l_ae_header_id              NUMBER;
78597 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
78598 l_log_module                VARCHAR2(240);
78599 --
78600 l_acct_reversal_source      VARCHAR2(30);
78601 l_trx_reversal_source       VARCHAR2(30);
78602 
78603 l_continue_with_lines       BOOLEAN := TRUE;
78604 --
78605 l_acc_rev_gl_date_source    DATE;                      -- 4262811
78606 --
78607 type t_array_event_id is table of number index by binary_integer;
78608 
78609 l_rec_array_event                    t_rec_array_event;
78610 l_null_rec_array_event               t_rec_array_event;
78611 l_array_ae_header_id                 xla_number_array_type;
78612 l_actual_flag                        VARCHAR2(1) := NULL;
78613 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
78614 l_balance_type_code                  VARCHAR2(1) :=NULL;
78615 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
78616 
78617 --
78618 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
78619 --
78620 
78621 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
78622 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
78623 
78624 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
78625 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
78626 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
78627 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
78628 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
78629 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
78630 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
78631 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78632 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
78633 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
78634 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
78635 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
78636 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78637 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
78638 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
78639 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
78640 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
78641 TYPE t_array_source_41 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78642 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
78643 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
78644 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
78645 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
78646 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
78647 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
78648 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
78649 TYPE t_array_source_58 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
78650 TYPE t_array_source_59 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
78651 TYPE t_array_source_60 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
78652 TYPE t_array_source_61 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
78653 TYPE t_array_source_62 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
78654 TYPE t_array_source_63 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
78655 
78656 l_array_source_33              t_array_source_33;
78657 l_array_source_75              t_array_source_75;
78658 
78659 l_array_source_3      t_array_source_3;
78660 l_array_source_4      t_array_source_4;
78661 l_array_source_5      t_array_source_5;
78662 l_array_source_6      t_array_source_6;
78663 l_array_source_7      t_array_source_7;
78664 l_array_source_8      t_array_source_8;
78665 l_array_source_23      t_array_source_23;
78666 l_array_source_24      t_array_source_24;
78667 l_array_source_26      t_array_source_26;
78668 l_array_source_28      t_array_source_28;
78669 l_array_source_29      t_array_source_29;
78670 l_array_source_30      t_array_source_30;
78671 l_array_source_31      t_array_source_31;
78672 l_array_source_32      t_array_source_32;
78673 l_array_source_34      t_array_source_34;
78674 l_array_source_35      t_array_source_35;
78675 l_array_source_35_meaning      t_array_lookup_meaning;
78676 l_array_source_36      t_array_source_36;
78677 l_array_source_41      t_array_source_41;
78678 l_array_source_44      t_array_source_44;
78679 l_array_source_52      t_array_source_52;
78680 l_array_source_53      t_array_source_53;
78681 l_array_source_54      t_array_source_54;
78682 l_array_source_55      t_array_source_55;
78683 l_array_source_56      t_array_source_56;
78684 l_array_source_57      t_array_source_57;
78685 l_array_source_58      t_array_source_58;
78689 l_array_source_62      t_array_source_62;
78686 l_array_source_59      t_array_source_59;
78687 l_array_source_60      t_array_source_60;
78688 l_array_source_61      t_array_source_61;
78690 l_array_source_63      t_array_source_63;
78691 
78692 --
78693 CURSOR header_cur
78694 IS
78695 SELECT /*+ leading(xet) cardinality(xet,1) */
78696 -- Event Class Code: BURDEN_COST_ADJ
78697     xet.entity_id
78698    ,xet.legal_entity_id
78699    ,xet.entity_code
78700    ,xet.transaction_number
78701    ,xet.event_id
78702    ,xet.event_class_code
78703    ,xet.event_type_code
78704    ,xet.event_number
78705    ,xet.event_date
78706    ,xet.transaction_date
78707    ,xet.reference_num_1
78708    ,xet.reference_num_2
78709    ,xet.reference_num_3
78710    ,xet.reference_num_4
78711    ,xet.reference_char_1
78712    ,xet.reference_char_2
78713    ,xet.reference_char_3
78714    ,xet.reference_char_4
78715    ,xet.reference_date_1
78716    ,xet.reference_date_2
78717    ,xet.reference_date_3
78718    ,xet.reference_date_4
78719    ,xet.event_created_by
78720    ,xet.budgetary_control_flag 
78721   , h2.EXPENDITURE_ITEM_ID    source_33
78722   , h2.GL_DATE    source_75
78723   FROM xla_events_gt     xet 
78724   , PA_XLA_EXP_HEADER_V  h2
78725  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
78726    and xet.event_class_code = C_EVENT_CLASS_CODE
78727    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
78728 
78729  ORDER BY event_id
78730 ;
78731 
78732 
78733 --
78734 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
78735 IS
78736 SELECT  /*+ leading(xet) cardinality(xet,1) */
78737 -- Event Class Code: BURDEN_COST_ADJ
78738     xet.entity_id
78739    ,xet.legal_entity_id
78740    ,xet.entity_code
78741    ,xet.transaction_number
78742    ,xet.event_id
78743    ,xet.event_class_code
78744    ,xet.event_type_code
78745    ,xet.event_number
78746    ,xet.event_date
78747    ,xet.transaction_date
78748    ,xet.reference_num_1
78749    ,xet.reference_num_2
78750    ,xet.reference_num_3
78751    ,xet.reference_num_4
78752    ,xet.reference_char_1
78753    ,xet.reference_char_2
78754    ,xet.reference_char_3
78755    ,xet.reference_char_4
78756    ,xet.reference_date_1
78757    ,xet.reference_date_2
78758    ,xet.reference_date_3
78759    ,xet.reference_date_4
78760    ,xet.event_created_by
78761    ,xet.budgetary_control_flag
78762  , l1.LINE_NUMBER  
78763   , l1.BUDGET_CCID    source_3
78764   , l1.COST_CCID    source_4
78765   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
78766   , l1.ADJ_COST_CCID    source_6
78767   , l1.COST_CLEARING_CCID    source_7
78768   , l1.ADJ_COST_CLEARING_CCID    source_8
78769   , l1.REVERSING_LINE_FLAG    source_23
78770   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
78771   , l1.ENTERED_CURRENCY_CODE    source_26
78772   , l1.EXCHANGE_RATE_DATE    source_28
78773   , l1.EXCHANGE_RATE    source_29
78774   , l1.EXCHANGE_RATE_TYPE    source_30
78775   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
78776   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
78777   , l1.LINE_NUMBER    source_34
78778   , l1.LINE_TYPE    source_35
78779   , fvl35.meaning   source_35_meaning
78780   , l1.LINE_NUM_REVERSED    source_36
78781   , l1.ENC_UPG_DR_ACCT_CLASS    source_41
78782   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_44
78783   , l1.ENTERED_BURDENED_COST    source_52
78784   , l1.ACCT_BURDENED_COST    source_53
78785   , l1.ENCUMBRANCE_AMOUNT    source_54
78786   , l1.PA_APPLICATION_ID    source_55
78787   , l1.PA_DISTRIBUTION_TYPE    source_56
78788   , l1.PA_ENTITY_CODE    source_57
78789   , l1.PA_FIRST_DIST_ID    source_58
78790   , l1.PA_FIRST_SYS_TRANS_ID    source_59
78791   , l1.PA_SECOND_DIST_ID    source_60
78792   , l1.ENC_UPG_CR_ACCT_CLASS    source_61
78793   , l1.ENCUMBRANCE_TYPE_ID    source_62
78794   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_63
78795   FROM xla_events_gt     xet 
78796   , PA_XLA_CDL_LINES_V  l1
78797   , fnd_lookup_values    fvl35
78798  WHERE xet.event_id between x_first_event_id and x_last_event_id
78799    and xet.event_date between p_pad_start_date and p_pad_end_date
78800    and xet.event_class_code = C_EVENT_CLASS_CODE
78801    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
78802    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
78803   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
78804   AND fvl35.view_application_id(+) = 275
78805   AND fvl35.language(+)            = USERENV('LANG')
78806   ;
78807 
78808 --
78809 BEGIN
78810 IF g_log_enabled THEN
78811    l_log_module := C_DEFAULT_MODULE||'.EventClass_151';
78812 END IF;
78813 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78814    trace
78815       (p_msg      => 'BEGIN of EventClass_151'
78816       ,p_level    => C_LEVEL_PROCEDURE
78817       ,p_module   => l_log_module);
78818 END IF;
78819 
78820 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78821    trace
78822       (p_msg      => 'p_application_id = '||p_application_id||
78823                      ' - p_base_ledger_id = '||p_base_ledger_id||
78824                      ' - p_target_ledger_id  = '||p_target_ledger_id||
78825                      ' - p_language = '||p_language||
78826                      ' - p_currency_code = '||p_currency_code||
78827                      ' - p_sla_ledger_id = '||p_sla_ledger_id
78828       ,p_level    => C_LEVEL_STATEMENT
78829       ,p_module   => l_log_module);
78830 END IF;
78831 --
78832 -- initialze arrays
78833 --
78834 g_array_event.DELETE;
78835 l_rec_array_event := l_null_rec_array_event;
78836 --
78837 --------------------------------------
78838 -- 4262811 Initialze MPA Line Number
78839 --------------------------------------
78843 
78840 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
78841 
78842 --
78844 --
78845 OPEN header_cur;
78846 --
78847 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78848    trace
78849    (p_msg      => 'SQL - FETCH header_cur'
78850    ,p_level    => C_LEVEL_STATEMENT
78851    ,p_module   => l_log_module);
78852 END IF;
78853 --
78854 LOOP
78855 FETCH header_cur BULK COLLECT INTO
78856         l_array_entity_id
78857       , l_array_legal_entity_id
78858       , l_array_entity_code
78859       , l_array_transaction_num
78860       , l_array_event_id
78861       , l_array_class_code
78862       , l_array_event_type
78863       , l_array_event_number
78864       , l_array_event_date
78865       , l_array_transaction_date
78866       , l_array_reference_num_1
78867       , l_array_reference_num_2
78868       , l_array_reference_num_3
78869       , l_array_reference_num_4
78870       , l_array_reference_char_1
78871       , l_array_reference_char_2
78872       , l_array_reference_char_3
78873       , l_array_reference_char_4
78874       , l_array_reference_date_1
78875       , l_array_reference_date_2
78876       , l_array_reference_date_3
78877       , l_array_reference_date_4
78878       , l_array_event_created_by
78879       , l_array_budgetary_control_flag 
78880       , l_array_source_33
78881       , l_array_source_75
78882       LIMIT l_rows;
78883 --
78884 IF (C_LEVEL_EVENT >= g_log_level) THEN
78885    trace
78886    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
78887    ,p_level    => C_LEVEL_EVENT
78888    ,p_module   => l_log_module);
78889 END IF;
78890 --
78891 EXIT WHEN l_array_entity_id.COUNT = 0;
78892 
78893 -- initialize arrays
78894 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
78895 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
78896 
78897 --
78898 -- Bug 4458708
78899 --
78900 XLA_AE_LINES_PKG.g_LineNumber := 0;
78901 
78902 
78903 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
78904 g_last_hdr_idx := l_array_event_id.LAST;
78905 --
78906 -- loop for the headers. Each iteration is for each header extract row
78907 -- fetched in header cursor
78908 --
78909 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
78910 
78911 --
78912 -- set event info as cache for other routines to refer event attributes
78913 --
78914 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78915    (p_application_id           => p_application_id
78916    ,p_primary_ledger_id        => p_primary_ledger_id
78917    ,p_base_ledger_id           => p_base_ledger_id
78918    ,p_target_ledger_id         => p_target_ledger_id
78919    ,p_entity_id                => l_array_entity_id(hdr_idx)
78920    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
78921    ,p_entity_code              => l_array_entity_code(hdr_idx)
78922    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
78923    ,p_event_id                 => l_array_event_id(hdr_idx)
78924    ,p_event_class_code         => l_array_class_code(hdr_idx)
78925    ,p_event_type_code          => l_array_event_type(hdr_idx)
78926    ,p_event_number             => l_array_event_number(hdr_idx)
78927    ,p_event_date               => l_array_event_date(hdr_idx)
78928    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
78929    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
78930    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
78931    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
78932    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
78933    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
78934    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
78935    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
78936    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
78937    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
78938    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
78939    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
78940    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
78941    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
78942    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
78943 
78944 --
78945 -- set the status of entry to C_VALID (0)
78946 --
78947 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78948 
78949 --
78950 -- initialize a row for ae header
78951 --
78952 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
78953 
78954 l_event_id := l_array_event_id(hdr_idx);
78955 
78956 --
78957 -- storing the hdr_idx for event. May be used by line cursor.
78958 --
78959 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
78960 
78961 --
78962 -- store sources from header extract. This can be improved to
78963 -- store only those sources from header extract that may be used in lines
78964 --
78965 
78966 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
78967 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
78968 
78969 --
78970 -- initilaize the status of ae headers for diffrent balance types
78971 -- the status is initialised to C_NOT_CREATED (2)
78972 --
78973 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78974 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78975 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78976 
78977 --
78978 -- call api to validate and store accounting attributes for header
78979 --
78980 
78984 l_acc_rev_gl_date_source := NULL;
78981 ------------------------------------------------------------
78982 -- Accrual Reversal : to get date for Standard Source (NONE)
78983 ------------------------------------------------------------
78985 
78986      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
78987       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
78988 
78989 
78990 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
78991 
78992 XLA_AE_HEADER_PKG.SetJeCategoryName;
78993 
78994 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
78995 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
78996 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
78997 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
78998 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
78999 
79000 
79001 -- No header level analytical criteria
79002 
79003 --
79004 --accounting attribute enhancement, bug 3612931
79005 --
79006 l_trx_reversal_source := SUBSTR(NULL, 1,30);
79007 
79008 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
79009    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
79010 
79011    xla_accounting_err_pkg.build_message
79012       (p_appli_s_name            => 'XLA'
79013       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
79014       ,p_token_1                 => 'ACCT_ATTR_NAME'
79015       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
79016       ,p_token_2                 => 'PRODUCT_NAME'
79017       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
79018       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
79019       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
79020       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
79021 
79022 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
79023    --
79024    -- following sets the accounting attributes needed to reverse
79025    -- accounting for a distributeion
79026    --
79027    xla_ae_lines_pkg.SetTrxReversalAttrs
79028       (p_event_id              => l_event_id
79029       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
79030       ,p_trx_reversal_source   => l_trx_reversal_source);
79031 
79032 END IF;
79033 
79034 
79035 ----------------------------------------------------------------
79036 -- 4262811 -  update the header statuses to invalid in need be
79037 ----------------------------------------------------------------
79038 --
79039 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
79040 
79041 
79042   -----------------------------------------------
79043   -- No accrual reversal for the event class/type
79044   -----------------------------------------------
79045 ----------------------------------------------------------------
79046 
79047 --
79048 -- this ends the header loop iteration for one bulk fetch
79049 --
79050 END LOOP;
79051 
79052 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
79053 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
79054 
79055 --
79056 -- insert dummy rows into lines gt table that were created due to
79057 -- transaction reversals
79058 --
79059 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
79060    l_result := XLA_AE_LINES_PKG.InsertLines;
79061 END IF;
79062 
79063 --
79064 -- reset the temp_line_num for each set of events fetched from header
79065 -- cursor rather than doing it for each new event in line cursor
79066 -- Bug 3939231
79067 --
79068 xla_ae_lines_pkg.g_temp_line_num := 0;
79069 
79070 
79071 
79072 --
79073 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
79074 --
79075 --
79076 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79077 
79078       trace
79079          (p_msg      => 'SQL - FETCH line_cur'
79080          ,p_level    => C_LEVEL_STATEMENT
79081          ,p_module   => l_log_module);
79082 
79083 END IF;
79084 --
79085 --
79086 LOOP
79087   --
79088   FETCH line_cur BULK COLLECT INTO
79089         l_array_entity_id
79090       , l_array_legal_entity_id
79091       , l_array_entity_code
79092       , l_array_transaction_num
79093       , l_array_event_id
79094       , l_array_class_code
79095       , l_array_event_type
79096       , l_array_event_number
79097       , l_array_event_date
79098       , l_array_transaction_date
79099       , l_array_reference_num_1
79100       , l_array_reference_num_2
79101       , l_array_reference_num_3
79102       , l_array_reference_num_4
79103       , l_array_reference_char_1
79104       , l_array_reference_char_2
79105       , l_array_reference_char_3
79106       , l_array_reference_char_4
79107       , l_array_reference_date_1
79108       , l_array_reference_date_2
79109       , l_array_reference_date_3
79110       , l_array_reference_date_4
79111       , l_array_event_created_by
79112       , l_array_budgetary_control_flag
79113       , l_array_extract_line_num 
79114       , l_array_source_3
79115       , l_array_source_4
79116       , l_array_source_5
79117       , l_array_source_6
79118       , l_array_source_7
79119       , l_array_source_8
79120       , l_array_source_23
79121       , l_array_source_24
79122       , l_array_source_26
79123       , l_array_source_28
79124       , l_array_source_29
79125       , l_array_source_30
79126       , l_array_source_31
79130       , l_array_source_35_meaning
79127       , l_array_source_32
79128       , l_array_source_34
79129       , l_array_source_35
79131       , l_array_source_36
79132       , l_array_source_41
79133       , l_array_source_44
79134       , l_array_source_52
79135       , l_array_source_53
79136       , l_array_source_54
79137       , l_array_source_55
79138       , l_array_source_56
79139       , l_array_source_57
79140       , l_array_source_58
79141       , l_array_source_59
79142       , l_array_source_60
79143       , l_array_source_61
79144       , l_array_source_62
79145       , l_array_source_63
79146       LIMIT l_rows;
79147 
79148   --
79149   IF (C_LEVEL_EVENT >= g_log_level) THEN
79150             trace
79151                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
79152                ,p_level    => C_LEVEL_EVENT
79153                ,p_module   => l_log_module);
79154   END IF;
79155   --
79156   EXIT WHEN l_array_entity_id.count = 0;
79157 
79158   XLA_AE_LINES_PKG.g_rec_lines := null;
79159 
79160 --
79161 -- Bug 4458708
79162 --
79163 XLA_AE_LINES_PKG.g_LineNumber := 0;
79164 --
79165 --
79166 
79167 FOR Idx IN 1..l_array_event_id.count LOOP
79168    --
79169    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
79170    --
79171    l_event_id := l_array_event_id(idx);  -- 5648433
79172 
79173    --
79174    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
79175    --
79176 
79177    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
79178              (g_array_event(l_event_id).array_value_num('header_index'))
79179          ,'N'
79180          ) <> 'Y'
79181    THEN
79182       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79183          trace
79184             (p_msg      => 'Trancaction revesal option is not Y '
79185             ,p_level    => C_LEVEL_STATEMENT
79186             ,p_module   => l_log_module);
79187       END IF;
79188 
79189 --
79190 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
79191 --
79192 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
79193 --
79194 -- set event info as cache for other routines to refer event attributes
79195 --
79196 
79197 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
79198    l_previous_event_id := l_event_id;
79199 
79200    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
79201       (p_application_id           => p_application_id
79202       ,p_primary_ledger_id        => p_primary_ledger_id
79203       ,p_base_ledger_id           => p_base_ledger_id
79204       ,p_target_ledger_id         => p_target_ledger_id
79205       ,p_entity_id                => l_array_entity_id(Idx)
79206       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
79207       ,p_entity_code              => l_array_entity_code(Idx)
79208       ,p_transaction_num          => l_array_transaction_num(Idx)
79209       ,p_event_id                 => l_array_event_id(Idx)
79210       ,p_event_class_code         => l_array_class_code(Idx)
79211       ,p_event_type_code          => l_array_event_type(Idx)
79212       ,p_event_number             => l_array_event_number(Idx)
79213       ,p_event_date               => l_array_event_date(Idx)
79214       ,p_transaction_date         => l_array_transaction_date(Idx)
79215       ,p_reference_num_1          => l_array_reference_num_1(Idx)
79216       ,p_reference_num_2          => l_array_reference_num_2(Idx)
79217       ,p_reference_num_3          => l_array_reference_num_3(Idx)
79218       ,p_reference_num_4          => l_array_reference_num_4(Idx)
79219       ,p_reference_char_1         => l_array_reference_char_1(Idx)
79220       ,p_reference_char_2         => l_array_reference_char_2(Idx)
79221       ,p_reference_char_3         => l_array_reference_char_3(Idx)
79222       ,p_reference_char_4         => l_array_reference_char_4(Idx)
79223       ,p_reference_date_1         => l_array_reference_date_1(Idx)
79224       ,p_reference_date_2         => l_array_reference_date_2(Idx)
79225       ,p_reference_date_3         => l_array_reference_date_3(Idx)
79226       ,p_reference_date_4         => l_array_reference_date_4(Idx)
79227       ,p_event_created_by         => l_array_event_created_by(Idx)
79228       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
79229        --
79230 END IF;
79231 
79232 
79233 
79234 --
79235 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
79236 
79237 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
79238 
79239 IF l_continue_with_lines THEN
79240    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
79241       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
79242 
79243       xla_accounting_err_pkg.build_message
79244          (p_appli_s_name            => 'XLA'
79245          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
79246          ,p_token_1                 => 'LINE_NUMBER'
79247          ,p_value_1                 => l_array_extract_line_num(Idx)
79248          ,p_token_2                 => 'PRODUCT_NAME'
79249          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
79250          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
79251          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
79252          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
79253 
79254    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
79255       --
79256       -- following sets the accounting attributes needed to reverse
79257       -- accounting for a distributeion
79258       --
79259 
79260       --
79261       -- 5217187
79262       --
79266       --
79263       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
79264       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
79265                                        g_array_event(l_event_id).array_value_num('header_index'));
79267       --
79268 
79269       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
79270       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
79271       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
79272       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
79273       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
79274       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
79275       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
79276       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_52(Idx);
79277       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
79278       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
79279       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
79280       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_53(Idx);
79281       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
79282       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
79283       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
79284       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
79285       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
79286       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
79287       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
79288       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
79289       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
79290       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
79291       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
79292       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_52(Idx);
79293       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
79294       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
79295       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
79296       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_53(Idx);
79297       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
79298       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
79299       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
79300       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
79301       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
79302       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
79303       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
79304       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
79305       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
79306       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
79307       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
79308       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
79309       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
79310       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
79311       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
79312       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_41(Idx);
79313       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
79314       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_3(Idx);
79315       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
79316       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_54(Idx);
79317       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
79318       l_rec_rev_acct_attrs.array_char_value(26)  := l_array_source_26(Idx);
79319       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
79320       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_54(Idx);
79321       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
79322       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_61(Idx);
79323       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
79324       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_3(Idx);
79325       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
79326       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_54(Idx);
79327       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
79328       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_26(Idx);
79329       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
79330       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_54(Idx);
79331       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
79332       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_44(Idx);
79333       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'REVERSED_DISTRIBUTION_ID1';
79334       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_33');
79335       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID2';
79336       l_rec_rev_acct_attrs.array_num_value(35)  := l_array_source_36(Idx);
79337       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_TYPE';
79338       l_rec_rev_acct_attrs.array_char_value(36)  := l_array_source_35(Idx);
79339       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
79340       l_rec_rev_acct_attrs.array_num_value(37)  := l_array_source_62(Idx);
79344 
79341       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
79342       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_63(Idx);
79343 
79345       xla_ae_lines_pkg.SetAcctReversalAttrs
79346          (p_event_id             => l_event_id
79347          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
79348          ,p_calculate_acctd_flag => l_calculate_acctd_flag
79349          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
79350    END IF;
79351 
79352    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
79353        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
79354 
79355 --
79356 AcctLineType_37 (
79357  p_application_id  => p_application_id
79358  ,p_event_id     => l_event_id
79359  ,p_calculate_acctd_flag => l_calculate_acctd_flag
79360  ,p_calculate_g_l_flag => l_calculate_g_l_flag
79361  ,p_actual_flag => l_actual_flag
79362  ,p_balance_type_code => l_balance_type_code
79363  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
79364  
79365  , p_source_3 => l_array_source_3(Idx)
79366  , p_source_4 => l_array_source_4(Idx)
79367  , p_source_5 => l_array_source_5(Idx)
79368  , p_source_6 => l_array_source_6(Idx)
79369  , p_source_7 => l_array_source_7(Idx)
79370  , p_source_23 => l_array_source_23(Idx)
79371  , p_source_24 => l_array_source_24(Idx)
79372  , p_source_26 => l_array_source_26(Idx)
79373  , p_source_28 => l_array_source_28(Idx)
79374  , p_source_29 => l_array_source_29(Idx)
79375  , p_source_30 => l_array_source_30(Idx)
79376  , p_source_31 => l_array_source_31(Idx)
79377  , p_source_32 => l_array_source_32(Idx)
79378  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
79379  , p_source_34 => l_array_source_34(Idx)
79380  , p_source_35 => l_array_source_35(Idx)
79381  , p_source_35_meaning => l_array_source_35_meaning(Idx)
79382  , p_source_36 => l_array_source_36(Idx)
79383  , p_source_41 => l_array_source_41(Idx)
79384  , p_source_44 => l_array_source_44(Idx)
79385  , p_source_52 => l_array_source_52(Idx)
79386  , p_source_53 => l_array_source_53(Idx)
79387  , p_source_54 => l_array_source_54(Idx)
79388  , p_source_55 => l_array_source_55(Idx)
79389  , p_source_56 => l_array_source_56(Idx)
79390  , p_source_57 => l_array_source_57(Idx)
79391  , p_source_58 => l_array_source_58(Idx)
79392  , p_source_59 => l_array_source_59(Idx)
79393  , p_source_60 => l_array_source_60(Idx)
79394  , p_source_61 => l_array_source_61(Idx)
79395  , p_source_62 => l_array_source_62(Idx)
79396  , p_source_63 => l_array_source_63(Idx)
79397  );
79398 If(l_balance_type_code = 'A') THEN
79399   l_actual_gain_loss_ref := l_gain_or_loss_ref;
79400 END IF;
79401 
79402 --
79403 
79404 
79405 --
79406 AcctLineType_38 (
79407  p_application_id  => p_application_id
79408  ,p_event_id     => l_event_id
79409  ,p_calculate_acctd_flag => l_calculate_acctd_flag
79410  ,p_calculate_g_l_flag => l_calculate_g_l_flag
79411  ,p_actual_flag => l_actual_flag
79412  ,p_balance_type_code => l_balance_type_code
79413  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
79414  
79415  , p_source_3 => l_array_source_3(Idx)
79416  , p_source_4 => l_array_source_4(Idx)
79417  , p_source_5 => l_array_source_5(Idx)
79418  , p_source_7 => l_array_source_7(Idx)
79419  , p_source_8 => l_array_source_8(Idx)
79420  , p_source_23 => l_array_source_23(Idx)
79421  , p_source_24 => l_array_source_24(Idx)
79422  , p_source_26 => l_array_source_26(Idx)
79423  , p_source_28 => l_array_source_28(Idx)
79424  , p_source_29 => l_array_source_29(Idx)
79425  , p_source_30 => l_array_source_30(Idx)
79426  , p_source_31 => l_array_source_31(Idx)
79427  , p_source_32 => l_array_source_32(Idx)
79428  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
79429  , p_source_34 => l_array_source_34(Idx)
79430  , p_source_35 => l_array_source_35(Idx)
79431  , p_source_35_meaning => l_array_source_35_meaning(Idx)
79432  , p_source_36 => l_array_source_36(Idx)
79433  , p_source_41 => l_array_source_41(Idx)
79434  , p_source_44 => l_array_source_44(Idx)
79435  , p_source_52 => l_array_source_52(Idx)
79436  , p_source_53 => l_array_source_53(Idx)
79437  , p_source_54 => l_array_source_54(Idx)
79438  , p_source_55 => l_array_source_55(Idx)
79439  , p_source_56 => l_array_source_56(Idx)
79440  , p_source_57 => l_array_source_57(Idx)
79441  , p_source_58 => l_array_source_58(Idx)
79442  , p_source_59 => l_array_source_59(Idx)
79443  , p_source_60 => l_array_source_60(Idx)
79444  , p_source_61 => l_array_source_61(Idx)
79445  , p_source_62 => l_array_source_62(Idx)
79446  , p_source_63 => l_array_source_63(Idx)
79447  );
79448 If(l_balance_type_code = 'A') THEN
79449   l_actual_gain_loss_ref := l_gain_or_loss_ref;
79450 END IF;
79451 
79452 --
79453 
79454 
79455 --
79456 AcctLineType_39 (
79457  p_application_id  => p_application_id
79458  ,p_event_id     => l_event_id
79459  ,p_calculate_acctd_flag => l_calculate_acctd_flag
79460  ,p_calculate_g_l_flag => l_calculate_g_l_flag
79461  ,p_actual_flag => l_actual_flag
79462  ,p_balance_type_code => l_balance_type_code
79463  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
79464  
79465  , p_source_3 => l_array_source_3(Idx)
79466  , p_source_4 => l_array_source_4(Idx)
79467  , p_source_5 => l_array_source_5(Idx)
79468  , p_source_7 => l_array_source_7(Idx)
79469  , p_source_8 => l_array_source_8(Idx)
79470  , p_source_23 => l_array_source_23(Idx)
79471  , p_source_24 => l_array_source_24(Idx)
79472  , p_source_26 => l_array_source_26(Idx)
79473  , p_source_28 => l_array_source_28(Idx)
79474  , p_source_29 => l_array_source_29(Idx)
79475  , p_source_30 => l_array_source_30(Idx)
79476  , p_source_31 => l_array_source_31(Idx)
79477  , p_source_32 => l_array_source_32(Idx)
79478  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
79479  , p_source_34 => l_array_source_34(Idx)
79483  , p_source_41 => l_array_source_41(Idx)
79480  , p_source_35 => l_array_source_35(Idx)
79481  , p_source_35_meaning => l_array_source_35_meaning(Idx)
79482  , p_source_36 => l_array_source_36(Idx)
79484  , p_source_44 => l_array_source_44(Idx)
79485  , p_source_52 => l_array_source_52(Idx)
79486  , p_source_53 => l_array_source_53(Idx)
79487  , p_source_54 => l_array_source_54(Idx)
79488  , p_source_55 => l_array_source_55(Idx)
79489  , p_source_56 => l_array_source_56(Idx)
79490  , p_source_57 => l_array_source_57(Idx)
79491  , p_source_58 => l_array_source_58(Idx)
79492  , p_source_59 => l_array_source_59(Idx)
79493  , p_source_60 => l_array_source_60(Idx)
79494  , p_source_61 => l_array_source_61(Idx)
79495  , p_source_62 => l_array_source_62(Idx)
79496  , p_source_63 => l_array_source_63(Idx)
79497  );
79498 If(l_balance_type_code = 'A') THEN
79499   l_actual_gain_loss_ref := l_gain_or_loss_ref;
79500 END IF;
79501 
79502 --
79503 
79504 
79505 --
79506 AcctLineType_40 (
79507  p_application_id  => p_application_id
79508  ,p_event_id     => l_event_id
79509  ,p_calculate_acctd_flag => l_calculate_acctd_flag
79510  ,p_calculate_g_l_flag => l_calculate_g_l_flag
79511  ,p_actual_flag => l_actual_flag
79512  ,p_balance_type_code => l_balance_type_code
79513  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
79514  
79515  , p_source_3 => l_array_source_3(Idx)
79516  , p_source_4 => l_array_source_4(Idx)
79517  , p_source_5 => l_array_source_5(Idx)
79518  , p_source_6 => l_array_source_6(Idx)
79519  , p_source_7 => l_array_source_7(Idx)
79520  , p_source_23 => l_array_source_23(Idx)
79521  , p_source_24 => l_array_source_24(Idx)
79522  , p_source_26 => l_array_source_26(Idx)
79523  , p_source_28 => l_array_source_28(Idx)
79524  , p_source_29 => l_array_source_29(Idx)
79525  , p_source_30 => l_array_source_30(Idx)
79526  , p_source_31 => l_array_source_31(Idx)
79527  , p_source_32 => l_array_source_32(Idx)
79528  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
79529  , p_source_34 => l_array_source_34(Idx)
79530  , p_source_35 => l_array_source_35(Idx)
79531  , p_source_35_meaning => l_array_source_35_meaning(Idx)
79532  , p_source_36 => l_array_source_36(Idx)
79533  , p_source_41 => l_array_source_41(Idx)
79534  , p_source_44 => l_array_source_44(Idx)
79535  , p_source_52 => l_array_source_52(Idx)
79536  , p_source_53 => l_array_source_53(Idx)
79537  , p_source_54 => l_array_source_54(Idx)
79538  , p_source_55 => l_array_source_55(Idx)
79539  , p_source_56 => l_array_source_56(Idx)
79540  , p_source_57 => l_array_source_57(Idx)
79541  , p_source_58 => l_array_source_58(Idx)
79542  , p_source_59 => l_array_source_59(Idx)
79543  , p_source_60 => l_array_source_60(Idx)
79544  , p_source_61 => l_array_source_61(Idx)
79545  , p_source_62 => l_array_source_62(Idx)
79546  , p_source_63 => l_array_source_63(Idx)
79547  );
79548 If(l_balance_type_code = 'A') THEN
79549   l_actual_gain_loss_ref := l_gain_or_loss_ref;
79550 END IF;
79551 
79552 --
79553 
79554       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
79555       -- or secondary ledger that has different currency with primary
79556       -- or alc that is calculated by sla
79557       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
79558             (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'))
79559 
79560 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
79561 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
79562           AND (l_actual_flag = 'A')) THEN
79563         XLA_AE_LINES_PKG.CreateGainOrLossLines(
79564           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
79565          ,p_application_id   => p_application_id
79566          ,p_amb_context_code => 'DEFAULT'
79567          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
79568          ,p_event_class_code => C_EVENT_CLASS_CODE
79569          ,p_event_type_code  => C_EVENT_TYPE_CODE
79570          
79571          ,p_gain_ccid        => -1
79572          ,p_loss_ccid        => -1
79573 
79574          ,p_actual_flag      => l_actual_flag
79575          ,p_enc_flag         => null
79576          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
79577          ,p_enc_g_l_ref      => null
79578          );
79579       END IF;
79580    END IF;
79581 END IF;
79582 
79583    ELSE
79584       --
79585       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
79586       --
79587       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79588          trace
79589             (p_msg      => 'Trancaction revesal option is Y'
79590             ,p_level    => C_LEVEL_STATEMENT
79591             ,p_module   => l_log_module);
79592       END IF;
79593    END IF;
79594 
79595 END LOOP;
79596 l_result := XLA_AE_LINES_PKG.InsertLines ;
79597 end loop;
79598 close line_cur;
79599 
79600 
79601 --
79602 -- insert headers into xla_ae_headers_gt table
79603 --
79604 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
79605 
79606 -- insert into errors table here.
79607 
79608 END LOOP;
79609 
79610 --
79611 -- 4865292
79612 --
79613 -- Compare g_hdr_extract_count with event count in
79614 -- CreateHeadersAndLines.
79615 --
79616 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
79617 
79618 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79619    trace (p_msg     => '# rows extracted from header extract objects '
79620                     || ' (running total): '
79621                     || g_hdr_extract_count
79622          ,p_level   => C_LEVEL_STATEMENT
79626 CLOSE header_cur;
79623          ,p_module  => l_log_module);
79624 END IF;
79625 
79627 --
79628 
79629 --
79630 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79631    trace
79632       (p_msg      => 'END of EventClass_151'
79633       ,p_level    => C_LEVEL_PROCEDURE
79634       ,p_module   => l_log_module);
79635 END IF;
79636 --
79637 RETURN l_result;
79638 EXCEPTION
79639 WHEN xla_exceptions_pkg.application_exception THEN
79640    
79641 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
79642 
79643    
79644 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
79645 
79646    RAISE;
79647 WHEN OTHERS THEN
79648    xla_exceptions_pkg.raise_message
79649       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_151');
79650 END EventClass_151;
79651 --
79652 
79653 ---------------------------------------
79654 --
79655 -- PRIVATE PROCEDURE
79656 --         insert_sources_152
79657 --
79658 ----------------------------------------
79659 --
79660 PROCEDURE insert_sources_152(
79661                                 p_target_ledger_id       IN NUMBER
79662                               , p_language               IN VARCHAR2
79663                               , p_sla_ledger_id          IN NUMBER
79664                               , p_pad_start_date         IN DATE
79665                               , p_pad_end_date           IN DATE
79666                          )
79667 IS
79668 
79669 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ALL';
79670 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BURDEN_COST';
79671 p_apps_owner                   VARCHAR2(30);
79672 l_log_module                   VARCHAR2(240);
79673 BEGIN
79674 IF g_log_enabled THEN
79675       l_log_module := C_DEFAULT_MODULE||'.insert_sources_152';
79676 END IF;
79677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79678 
79679       trace
79680          (p_msg      => 'BEGIN of insert_sources_152'
79681          ,p_level    => C_LEVEL_PROCEDURE
79682          ,p_module   => l_log_module);
79683 
79684 END IF;
79685 
79686 -- select APPS owner
79687 SELECT oracle_username
79688   INTO p_apps_owner
79689   FROM fnd_oracle_userid
79690  WHERE read_only_flag = 'U'
79691 ;
79692 
79693 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79694       trace
79695          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
79696                         ' - p_language = '||p_language||
79697                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
79698                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
79699                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
79700                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
79701          ,p_level    => C_LEVEL_STATEMENT
79702          ,p_module   => l_log_module);
79703 END IF;
79704 
79705 
79706 --
79707 INSERT INTO xla_diag_sources --hdr2
79708 (
79709         event_id
79710       , ledger_id
79711       , sla_ledger_id
79712       , description_language
79713       , object_name
79714       , object_type_code
79715       , line_number
79716       , source_application_id
79717       , source_type_code
79718       , source_code
79719       , source_value
79720       , source_meaning
79721       , created_by
79722       , creation_date
79723       , last_update_date
79724       , last_updated_by
79725       , last_update_login
79726       , program_update_date
79727       , program_application_id
79728       , program_id
79729       , request_id
79730 )
79731 SELECT
79732         event_id
79733       , p_target_ledger_id
79734       , p_sla_ledger_id
79735       , p_language
79736       , object_name
79737       , object_type_code
79738       , line_number
79739       , source_application_id
79740       , source_type_code
79741       , source_code
79742       , SUBSTR(source_value ,1,1996)
79743       , SUBSTR(source_meaning ,1,200)
79744       , xla_environment_pkg.g_Usr_Id
79745       , TRUNC(SYSDATE)
79746       , TRUNC(SYSDATE)
79747       , xla_environment_pkg.g_Usr_Id
79748       , xla_environment_pkg.g_Login_Id
79749       , TRUNC(SYSDATE)
79750       , xla_environment_pkg.g_Prog_Appl_Id
79751       , xla_environment_pkg.g_Prog_Id
79752       , xla_environment_pkg.g_Req_Id
79753   FROM (
79754        SELECT xet.event_id                  event_id
79755             , 0                          line_number
79756             , CASE r
79757                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
79758                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
79759                 
79760                ELSE null
79761               END                           object_name
79762             , CASE r
79763                 WHEN 1 THEN 'HEADER' 
79764                 WHEN 2 THEN 'HEADER' 
79765                 
79766                 ELSE null
79767               END                           object_type_code
79768             , CASE r
79769                 WHEN 1 THEN '275' 
79770                 WHEN 2 THEN '275' 
79771                 
79772                 ELSE null
79773               END                           source_application_id
79774             , 'S'             source_type_code
79775             , CASE r
79776                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
79777                 WHEN 2 THEN 'GL_DATE' 
79778                 
79779                 ELSE null
79780               END                           source_code
79781             , CASE r
79782                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
79783                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
79784                 
79785                 ELSE null
79789       , PA_XLA_EXP_HEADER_V  h2
79786               END                           source_value
79787             , null              source_meaning
79788          FROM xla_events_gt     xet  
79790              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
79791          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79792            AND xet.event_class_code = C_EVENT_CLASS_CODE
79793               AND h2.event_id = xet.event_id
79794 
79795 )
79796 ;
79797 --
79798 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79799 
79800       trace
79801          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
79802          ,p_level    => C_LEVEL_STATEMENT
79803          ,p_module   => l_log_module);
79804 
79805 END IF;
79806 --
79807 
79808 
79809 
79810 --
79811 INSERT INTO xla_diag_sources  --line2
79812 (
79813         event_id
79814       , ledger_id
79815       , sla_ledger_id
79816       , description_language
79817       , object_name
79818       , object_type_code
79819       , line_number
79820       , source_application_id
79821       , source_type_code
79822       , source_code
79823       , source_value
79824       , source_meaning
79825       , created_by
79826       , creation_date
79827       , last_update_date
79828       , last_updated_by
79829       , last_update_login
79830       , program_update_date
79831       , program_application_id
79832       , program_id
79833       , request_id
79834 )
79835 SELECT  event_id
79836       , p_target_ledger_id
79837       , p_sla_ledger_id
79838       , p_language
79839       , object_name
79840       , object_type_code
79841       , line_number
79842       , source_application_id
79843       , source_type_code
79844       , source_code
79845       , SUBSTR(source_value,1,1996)
79846       , SUBSTR(source_meaning ,1,200)
79847       , xla_environment_pkg.g_Usr_Id
79848       , TRUNC(SYSDATE)
79849       , TRUNC(SYSDATE)
79850       , xla_environment_pkg.g_Usr_Id
79851       , xla_environment_pkg.g_Login_Id
79852       , TRUNC(SYSDATE)
79853       , xla_environment_pkg.g_Prog_Appl_Id
79854       , xla_environment_pkg.g_Prog_Id
79855       , xla_environment_pkg.g_Req_Id
79856   FROM (
79857        SELECT xet.event_id                  event_id
79858             , l1.line_number                 line_number
79859             , CASE r
79860                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
79861                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
79862                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
79863                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
79864                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
79865                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
79866                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
79867                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
79868                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
79869                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
79870                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
79871                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
79872                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
79873                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
79874                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
79875                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
79876                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
79877                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
79878                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
79879                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
79880                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
79881                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
79882                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
79883                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
79884                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
79885                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
79886                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
79887                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
79888                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
79889                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
79890                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
79891                 
79892                ELSE null
79893               END                           object_name
79894             , CASE r
79895                 WHEN 1 THEN 'LINE' 
79896                 WHEN 2 THEN 'LINE' 
79897                 WHEN 3 THEN 'LINE' 
79898                 WHEN 4 THEN 'LINE' 
79899                 WHEN 5 THEN 'LINE' 
79900                 WHEN 6 THEN 'LINE' 
79901                 WHEN 7 THEN 'LINE' 
79902                 WHEN 8 THEN 'LINE' 
79903                 WHEN 9 THEN 'LINE' 
79904                 WHEN 10 THEN 'LINE' 
79905                 WHEN 11 THEN 'LINE' 
79906                 WHEN 12 THEN 'LINE' 
79907                 WHEN 13 THEN 'LINE' 
79908                 WHEN 14 THEN 'LINE' 
79909                 WHEN 15 THEN 'LINE' 
79910                 WHEN 16 THEN 'LINE' 
79911                 WHEN 17 THEN 'LINE' 
79912                 WHEN 18 THEN 'LINE' 
79913                 WHEN 19 THEN 'LINE' 
79914                 WHEN 20 THEN 'LINE' 
79915                 WHEN 21 THEN 'LINE' 
79916                 WHEN 22 THEN 'LINE' 
79917                 WHEN 23 THEN 'LINE' 
79918                 WHEN 24 THEN 'LINE' 
79919                 WHEN 25 THEN 'LINE' 
79920                 WHEN 26 THEN 'LINE' 
79921                 WHEN 27 THEN 'LINE' 
79922                 WHEN 28 THEN 'LINE' 
79923                 WHEN 29 THEN 'LINE' 
79924                 WHEN 30 THEN 'LINE' 
79925                 WHEN 31 THEN 'LINE' 
79926                 
79927                 ELSE null
79928               END                           object_type_code
79929             , CASE r
79930                 WHEN 1 THEN '275' 
79934                 WHEN 5 THEN '275' 
79931                 WHEN 2 THEN '275' 
79932                 WHEN 3 THEN '275' 
79933                 WHEN 4 THEN '275' 
79935                 WHEN 6 THEN '275' 
79936                 WHEN 7 THEN '275' 
79937                 WHEN 8 THEN '275' 
79938                 WHEN 9 THEN '275' 
79939                 WHEN 10 THEN '275' 
79940                 WHEN 11 THEN '275' 
79941                 WHEN 12 THEN '275' 
79942                 WHEN 13 THEN '275' 
79943                 WHEN 14 THEN '275' 
79944                 WHEN 15 THEN '275' 
79945                 WHEN 16 THEN '275' 
79946                 WHEN 17 THEN '275' 
79947                 WHEN 18 THEN '275' 
79948                 WHEN 19 THEN '275' 
79949                 WHEN 20 THEN '275' 
79950                 WHEN 21 THEN '275' 
79951                 WHEN 22 THEN '275' 
79952                 WHEN 23 THEN '275' 
79953                 WHEN 24 THEN '275' 
79954                 WHEN 25 THEN '275' 
79955                 WHEN 26 THEN '275' 
79956                 WHEN 27 THEN '275' 
79957                 WHEN 28 THEN '275' 
79958                 WHEN 29 THEN '275' 
79959                 WHEN 30 THEN '275' 
79960                 WHEN 31 THEN '275' 
79961                 
79962                 ELSE null
79963               END                           source_application_id
79964             , 'S'             source_type_code
79965             , CASE r
79966                 WHEN 1 THEN 'BUDGET_CCID' 
79967                 WHEN 2 THEN 'COST_CCID' 
79968                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
79969                 WHEN 4 THEN 'ADJ_COST_CCID' 
79970                 WHEN 5 THEN 'COST_CLEARING_CCID' 
79971                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
79972                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
79973                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
79974                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
79975                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
79976                 WHEN 11 THEN 'EXCHANGE_RATE' 
79977                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
79978                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
79979                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
79980                 WHEN 15 THEN 'LINE_NUMBER' 
79981                 WHEN 16 THEN 'LINE_TYPE' 
79982                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
79983                 WHEN 18 THEN 'ENC_UPG_DR_ACCT_CLASS' 
79984                 WHEN 19 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
79985                 WHEN 20 THEN 'ENTERED_BURDENED_COST' 
79986                 WHEN 21 THEN 'ACCT_BURDENED_COST' 
79987                 WHEN 22 THEN 'ENCUMBRANCE_AMOUNT' 
79988                 WHEN 23 THEN 'PA_APPLICATION_ID' 
79989                 WHEN 24 THEN 'PA_DISTRIBUTION_TYPE' 
79990                 WHEN 25 THEN 'PA_ENTITY_CODE' 
79991                 WHEN 26 THEN 'PA_FIRST_DIST_ID' 
79992                 WHEN 27 THEN 'PA_FIRST_SYS_TRANS_ID' 
79993                 WHEN 28 THEN 'PA_SECOND_DIST_ID' 
79994                 WHEN 29 THEN 'ENC_UPG_CR_ACCT_CLASS' 
79995                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
79996                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
79997                 
79998                 ELSE null
79999               END                           source_code
80000             , CASE r
80001                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
80002                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
80003                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
80004                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
80005                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
80006                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
80007                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
80008                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
80009                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
80010                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
80011                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
80012                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
80013                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
80014                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
80015                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
80016                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
80017                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
80018                 WHEN 18 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
80019                 WHEN 19 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
80020                 WHEN 20 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
80021                 WHEN 21 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
80022                 WHEN 22 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
80023                 WHEN 23 THEN TO_CHAR(l1.PA_APPLICATION_ID)
80024                 WHEN 24 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
80025                 WHEN 25 THEN TO_CHAR(l1.PA_ENTITY_CODE)
80026                 WHEN 26 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
80027                 WHEN 27 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
80028                 WHEN 28 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
80029                 WHEN 29 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
80030                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
80031                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
80032                 
80033                 ELSE null
80034               END                           source_value
80035             , CASE r
80036                 WHEN 3 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
80037                           103371
80038                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
80039                          ,'ALLOW_OVERRIDE_CCID_FLAG'
80040                          ,'S'
80041                          ,275)
80042                 WHEN 16 THEN fvl35.meaning
80043                 
80044                 ELSE null
80045               END               source_meaning
80046          FROM  xla_events_gt     xet  
80047         , PA_XLA_CDL_LINES_V  l1
80051           AND xet.event_class_code = C_EVENT_CLASS_CODE
80048   , fnd_lookup_values    fvl35
80049             , (select rownum r from all_objects where rownum <= 31 and owner = p_apps_owner)
80050         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
80052             AND l1.event_id          = xet.event_id
80053    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
80054   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
80055   AND fvl35.view_application_id(+) = 275
80056   AND fvl35.language(+)            = USERENV('LANG')
80057   
80058 )
80059 ;
80060 --
80061 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80062 
80063       trace
80064          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
80065          ,p_level    => C_LEVEL_STATEMENT
80066          ,p_module   => l_log_module);
80067 
80068 END IF;
80069 
80070 
80071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80072       trace
80073          (p_msg      => 'END of insert_sources_152'
80074          ,p_level    => C_LEVEL_PROCEDURE
80075          ,p_module   => l_log_module);
80076 END IF;
80077 EXCEPTION
80078   WHEN xla_exceptions_pkg.application_exception THEN
80079       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
80080             trace
80081                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
80082                ,p_level    => C_LEVEL_EXCEPTION
80083                ,p_module   => l_log_module);
80084       END IF;
80085       RAISE;
80086   WHEN OTHERS THEN
80087       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
80088             trace
80089                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
80090                ,p_level    => C_LEVEL_EXCEPTION
80091                ,p_module   => l_log_module);
80092        END IF;
80093        xla_exceptions_pkg.raise_message
80094            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_152');
80095 END insert_sources_152;
80096 --
80097 
80098 ---------------------------------------
80099 --
80100 -- PRIVATE FUNCTION
80101 --         EventClass_152
80102 --
80103 ----------------------------------------
80104 --
80105 FUNCTION EventClass_152
80106        (p_application_id         IN NUMBER
80107        ,p_base_ledger_id         IN NUMBER
80108        ,p_target_ledger_id       IN NUMBER
80109        ,p_language               IN VARCHAR2
80110        ,p_currency_code          IN VARCHAR2
80111        ,p_sla_ledger_id          IN NUMBER
80112        ,p_pad_start_date         IN DATE
80113        ,p_pad_end_date           IN DATE
80114        ,p_primary_ledger_id      IN NUMBER)
80115 RETURN BOOLEAN IS
80116 --
80117 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BURDEN_COST_ALL';
80118 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BURDEN_COST';
80119 
80120 l_calculate_acctd_flag   VARCHAR2(1) :='N';
80121 l_calculate_g_l_flag     VARCHAR2(1) :='N';
80122 --
80123 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80124 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80125 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80126 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80127 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80128 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80129 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80130 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80131 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80132 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80133 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80134 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80135 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80136 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80137 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80138 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80139 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80140 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80141 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80142 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80143 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80144 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80145 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
80146 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80147 
80148 l_event_id                             NUMBER;
80149 l_previous_event_id                    NUMBER;
80150 l_first_event_id                       NUMBER;
80151 l_last_event_id                        NUMBER;
80152 
80153 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
80154 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
80155 --
80156 --
80157 l_result                    BOOLEAN := TRUE;
80158 l_rows                      NUMBER  := 1000;
80159 l_event_type_name           VARCHAR2(80) := 'All';
80160 l_event_class_name          VARCHAR2(80) := 'Burden Cost';
80161 l_description               VARCHAR2(4000);
80162 l_transaction_reversal      NUMBER;
80163 l_ae_header_id              NUMBER;
80164 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
80165 l_log_module                VARCHAR2(240);
80166 --
80167 l_acct_reversal_source      VARCHAR2(30);
80168 l_trx_reversal_source       VARCHAR2(30);
80169 
80170 l_continue_with_lines       BOOLEAN := TRUE;
80171 --
80175 
80172 l_acc_rev_gl_date_source    DATE;                      -- 4262811
80173 --
80174 type t_array_event_id is table of number index by binary_integer;
80176 l_rec_array_event                    t_rec_array_event;
80177 l_null_rec_array_event               t_rec_array_event;
80178 l_array_ae_header_id                 xla_number_array_type;
80179 l_actual_flag                        VARCHAR2(1) := NULL;
80180 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
80181 l_balance_type_code                  VARCHAR2(1) :=NULL;
80182 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
80183 
80184 --
80185 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
80186 --
80187 
80188 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
80189 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
80190 
80191 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
80192 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
80193 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
80194 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
80195 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
80196 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
80197 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
80198 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
80199 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
80200 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
80201 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
80202 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
80203 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
80204 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
80205 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
80206 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
80207 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
80208 TYPE t_array_source_41 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
80209 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
80210 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
80211 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
80212 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
80213 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
80214 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
80215 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
80216 TYPE t_array_source_58 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
80217 TYPE t_array_source_59 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
80218 TYPE t_array_source_60 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
80219 TYPE t_array_source_61 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
80220 TYPE t_array_source_62 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
80221 TYPE t_array_source_63 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
80222 
80223 l_array_source_33              t_array_source_33;
80224 l_array_source_75              t_array_source_75;
80225 
80226 l_array_source_3      t_array_source_3;
80227 l_array_source_4      t_array_source_4;
80228 l_array_source_5      t_array_source_5;
80229 l_array_source_6      t_array_source_6;
80230 l_array_source_7      t_array_source_7;
80231 l_array_source_8      t_array_source_8;
80232 l_array_source_23      t_array_source_23;
80233 l_array_source_24      t_array_source_24;
80234 l_array_source_26      t_array_source_26;
80235 l_array_source_28      t_array_source_28;
80236 l_array_source_29      t_array_source_29;
80237 l_array_source_30      t_array_source_30;
80238 l_array_source_31      t_array_source_31;
80239 l_array_source_32      t_array_source_32;
80240 l_array_source_34      t_array_source_34;
80241 l_array_source_35      t_array_source_35;
80242 l_array_source_35_meaning      t_array_lookup_meaning;
80243 l_array_source_36      t_array_source_36;
80244 l_array_source_41      t_array_source_41;
80245 l_array_source_44      t_array_source_44;
80246 l_array_source_52      t_array_source_52;
80247 l_array_source_53      t_array_source_53;
80248 l_array_source_54      t_array_source_54;
80249 l_array_source_55      t_array_source_55;
80250 l_array_source_56      t_array_source_56;
80251 l_array_source_57      t_array_source_57;
80252 l_array_source_58      t_array_source_58;
80253 l_array_source_59      t_array_source_59;
80254 l_array_source_60      t_array_source_60;
80255 l_array_source_61      t_array_source_61;
80256 l_array_source_62      t_array_source_62;
80257 l_array_source_63      t_array_source_63;
80258 
80259 --
80260 CURSOR header_cur
80261 IS
80262 SELECT /*+ leading(xet) cardinality(xet,1) */
80263 -- Event Class Code: BURDEN_COST
80264     xet.entity_id
80265    ,xet.legal_entity_id
80266    ,xet.entity_code
80267    ,xet.transaction_number
80268    ,xet.event_id
80269    ,xet.event_class_code
80273    ,xet.transaction_date
80270    ,xet.event_type_code
80271    ,xet.event_number
80272    ,xet.event_date
80274    ,xet.reference_num_1
80275    ,xet.reference_num_2
80276    ,xet.reference_num_3
80277    ,xet.reference_num_4
80278    ,xet.reference_char_1
80279    ,xet.reference_char_2
80280    ,xet.reference_char_3
80281    ,xet.reference_char_4
80282    ,xet.reference_date_1
80283    ,xet.reference_date_2
80284    ,xet.reference_date_3
80285    ,xet.reference_date_4
80286    ,xet.event_created_by
80287    ,xet.budgetary_control_flag 
80288   , h2.EXPENDITURE_ITEM_ID    source_33
80289   , h2.GL_DATE    source_75
80290   FROM xla_events_gt     xet 
80291   , PA_XLA_EXP_HEADER_V  h2
80292  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
80293    and xet.event_class_code = C_EVENT_CLASS_CODE
80294    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
80295 
80296  ORDER BY event_id
80297 ;
80298 
80299 
80300 --
80301 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
80302 IS
80303 SELECT  /*+ leading(xet) cardinality(xet,1) */
80304 -- Event Class Code: BURDEN_COST
80305     xet.entity_id
80306    ,xet.legal_entity_id
80307    ,xet.entity_code
80308    ,xet.transaction_number
80309    ,xet.event_id
80310    ,xet.event_class_code
80311    ,xet.event_type_code
80312    ,xet.event_number
80313    ,xet.event_date
80314    ,xet.transaction_date
80315    ,xet.reference_num_1
80316    ,xet.reference_num_2
80317    ,xet.reference_num_3
80318    ,xet.reference_num_4
80319    ,xet.reference_char_1
80320    ,xet.reference_char_2
80321    ,xet.reference_char_3
80322    ,xet.reference_char_4
80323    ,xet.reference_date_1
80324    ,xet.reference_date_2
80325    ,xet.reference_date_3
80326    ,xet.reference_date_4
80327    ,xet.event_created_by
80328    ,xet.budgetary_control_flag
80329  , l1.LINE_NUMBER  
80330   , l1.BUDGET_CCID    source_3
80331   , l1.COST_CCID    source_4
80332   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
80333   , l1.ADJ_COST_CCID    source_6
80334   , l1.COST_CLEARING_CCID    source_7
80335   , l1.ADJ_COST_CLEARING_CCID    source_8
80336   , l1.REVERSING_LINE_FLAG    source_23
80337   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
80338   , l1.ENTERED_CURRENCY_CODE    source_26
80339   , l1.EXCHANGE_RATE_DATE    source_28
80340   , l1.EXCHANGE_RATE    source_29
80341   , l1.EXCHANGE_RATE_TYPE    source_30
80342   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
80343   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
80344   , l1.LINE_NUMBER    source_34
80345   , l1.LINE_TYPE    source_35
80346   , fvl35.meaning   source_35_meaning
80347   , l1.LINE_NUM_REVERSED    source_36
80348   , l1.ENC_UPG_DR_ACCT_CLASS    source_41
80349   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_44
80350   , l1.ENTERED_BURDENED_COST    source_52
80351   , l1.ACCT_BURDENED_COST    source_53
80352   , l1.ENCUMBRANCE_AMOUNT    source_54
80353   , l1.PA_APPLICATION_ID    source_55
80354   , l1.PA_DISTRIBUTION_TYPE    source_56
80355   , l1.PA_ENTITY_CODE    source_57
80356   , l1.PA_FIRST_DIST_ID    source_58
80357   , l1.PA_FIRST_SYS_TRANS_ID    source_59
80358   , l1.PA_SECOND_DIST_ID    source_60
80359   , l1.ENC_UPG_CR_ACCT_CLASS    source_61
80360   , l1.ENCUMBRANCE_TYPE_ID    source_62
80361   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_63
80362   FROM xla_events_gt     xet 
80363   , PA_XLA_CDL_LINES_V  l1
80364   , fnd_lookup_values    fvl35
80365  WHERE xet.event_id between x_first_event_id and x_last_event_id
80366    and xet.event_date between p_pad_start_date and p_pad_end_date
80367    and xet.event_class_code = C_EVENT_CLASS_CODE
80368    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
80369    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
80370   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
80371   AND fvl35.view_application_id(+) = 275
80372   AND fvl35.language(+)            = USERENV('LANG')
80373   ;
80374 
80375 --
80376 BEGIN
80377 IF g_log_enabled THEN
80378    l_log_module := C_DEFAULT_MODULE||'.EventClass_152';
80379 END IF;
80380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80381    trace
80382       (p_msg      => 'BEGIN of EventClass_152'
80383       ,p_level    => C_LEVEL_PROCEDURE
80384       ,p_module   => l_log_module);
80385 END IF;
80386 
80387 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80388    trace
80389       (p_msg      => 'p_application_id = '||p_application_id||
80390                      ' - p_base_ledger_id = '||p_base_ledger_id||
80391                      ' - p_target_ledger_id  = '||p_target_ledger_id||
80392                      ' - p_language = '||p_language||
80393                      ' - p_currency_code = '||p_currency_code||
80394                      ' - p_sla_ledger_id = '||p_sla_ledger_id
80395       ,p_level    => C_LEVEL_STATEMENT
80396       ,p_module   => l_log_module);
80397 END IF;
80398 --
80399 -- initialze arrays
80400 --
80401 g_array_event.DELETE;
80402 l_rec_array_event := l_null_rec_array_event;
80403 --
80404 --------------------------------------
80405 -- 4262811 Initialze MPA Line Number
80406 --------------------------------------
80407 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
80408 
80409 --
80410 
80411 --
80412 OPEN header_cur;
80413 --
80414 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80415    trace
80416    (p_msg      => 'SQL - FETCH header_cur'
80417    ,p_level    => C_LEVEL_STATEMENT
80418    ,p_module   => l_log_module);
80419 END IF;
80420 --
80421 LOOP
80422 FETCH header_cur BULK COLLECT INTO
80423         l_array_entity_id
80424       , l_array_legal_entity_id
80425       , l_array_entity_code
80426       , l_array_transaction_num
80427       , l_array_event_id
80431       , l_array_event_date
80428       , l_array_class_code
80429       , l_array_event_type
80430       , l_array_event_number
80432       , l_array_transaction_date
80433       , l_array_reference_num_1
80434       , l_array_reference_num_2
80435       , l_array_reference_num_3
80436       , l_array_reference_num_4
80437       , l_array_reference_char_1
80438       , l_array_reference_char_2
80439       , l_array_reference_char_3
80440       , l_array_reference_char_4
80441       , l_array_reference_date_1
80442       , l_array_reference_date_2
80443       , l_array_reference_date_3
80444       , l_array_reference_date_4
80445       , l_array_event_created_by
80446       , l_array_budgetary_control_flag 
80447       , l_array_source_33
80448       , l_array_source_75
80449       LIMIT l_rows;
80450 --
80451 IF (C_LEVEL_EVENT >= g_log_level) THEN
80452    trace
80453    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
80454    ,p_level    => C_LEVEL_EVENT
80455    ,p_module   => l_log_module);
80456 END IF;
80457 --
80458 EXIT WHEN l_array_entity_id.COUNT = 0;
80459 
80460 -- initialize arrays
80461 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
80462 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
80463 
80464 --
80465 -- Bug 4458708
80466 --
80467 XLA_AE_LINES_PKG.g_LineNumber := 0;
80468 
80469 
80470 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
80471 g_last_hdr_idx := l_array_event_id.LAST;
80472 --
80473 -- loop for the headers. Each iteration is for each header extract row
80474 -- fetched in header cursor
80475 --
80476 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
80477 
80478 --
80479 -- set event info as cache for other routines to refer event attributes
80480 --
80481 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80482    (p_application_id           => p_application_id
80483    ,p_primary_ledger_id        => p_primary_ledger_id
80484    ,p_base_ledger_id           => p_base_ledger_id
80485    ,p_target_ledger_id         => p_target_ledger_id
80486    ,p_entity_id                => l_array_entity_id(hdr_idx)
80487    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
80488    ,p_entity_code              => l_array_entity_code(hdr_idx)
80489    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
80490    ,p_event_id                 => l_array_event_id(hdr_idx)
80491    ,p_event_class_code         => l_array_class_code(hdr_idx)
80492    ,p_event_type_code          => l_array_event_type(hdr_idx)
80493    ,p_event_number             => l_array_event_number(hdr_idx)
80494    ,p_event_date               => l_array_event_date(hdr_idx)
80495    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
80496    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
80497    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
80498    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
80499    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
80500    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
80501    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
80502    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
80503    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
80504    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
80505    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
80506    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
80507    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
80508    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
80509    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
80510 
80511 --
80512 -- set the status of entry to C_VALID (0)
80513 --
80514 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80515 
80516 --
80517 -- initialize a row for ae header
80518 --
80519 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
80520 
80521 l_event_id := l_array_event_id(hdr_idx);
80522 
80523 --
80524 -- storing the hdr_idx for event. May be used by line cursor.
80525 --
80526 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
80527 
80528 --
80529 -- store sources from header extract. This can be improved to
80530 -- store only those sources from header extract that may be used in lines
80531 --
80532 
80533 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
80534 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
80535 
80536 --
80537 -- initilaize the status of ae headers for diffrent balance types
80538 -- the status is initialised to C_NOT_CREATED (2)
80539 --
80540 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80541 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80542 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80543 
80544 --
80545 -- call api to validate and store accounting attributes for header
80546 --
80547 
80548 ------------------------------------------------------------
80549 -- Accrual Reversal : to get date for Standard Source (NONE)
80550 ------------------------------------------------------------
80551 l_acc_rev_gl_date_source := NULL;
80552 
80553      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
80554       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
80555 
80556 
80557 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
80558 
80559 XLA_AE_HEADER_PKG.SetJeCategoryName;
80560 
80564 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
80561 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
80562 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
80563 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
80565 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
80566 
80567 
80568 -- No header level analytical criteria
80569 
80570 --
80571 --accounting attribute enhancement, bug 3612931
80572 --
80573 l_trx_reversal_source := SUBSTR(NULL, 1,30);
80574 
80575 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
80576    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80577 
80578    xla_accounting_err_pkg.build_message
80579       (p_appli_s_name            => 'XLA'
80580       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
80581       ,p_token_1                 => 'ACCT_ATTR_NAME'
80582       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
80583       ,p_token_2                 => 'PRODUCT_NAME'
80584       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80585       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80586       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80587       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80588 
80589 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
80590    --
80591    -- following sets the accounting attributes needed to reverse
80592    -- accounting for a distributeion
80593    --
80594    xla_ae_lines_pkg.SetTrxReversalAttrs
80595       (p_event_id              => l_event_id
80596       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
80597       ,p_trx_reversal_source   => l_trx_reversal_source);
80598 
80599 END IF;
80600 
80601 
80602 ----------------------------------------------------------------
80603 -- 4262811 -  update the header statuses to invalid in need be
80604 ----------------------------------------------------------------
80605 --
80606 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
80607 
80608 
80609   -----------------------------------------------
80610   -- No accrual reversal for the event class/type
80611   -----------------------------------------------
80612 ----------------------------------------------------------------
80613 
80614 --
80615 -- this ends the header loop iteration for one bulk fetch
80616 --
80617 END LOOP;
80618 
80619 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
80620 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
80621 
80622 --
80623 -- insert dummy rows into lines gt table that were created due to
80624 -- transaction reversals
80625 --
80626 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
80627    l_result := XLA_AE_LINES_PKG.InsertLines;
80628 END IF;
80629 
80630 --
80631 -- reset the temp_line_num for each set of events fetched from header
80632 -- cursor rather than doing it for each new event in line cursor
80633 -- Bug 3939231
80634 --
80635 xla_ae_lines_pkg.g_temp_line_num := 0;
80636 
80637 
80638 
80639 --
80640 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
80641 --
80642 --
80643 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80644 
80645       trace
80646          (p_msg      => 'SQL - FETCH line_cur'
80647          ,p_level    => C_LEVEL_STATEMENT
80648          ,p_module   => l_log_module);
80649 
80650 END IF;
80651 --
80652 --
80653 LOOP
80654   --
80655   FETCH line_cur BULK COLLECT INTO
80656         l_array_entity_id
80657       , l_array_legal_entity_id
80658       , l_array_entity_code
80659       , l_array_transaction_num
80660       , l_array_event_id
80661       , l_array_class_code
80662       , l_array_event_type
80663       , l_array_event_number
80664       , l_array_event_date
80665       , l_array_transaction_date
80666       , l_array_reference_num_1
80667       , l_array_reference_num_2
80668       , l_array_reference_num_3
80669       , l_array_reference_num_4
80670       , l_array_reference_char_1
80671       , l_array_reference_char_2
80672       , l_array_reference_char_3
80673       , l_array_reference_char_4
80674       , l_array_reference_date_1
80675       , l_array_reference_date_2
80676       , l_array_reference_date_3
80677       , l_array_reference_date_4
80678       , l_array_event_created_by
80679       , l_array_budgetary_control_flag
80680       , l_array_extract_line_num 
80681       , l_array_source_3
80682       , l_array_source_4
80683       , l_array_source_5
80684       , l_array_source_6
80685       , l_array_source_7
80686       , l_array_source_8
80687       , l_array_source_23
80688       , l_array_source_24
80689       , l_array_source_26
80690       , l_array_source_28
80691       , l_array_source_29
80692       , l_array_source_30
80693       , l_array_source_31
80694       , l_array_source_32
80695       , l_array_source_34
80696       , l_array_source_35
80697       , l_array_source_35_meaning
80698       , l_array_source_36
80699       , l_array_source_41
80700       , l_array_source_44
80701       , l_array_source_52
80702       , l_array_source_53
80703       , l_array_source_54
80704       , l_array_source_55
80705       , l_array_source_56
80706       , l_array_source_57
80707       , l_array_source_58
80708       , l_array_source_59
80709       , l_array_source_60
80713       LIMIT l_rows;
80710       , l_array_source_61
80711       , l_array_source_62
80712       , l_array_source_63
80714 
80715   --
80716   IF (C_LEVEL_EVENT >= g_log_level) THEN
80717             trace
80718                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
80719                ,p_level    => C_LEVEL_EVENT
80720                ,p_module   => l_log_module);
80721   END IF;
80722   --
80723   EXIT WHEN l_array_entity_id.count = 0;
80724 
80725   XLA_AE_LINES_PKG.g_rec_lines := null;
80726 
80727 --
80728 -- Bug 4458708
80729 --
80730 XLA_AE_LINES_PKG.g_LineNumber := 0;
80731 --
80732 --
80733 
80734 FOR Idx IN 1..l_array_event_id.count LOOP
80735    --
80736    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
80737    --
80738    l_event_id := l_array_event_id(idx);  -- 5648433
80739 
80740    --
80741    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
80742    --
80743 
80744    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
80745              (g_array_event(l_event_id).array_value_num('header_index'))
80746          ,'N'
80747          ) <> 'Y'
80748    THEN
80749       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80750          trace
80751             (p_msg      => 'Trancaction revesal option is not Y '
80752             ,p_level    => C_LEVEL_STATEMENT
80753             ,p_module   => l_log_module);
80754       END IF;
80755 
80756 --
80757 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
80758 --
80759 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80760 --
80761 -- set event info as cache for other routines to refer event attributes
80762 --
80763 
80764 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
80765    l_previous_event_id := l_event_id;
80766 
80767    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80768       (p_application_id           => p_application_id
80769       ,p_primary_ledger_id        => p_primary_ledger_id
80770       ,p_base_ledger_id           => p_base_ledger_id
80771       ,p_target_ledger_id         => p_target_ledger_id
80772       ,p_entity_id                => l_array_entity_id(Idx)
80773       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
80774       ,p_entity_code              => l_array_entity_code(Idx)
80775       ,p_transaction_num          => l_array_transaction_num(Idx)
80776       ,p_event_id                 => l_array_event_id(Idx)
80777       ,p_event_class_code         => l_array_class_code(Idx)
80778       ,p_event_type_code          => l_array_event_type(Idx)
80779       ,p_event_number             => l_array_event_number(Idx)
80780       ,p_event_date               => l_array_event_date(Idx)
80781       ,p_transaction_date         => l_array_transaction_date(Idx)
80782       ,p_reference_num_1          => l_array_reference_num_1(Idx)
80783       ,p_reference_num_2          => l_array_reference_num_2(Idx)
80784       ,p_reference_num_3          => l_array_reference_num_3(Idx)
80785       ,p_reference_num_4          => l_array_reference_num_4(Idx)
80786       ,p_reference_char_1         => l_array_reference_char_1(Idx)
80787       ,p_reference_char_2         => l_array_reference_char_2(Idx)
80788       ,p_reference_char_3         => l_array_reference_char_3(Idx)
80789       ,p_reference_char_4         => l_array_reference_char_4(Idx)
80790       ,p_reference_date_1         => l_array_reference_date_1(Idx)
80791       ,p_reference_date_2         => l_array_reference_date_2(Idx)
80792       ,p_reference_date_3         => l_array_reference_date_3(Idx)
80793       ,p_reference_date_4         => l_array_reference_date_4(Idx)
80794       ,p_event_created_by         => l_array_event_created_by(Idx)
80795       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
80796        --
80797 END IF;
80798 
80799 
80800 
80801 --
80802 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
80803 
80804 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
80805 
80806 IF l_continue_with_lines THEN
80807    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
80808       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80809 
80810       xla_accounting_err_pkg.build_message
80811          (p_appli_s_name            => 'XLA'
80812          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
80813          ,p_token_1                 => 'LINE_NUMBER'
80814          ,p_value_1                 => l_array_extract_line_num(Idx)
80815          ,p_token_2                 => 'PRODUCT_NAME'
80816          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80817          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80818          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80819          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80820 
80821    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
80822       --
80823       -- following sets the accounting attributes needed to reverse
80824       -- accounting for a distributeion
80825       --
80826 
80827       --
80828       -- 5217187
80829       --
80830       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
80831       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
80832                                        g_array_event(l_event_id).array_value_num('header_index'));
80833       --
80834       --
80835 
80836       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
80837       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
80838       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
80842       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
80839       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
80840       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
80841       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
80843       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_52(Idx);
80844       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
80845       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
80846       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
80847       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_53(Idx);
80848       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
80849       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
80850       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
80851       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
80852       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
80853       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
80854       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
80855       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
80856       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
80857       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
80858       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
80859       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_52(Idx);
80860       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
80861       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
80862       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
80863       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_53(Idx);
80864       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
80865       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
80866       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
80867       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
80868       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
80869       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
80870       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
80871       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
80872       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
80873       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
80874       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
80875       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
80876       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
80877       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
80878       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
80879       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_41(Idx);
80880       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
80881       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_3(Idx);
80882       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
80883       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_54(Idx);
80884       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
80885       l_rec_rev_acct_attrs.array_char_value(26)  := l_array_source_26(Idx);
80886       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
80887       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_54(Idx);
80888       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
80889       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_61(Idx);
80890       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
80891       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_3(Idx);
80892       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
80893       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_54(Idx);
80894       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
80895       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_26(Idx);
80896       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
80897       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_54(Idx);
80898       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
80899       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_44(Idx);
80900       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'REVERSED_DISTRIBUTION_ID1';
80901       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_33');
80902       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID2';
80903       l_rec_rev_acct_attrs.array_num_value(35)  := l_array_source_36(Idx);
80904       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_TYPE';
80905       l_rec_rev_acct_attrs.array_char_value(36)  := l_array_source_35(Idx);
80906       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'UPG_CR_ENC_TYPE_ID';
80907       l_rec_rev_acct_attrs.array_num_value(37)  := l_array_source_62(Idx);
80908       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_DR_ENC_TYPE_ID';
80909       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_63(Idx);
80910 
80911 
80912       xla_ae_lines_pkg.SetAcctReversalAttrs
80913          (p_event_id             => l_event_id
80914          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
80915          ,p_calculate_acctd_flag => l_calculate_acctd_flag
80916          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
80917    END IF;
80918 
80919    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
80923 AcctLineType_36 (
80920        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
80921 
80922 --
80924  p_application_id  => p_application_id
80925  ,p_event_id     => l_event_id
80926  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80927  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80928  ,p_actual_flag => l_actual_flag
80929  ,p_balance_type_code => l_balance_type_code
80930  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80931  
80932  , p_source_3 => l_array_source_3(Idx)
80933  , p_source_4 => l_array_source_4(Idx)
80934  , p_source_5 => l_array_source_5(Idx)
80935  , p_source_6 => l_array_source_6(Idx)
80936  , p_source_7 => l_array_source_7(Idx)
80937  , p_source_23 => l_array_source_23(Idx)
80938  , p_source_24 => l_array_source_24(Idx)
80939  , p_source_26 => l_array_source_26(Idx)
80940  , p_source_28 => l_array_source_28(Idx)
80941  , p_source_29 => l_array_source_29(Idx)
80942  , p_source_30 => l_array_source_30(Idx)
80943  , p_source_31 => l_array_source_31(Idx)
80944  , p_source_32 => l_array_source_32(Idx)
80945  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
80946  , p_source_34 => l_array_source_34(Idx)
80947  , p_source_35 => l_array_source_35(Idx)
80948  , p_source_35_meaning => l_array_source_35_meaning(Idx)
80949  , p_source_36 => l_array_source_36(Idx)
80950  , p_source_41 => l_array_source_41(Idx)
80951  , p_source_44 => l_array_source_44(Idx)
80952  , p_source_52 => l_array_source_52(Idx)
80953  , p_source_53 => l_array_source_53(Idx)
80954  , p_source_54 => l_array_source_54(Idx)
80955  , p_source_55 => l_array_source_55(Idx)
80956  , p_source_56 => l_array_source_56(Idx)
80957  , p_source_57 => l_array_source_57(Idx)
80958  , p_source_58 => l_array_source_58(Idx)
80959  , p_source_59 => l_array_source_59(Idx)
80960  , p_source_60 => l_array_source_60(Idx)
80961  , p_source_61 => l_array_source_61(Idx)
80962  , p_source_62 => l_array_source_62(Idx)
80963  , p_source_63 => l_array_source_63(Idx)
80964  );
80965 If(l_balance_type_code = 'A') THEN
80966   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80967 END IF;
80968 
80969 --
80970 
80971 
80972 --
80973 AcctLineType_41 (
80974  p_application_id  => p_application_id
80975  ,p_event_id     => l_event_id
80976  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80977  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80978  ,p_actual_flag => l_actual_flag
80979  ,p_balance_type_code => l_balance_type_code
80980  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80981  
80982  , p_source_3 => l_array_source_3(Idx)
80983  , p_source_4 => l_array_source_4(Idx)
80984  , p_source_5 => l_array_source_5(Idx)
80985  , p_source_7 => l_array_source_7(Idx)
80986  , p_source_8 => l_array_source_8(Idx)
80987  , p_source_23 => l_array_source_23(Idx)
80988  , p_source_24 => l_array_source_24(Idx)
80989  , p_source_26 => l_array_source_26(Idx)
80990  , p_source_28 => l_array_source_28(Idx)
80991  , p_source_29 => l_array_source_29(Idx)
80992  , p_source_30 => l_array_source_30(Idx)
80993  , p_source_31 => l_array_source_31(Idx)
80994  , p_source_32 => l_array_source_32(Idx)
80995  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
80996  , p_source_34 => l_array_source_34(Idx)
80997  , p_source_35 => l_array_source_35(Idx)
80998  , p_source_35_meaning => l_array_source_35_meaning(Idx)
80999  , p_source_36 => l_array_source_36(Idx)
81000  , p_source_41 => l_array_source_41(Idx)
81001  , p_source_44 => l_array_source_44(Idx)
81002  , p_source_52 => l_array_source_52(Idx)
81003  , p_source_53 => l_array_source_53(Idx)
81004  , p_source_54 => l_array_source_54(Idx)
81005  , p_source_55 => l_array_source_55(Idx)
81006  , p_source_56 => l_array_source_56(Idx)
81007  , p_source_57 => l_array_source_57(Idx)
81008  , p_source_58 => l_array_source_58(Idx)
81009  , p_source_59 => l_array_source_59(Idx)
81010  , p_source_60 => l_array_source_60(Idx)
81011  , p_source_61 => l_array_source_61(Idx)
81012  , p_source_62 => l_array_source_62(Idx)
81013  , p_source_63 => l_array_source_63(Idx)
81014  );
81015 If(l_balance_type_code = 'A') THEN
81016   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81017 END IF;
81018 
81019 --
81020 
81021 
81022 --
81023 AcctLineType_42 (
81024  p_application_id  => p_application_id
81025  ,p_event_id     => l_event_id
81026  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81027  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81028  ,p_actual_flag => l_actual_flag
81029  ,p_balance_type_code => l_balance_type_code
81030  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81031  
81032  , p_source_3 => l_array_source_3(Idx)
81033  , p_source_4 => l_array_source_4(Idx)
81034  , p_source_5 => l_array_source_5(Idx)
81035  , p_source_7 => l_array_source_7(Idx)
81036  , p_source_8 => l_array_source_8(Idx)
81037  , p_source_23 => l_array_source_23(Idx)
81038  , p_source_24 => l_array_source_24(Idx)
81039  , p_source_26 => l_array_source_26(Idx)
81040  , p_source_28 => l_array_source_28(Idx)
81041  , p_source_29 => l_array_source_29(Idx)
81042  , p_source_30 => l_array_source_30(Idx)
81043  , p_source_31 => l_array_source_31(Idx)
81044  , p_source_32 => l_array_source_32(Idx)
81045  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
81046  , p_source_34 => l_array_source_34(Idx)
81047  , p_source_35 => l_array_source_35(Idx)
81048  , p_source_35_meaning => l_array_source_35_meaning(Idx)
81049  , p_source_36 => l_array_source_36(Idx)
81050  , p_source_41 => l_array_source_41(Idx)
81051  , p_source_44 => l_array_source_44(Idx)
81052  , p_source_52 => l_array_source_52(Idx)
81053  , p_source_53 => l_array_source_53(Idx)
81054  , p_source_54 => l_array_source_54(Idx)
81055  , p_source_55 => l_array_source_55(Idx)
81056  , p_source_56 => l_array_source_56(Idx)
81057  , p_source_57 => l_array_source_57(Idx)
81058  , p_source_58 => l_array_source_58(Idx)
81062  , p_source_62 => l_array_source_62(Idx)
81059  , p_source_59 => l_array_source_59(Idx)
81060  , p_source_60 => l_array_source_60(Idx)
81061  , p_source_61 => l_array_source_61(Idx)
81063  , p_source_63 => l_array_source_63(Idx)
81064  );
81065 If(l_balance_type_code = 'A') THEN
81066   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81067 END IF;
81068 
81069 --
81070 
81071 
81072 --
81073 AcctLineType_43 (
81074  p_application_id  => p_application_id
81075  ,p_event_id     => l_event_id
81076  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81077  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81078  ,p_actual_flag => l_actual_flag
81079  ,p_balance_type_code => l_balance_type_code
81080  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81081  
81082  , p_source_3 => l_array_source_3(Idx)
81083  , p_source_4 => l_array_source_4(Idx)
81084  , p_source_5 => l_array_source_5(Idx)
81085  , p_source_6 => l_array_source_6(Idx)
81086  , p_source_7 => l_array_source_7(Idx)
81087  , p_source_23 => l_array_source_23(Idx)
81088  , p_source_24 => l_array_source_24(Idx)
81089  , p_source_26 => l_array_source_26(Idx)
81090  , p_source_28 => l_array_source_28(Idx)
81091  , p_source_29 => l_array_source_29(Idx)
81092  , p_source_30 => l_array_source_30(Idx)
81093  , p_source_31 => l_array_source_31(Idx)
81094  , p_source_32 => l_array_source_32(Idx)
81095  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
81096  , p_source_34 => l_array_source_34(Idx)
81097  , p_source_35 => l_array_source_35(Idx)
81098  , p_source_35_meaning => l_array_source_35_meaning(Idx)
81099  , p_source_36 => l_array_source_36(Idx)
81100  , p_source_41 => l_array_source_41(Idx)
81101  , p_source_44 => l_array_source_44(Idx)
81102  , p_source_52 => l_array_source_52(Idx)
81103  , p_source_53 => l_array_source_53(Idx)
81104  , p_source_54 => l_array_source_54(Idx)
81105  , p_source_55 => l_array_source_55(Idx)
81106  , p_source_56 => l_array_source_56(Idx)
81107  , p_source_57 => l_array_source_57(Idx)
81108  , p_source_58 => l_array_source_58(Idx)
81109  , p_source_59 => l_array_source_59(Idx)
81110  , p_source_60 => l_array_source_60(Idx)
81111  , p_source_61 => l_array_source_61(Idx)
81112  , p_source_62 => l_array_source_62(Idx)
81113  , p_source_63 => l_array_source_63(Idx)
81114  );
81115 If(l_balance_type_code = 'A') THEN
81116   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81117 END IF;
81118 
81119 --
81120 
81121       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
81122       -- or secondary ledger that has different currency with primary
81123       -- or alc that is calculated by sla
81124       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
81125             (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'))
81126 
81127 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
81128 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
81129           AND (l_actual_flag = 'A')) THEN
81130         XLA_AE_LINES_PKG.CreateGainOrLossLines(
81131           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
81132          ,p_application_id   => p_application_id
81133          ,p_amb_context_code => 'DEFAULT'
81134          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
81135          ,p_event_class_code => C_EVENT_CLASS_CODE
81136          ,p_event_type_code  => C_EVENT_TYPE_CODE
81137          
81138          ,p_gain_ccid        => -1
81139          ,p_loss_ccid        => -1
81140 
81141          ,p_actual_flag      => l_actual_flag
81142          ,p_enc_flag         => null
81143          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
81144          ,p_enc_g_l_ref      => null
81145          );
81146       END IF;
81147    END IF;
81148 END IF;
81149 
81150    ELSE
81151       --
81152       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
81153       --
81154       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81155          trace
81156             (p_msg      => 'Trancaction revesal option is Y'
81157             ,p_level    => C_LEVEL_STATEMENT
81158             ,p_module   => l_log_module);
81159       END IF;
81160    END IF;
81161 
81162 END LOOP;
81163 l_result := XLA_AE_LINES_PKG.InsertLines ;
81164 end loop;
81165 close line_cur;
81166 
81167 
81168 --
81169 -- insert headers into xla_ae_headers_gt table
81170 --
81171 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
81172 
81173 -- insert into errors table here.
81174 
81175 END LOOP;
81176 
81177 --
81178 -- 4865292
81179 --
81180 -- Compare g_hdr_extract_count with event count in
81181 -- CreateHeadersAndLines.
81182 --
81183 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
81184 
81185 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81186    trace (p_msg     => '# rows extracted from header extract objects '
81187                     || ' (running total): '
81188                     || g_hdr_extract_count
81189          ,p_level   => C_LEVEL_STATEMENT
81190          ,p_module  => l_log_module);
81191 END IF;
81192 
81193 CLOSE header_cur;
81194 --
81195 
81196 --
81197 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81198    trace
81199       (p_msg      => 'END of EventClass_152'
81200       ,p_level    => C_LEVEL_PROCEDURE
81201       ,p_module   => l_log_module);
81202 END IF;
81203 --
81204 RETURN l_result;
81205 EXCEPTION
81206 WHEN xla_exceptions_pkg.application_exception THEN
81207    
81208 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
81209 
81210    
81214 WHEN OTHERS THEN
81211 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
81212 
81213    RAISE;
81215    xla_exceptions_pkg.raise_message
81216       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_152');
81217 END EventClass_152;
81218 --
81219 
81220 ---------------------------------------
81221 --
81222 -- PRIVATE PROCEDURE
81223 --         insert_sources_153
81224 --
81225 ----------------------------------------
81226 --
81227 PROCEDURE insert_sources_153(
81228                                 p_target_ledger_id       IN NUMBER
81229                               , p_language               IN VARCHAR2
81230                               , p_sla_ledger_id          IN NUMBER
81231                               , p_pad_start_date         IN DATE
81232                               , p_pad_end_date           IN DATE
81233                          )
81234 IS
81235 
81236 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ADJ_ALL';
81237 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVENTORY_COST_ADJ';
81238 p_apps_owner                   VARCHAR2(30);
81239 l_log_module                   VARCHAR2(240);
81240 BEGIN
81241 IF g_log_enabled THEN
81242       l_log_module := C_DEFAULT_MODULE||'.insert_sources_153';
81243 END IF;
81244 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81245 
81246       trace
81247          (p_msg      => 'BEGIN of insert_sources_153'
81248          ,p_level    => C_LEVEL_PROCEDURE
81249          ,p_module   => l_log_module);
81250 
81251 END IF;
81252 
81253 -- select APPS owner
81254 SELECT oracle_username
81255   INTO p_apps_owner
81256   FROM fnd_oracle_userid
81257  WHERE read_only_flag = 'U'
81258 ;
81259 
81260 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81261       trace
81262          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
81263                         ' - p_language = '||p_language||
81264                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
81265                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
81266                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
81267                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
81268          ,p_level    => C_LEVEL_STATEMENT
81269          ,p_module   => l_log_module);
81270 END IF;
81271 
81272 
81273 --
81274 INSERT INTO xla_diag_sources --hdr2
81275 (
81276         event_id
81277       , ledger_id
81278       , sla_ledger_id
81279       , description_language
81280       , object_name
81281       , object_type_code
81282       , line_number
81283       , source_application_id
81284       , source_type_code
81285       , source_code
81286       , source_value
81287       , source_meaning
81288       , created_by
81289       , creation_date
81290       , last_update_date
81291       , last_updated_by
81292       , last_update_login
81293       , program_update_date
81294       , program_application_id
81295       , program_id
81296       , request_id
81297 )
81298 SELECT
81299         event_id
81300       , p_target_ledger_id
81301       , p_sla_ledger_id
81302       , p_language
81303       , object_name
81304       , object_type_code
81305       , line_number
81306       , source_application_id
81307       , source_type_code
81308       , source_code
81309       , SUBSTR(source_value ,1,1996)
81310       , SUBSTR(source_meaning ,1,200)
81311       , xla_environment_pkg.g_Usr_Id
81312       , TRUNC(SYSDATE)
81313       , TRUNC(SYSDATE)
81314       , xla_environment_pkg.g_Usr_Id
81315       , xla_environment_pkg.g_Login_Id
81316       , TRUNC(SYSDATE)
81317       , xla_environment_pkg.g_Prog_Appl_Id
81318       , xla_environment_pkg.g_Prog_Id
81319       , xla_environment_pkg.g_Req_Id
81320   FROM (
81321        SELECT xet.event_id                  event_id
81322             , 0                          line_number
81323             , CASE r
81324                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
81325                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
81326                 
81327                ELSE null
81328               END                           object_name
81329             , CASE r
81330                 WHEN 1 THEN 'HEADER' 
81331                 WHEN 2 THEN 'HEADER' 
81332                 
81333                 ELSE null
81334               END                           object_type_code
81335             , CASE r
81336                 WHEN 1 THEN '275' 
81337                 WHEN 2 THEN '275' 
81338                 
81339                 ELSE null
81340               END                           source_application_id
81341             , 'S'             source_type_code
81342             , CASE r
81343                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
81344                 WHEN 2 THEN 'GL_DATE' 
81345                 
81346                 ELSE null
81347               END                           source_code
81348             , CASE r
81349                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
81350                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
81351                 
81352                 ELSE null
81353               END                           source_value
81354             , null              source_meaning
81355          FROM xla_events_gt     xet  
81356       , PA_XLA_EXP_HEADER_V  h2
81357              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
81358          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81359            AND xet.event_class_code = C_EVENT_CLASS_CODE
81360               AND h2.event_id = xet.event_id
81361 
81362 )
81363 ;
81364 --
81365 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81366 
81367       trace
81371 
81368          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
81369          ,p_level    => C_LEVEL_STATEMENT
81370          ,p_module   => l_log_module);
81372 END IF;
81373 --
81374 
81375 
81376 
81377 --
81378 INSERT INTO xla_diag_sources  --line2
81379 (
81380         event_id
81381       , ledger_id
81382       , sla_ledger_id
81383       , description_language
81384       , object_name
81385       , object_type_code
81386       , line_number
81387       , source_application_id
81388       , source_type_code
81389       , source_code
81390       , source_value
81391       , source_meaning
81392       , created_by
81393       , creation_date
81394       , last_update_date
81395       , last_updated_by
81396       , last_update_login
81397       , program_update_date
81398       , program_application_id
81399       , program_id
81400       , request_id
81401 )
81402 SELECT  event_id
81403       , p_target_ledger_id
81404       , p_sla_ledger_id
81405       , p_language
81406       , object_name
81407       , object_type_code
81408       , line_number
81409       , source_application_id
81410       , source_type_code
81411       , source_code
81412       , SUBSTR(source_value,1,1996)
81413       , SUBSTR(source_meaning ,1,200)
81414       , xla_environment_pkg.g_Usr_Id
81415       , TRUNC(SYSDATE)
81416       , TRUNC(SYSDATE)
81417       , xla_environment_pkg.g_Usr_Id
81418       , xla_environment_pkg.g_Login_Id
81419       , TRUNC(SYSDATE)
81420       , xla_environment_pkg.g_Prog_Appl_Id
81421       , xla_environment_pkg.g_Prog_Id
81422       , xla_environment_pkg.g_Req_Id
81423   FROM (
81424        SELECT xet.event_id                  event_id
81425             , l1.line_number                 line_number
81426             , CASE r
81427                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
81428                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
81429                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
81430                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
81431                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
81432                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
81433                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
81434                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
81435                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
81436                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
81437                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
81438                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
81439                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
81440                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
81441                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
81442                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
81443                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
81444                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
81445                 
81446                ELSE null
81447               END                           object_name
81448             , CASE r
81449                 WHEN 1 THEN 'LINE' 
81450                 WHEN 2 THEN 'LINE' 
81451                 WHEN 3 THEN 'LINE' 
81452                 WHEN 4 THEN 'LINE' 
81453                 WHEN 5 THEN 'LINE' 
81454                 WHEN 6 THEN 'LINE' 
81455                 WHEN 7 THEN 'LINE' 
81456                 WHEN 8 THEN 'LINE' 
81457                 WHEN 9 THEN 'LINE' 
81458                 WHEN 10 THEN 'LINE' 
81459                 WHEN 11 THEN 'LINE' 
81460                 WHEN 12 THEN 'LINE' 
81461                 WHEN 13 THEN 'LINE' 
81462                 WHEN 14 THEN 'LINE' 
81463                 WHEN 15 THEN 'LINE' 
81464                 WHEN 16 THEN 'LINE' 
81465                 WHEN 17 THEN 'LINE' 
81466                 WHEN 18 THEN 'LINE' 
81467                 
81468                 ELSE null
81469               END                           object_type_code
81470             , CASE r
81471                 WHEN 1 THEN '275' 
81472                 WHEN 2 THEN '275' 
81473                 WHEN 3 THEN '275' 
81474                 WHEN 4 THEN '275' 
81475                 WHEN 5 THEN '275' 
81476                 WHEN 6 THEN '275' 
81477                 WHEN 7 THEN '275' 
81478                 WHEN 8 THEN '275' 
81479                 WHEN 9 THEN '275' 
81480                 WHEN 10 THEN '275' 
81481                 WHEN 11 THEN '275' 
81482                 WHEN 12 THEN '275' 
81483                 WHEN 13 THEN '275' 
81484                 WHEN 14 THEN '275' 
81485                 WHEN 15 THEN '275' 
81486                 WHEN 16 THEN '275' 
81487                 WHEN 17 THEN '275' 
81488                 WHEN 18 THEN '275' 
81489                 
81490                 ELSE null
81491               END                           source_application_id
81492             , 'S'             source_type_code
81493             , CASE r
81494                 WHEN 1 THEN 'COST_CCID' 
81495                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
81496                 WHEN 3 THEN 'ADJ_COST_CCID' 
81497                 WHEN 4 THEN 'COST_CLEARING_CCID' 
81498                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
81499                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
81500                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
81501                 WHEN 8 THEN 'ENTERED_RAW_COST' 
81502                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
81503                 WHEN 10 THEN 'ACCT_RAW_COST' 
81504                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
81505                 WHEN 12 THEN 'EXCHANGE_RATE' 
81506                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
81507                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
81508                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
81509                 WHEN 16 THEN 'LINE_NUMBER' 
81510                 WHEN 17 THEN 'LINE_TYPE' 
81511                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
81515             , CASE r
81512                 
81513                 ELSE null
81514               END                           source_code
81516                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
81517                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
81518                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
81519                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
81520                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
81521                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
81522                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
81523                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
81524                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
81525                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
81526                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
81527                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
81528                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
81529                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
81530                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
81531                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
81532                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
81533                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
81534                 
81535                 ELSE null
81536               END                           source_value
81537             , CASE r
81538                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
81539                           103371
81540                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
81541                          ,'ALLOW_OVERRIDE_CCID_FLAG'
81542                          ,'S'
81543                          ,275)
81544                 WHEN 17 THEN fvl35.meaning
81545                 
81546                 ELSE null
81547               END               source_meaning
81548          FROM  xla_events_gt     xet  
81549         , PA_XLA_CDL_LINES_V  l1
81550   , fnd_lookup_values    fvl35
81551             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
81552         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81553           AND xet.event_class_code = C_EVENT_CLASS_CODE
81554             AND l1.event_id          = xet.event_id
81555    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
81556   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
81557   AND fvl35.view_application_id(+) = 275
81558   AND fvl35.language(+)            = USERENV('LANG')
81559   
81560 )
81561 ;
81562 --
81563 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81564 
81565       trace
81566          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
81567          ,p_level    => C_LEVEL_STATEMENT
81568          ,p_module   => l_log_module);
81569 
81570 END IF;
81571 
81572 
81573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81574       trace
81575          (p_msg      => 'END of insert_sources_153'
81576          ,p_level    => C_LEVEL_PROCEDURE
81577          ,p_module   => l_log_module);
81578 END IF;
81579 EXCEPTION
81580   WHEN xla_exceptions_pkg.application_exception THEN
81581       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81582             trace
81583                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81584                ,p_level    => C_LEVEL_EXCEPTION
81585                ,p_module   => l_log_module);
81586       END IF;
81587       RAISE;
81588   WHEN OTHERS THEN
81589       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81590             trace
81591                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81592                ,p_level    => C_LEVEL_EXCEPTION
81593                ,p_module   => l_log_module);
81594        END IF;
81595        xla_exceptions_pkg.raise_message
81596            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_153');
81597 END insert_sources_153;
81598 --
81599 
81600 ---------------------------------------
81601 --
81602 -- PRIVATE FUNCTION
81603 --         EventClass_153
81604 --
81605 ----------------------------------------
81606 --
81607 FUNCTION EventClass_153
81608        (p_application_id         IN NUMBER
81609        ,p_base_ledger_id         IN NUMBER
81610        ,p_target_ledger_id       IN NUMBER
81611        ,p_language               IN VARCHAR2
81612        ,p_currency_code          IN VARCHAR2
81613        ,p_sla_ledger_id          IN NUMBER
81614        ,p_pad_start_date         IN DATE
81615        ,p_pad_end_date           IN DATE
81616        ,p_primary_ledger_id      IN NUMBER)
81617 RETURN BOOLEAN IS
81618 --
81619 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ADJ_ALL';
81620 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVENTORY_COST_ADJ';
81621 
81622 l_calculate_acctd_flag   VARCHAR2(1) :='N';
81623 l_calculate_g_l_flag     VARCHAR2(1) :='N';
81624 --
81625 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81626 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81627 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81628 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81629 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81630 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81631 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81632 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81633 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81634 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81635 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81636 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81637 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81641 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81638 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
81639 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81640 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81642 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
81643 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81644 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81645 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81646 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
81647 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
81648 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
81649 
81650 l_event_id                             NUMBER;
81651 l_previous_event_id                    NUMBER;
81652 l_first_event_id                       NUMBER;
81653 l_last_event_id                        NUMBER;
81654 
81655 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
81656 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
81657 --
81658 --
81659 l_result                    BOOLEAN := TRUE;
81660 l_rows                      NUMBER  := 1000;
81661 l_event_type_name           VARCHAR2(80) := 'All';
81662 l_event_class_name          VARCHAR2(80) := 'Inventory Cost Adjustment';
81663 l_description               VARCHAR2(4000);
81664 l_transaction_reversal      NUMBER;
81665 l_ae_header_id              NUMBER;
81666 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
81667 l_log_module                VARCHAR2(240);
81668 --
81669 l_acct_reversal_source      VARCHAR2(30);
81670 l_trx_reversal_source       VARCHAR2(30);
81671 
81672 l_continue_with_lines       BOOLEAN := TRUE;
81673 --
81674 l_acc_rev_gl_date_source    DATE;                      -- 4262811
81675 --
81676 type t_array_event_id is table of number index by binary_integer;
81677 
81678 l_rec_array_event                    t_rec_array_event;
81679 l_null_rec_array_event               t_rec_array_event;
81680 l_array_ae_header_id                 xla_number_array_type;
81681 l_actual_flag                        VARCHAR2(1) := NULL;
81682 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
81683 l_balance_type_code                  VARCHAR2(1) :=NULL;
81684 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
81685 
81686 --
81687 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
81688 --
81689 
81690 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
81691 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
81692 
81693 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
81694 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
81695 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
81696 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
81697 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
81698 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
81699 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81700 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
81701 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
81702 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
81703 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
81704 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
81705 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
81706 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
81707 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
81708 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
81709 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
81710 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
81711 
81712 l_array_source_33              t_array_source_33;
81713 l_array_source_75              t_array_source_75;
81714 
81715 l_array_source_4      t_array_source_4;
81716 l_array_source_5      t_array_source_5;
81717 l_array_source_6      t_array_source_6;
81718 l_array_source_7      t_array_source_7;
81719 l_array_source_8      t_array_source_8;
81720 l_array_source_23      t_array_source_23;
81721 l_array_source_24      t_array_source_24;
81722 l_array_source_25      t_array_source_25;
81723 l_array_source_26      t_array_source_26;
81724 l_array_source_27      t_array_source_27;
81725 l_array_source_28      t_array_source_28;
81726 l_array_source_29      t_array_source_29;
81727 l_array_source_30      t_array_source_30;
81728 l_array_source_31      t_array_source_31;
81729 l_array_source_32      t_array_source_32;
81730 l_array_source_34      t_array_source_34;
81731 l_array_source_35      t_array_source_35;
81732 l_array_source_35_meaning      t_array_lookup_meaning;
81733 l_array_source_36      t_array_source_36;
81734 
81735 --
81736 CURSOR header_cur
81737 IS
81738 SELECT /*+ leading(xet) cardinality(xet,1) */
81739 -- Event Class Code: INVENTORY_COST_ADJ
81740     xet.entity_id
81741    ,xet.legal_entity_id
81742    ,xet.entity_code
81743    ,xet.transaction_number
81747    ,xet.event_number
81744    ,xet.event_id
81745    ,xet.event_class_code
81746    ,xet.event_type_code
81748    ,xet.event_date
81749    ,xet.transaction_date
81750    ,xet.reference_num_1
81751    ,xet.reference_num_2
81752    ,xet.reference_num_3
81753    ,xet.reference_num_4
81754    ,xet.reference_char_1
81755    ,xet.reference_char_2
81756    ,xet.reference_char_3
81757    ,xet.reference_char_4
81758    ,xet.reference_date_1
81759    ,xet.reference_date_2
81760    ,xet.reference_date_3
81761    ,xet.reference_date_4
81762    ,xet.event_created_by
81763    ,xet.budgetary_control_flag 
81764   , h2.EXPENDITURE_ITEM_ID    source_33
81765   , h2.GL_DATE    source_75
81766   FROM xla_events_gt     xet 
81767   , PA_XLA_EXP_HEADER_V  h2
81768  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
81769    and xet.event_class_code = C_EVENT_CLASS_CODE
81770    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
81771 
81772  ORDER BY event_id
81773 ;
81774 
81775 
81776 --
81777 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
81778 IS
81779 SELECT  /*+ leading(xet) cardinality(xet,1) */
81780 -- Event Class Code: INVENTORY_COST_ADJ
81781     xet.entity_id
81782    ,xet.legal_entity_id
81783    ,xet.entity_code
81784    ,xet.transaction_number
81785    ,xet.event_id
81786    ,xet.event_class_code
81787    ,xet.event_type_code
81788    ,xet.event_number
81789    ,xet.event_date
81790    ,xet.transaction_date
81791    ,xet.reference_num_1
81792    ,xet.reference_num_2
81793    ,xet.reference_num_3
81794    ,xet.reference_num_4
81795    ,xet.reference_char_1
81796    ,xet.reference_char_2
81797    ,xet.reference_char_3
81798    ,xet.reference_char_4
81799    ,xet.reference_date_1
81800    ,xet.reference_date_2
81801    ,xet.reference_date_3
81802    ,xet.reference_date_4
81803    ,xet.event_created_by
81804    ,xet.budgetary_control_flag
81805  , l1.LINE_NUMBER  
81806   , l1.COST_CCID    source_4
81807   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
81808   , l1.ADJ_COST_CCID    source_6
81809   , l1.COST_CLEARING_CCID    source_7
81810   , l1.ADJ_COST_CLEARING_CCID    source_8
81811   , l1.REVERSING_LINE_FLAG    source_23
81812   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
81813   , l1.ENTERED_RAW_COST    source_25
81814   , l1.ENTERED_CURRENCY_CODE    source_26
81815   , l1.ACCT_RAW_COST    source_27
81816   , l1.EXCHANGE_RATE_DATE    source_28
81817   , l1.EXCHANGE_RATE    source_29
81818   , l1.EXCHANGE_RATE_TYPE    source_30
81819   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
81820   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
81821   , l1.LINE_NUMBER    source_34
81822   , l1.LINE_TYPE    source_35
81823   , fvl35.meaning   source_35_meaning
81824   , l1.LINE_NUM_REVERSED    source_36
81825   FROM xla_events_gt     xet 
81826   , PA_XLA_CDL_LINES_V  l1
81827   , fnd_lookup_values    fvl35
81828  WHERE xet.event_id between x_first_event_id and x_last_event_id
81829    and xet.event_date between p_pad_start_date and p_pad_end_date
81830    and xet.event_class_code = C_EVENT_CLASS_CODE
81831    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
81832    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
81833   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
81834   AND fvl35.view_application_id(+) = 275
81835   AND fvl35.language(+)            = USERENV('LANG')
81836   ;
81837 
81838 --
81839 BEGIN
81840 IF g_log_enabled THEN
81841    l_log_module := C_DEFAULT_MODULE||'.EventClass_153';
81842 END IF;
81843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81844    trace
81845       (p_msg      => 'BEGIN of EventClass_153'
81846       ,p_level    => C_LEVEL_PROCEDURE
81847       ,p_module   => l_log_module);
81848 END IF;
81849 
81850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81851    trace
81852       (p_msg      => 'p_application_id = '||p_application_id||
81853                      ' - p_base_ledger_id = '||p_base_ledger_id||
81854                      ' - p_target_ledger_id  = '||p_target_ledger_id||
81855                      ' - p_language = '||p_language||
81856                      ' - p_currency_code = '||p_currency_code||
81857                      ' - p_sla_ledger_id = '||p_sla_ledger_id
81858       ,p_level    => C_LEVEL_STATEMENT
81859       ,p_module   => l_log_module);
81860 END IF;
81861 --
81862 -- initialze arrays
81863 --
81864 g_array_event.DELETE;
81865 l_rec_array_event := l_null_rec_array_event;
81866 --
81867 --------------------------------------
81868 -- 4262811 Initialze MPA Line Number
81869 --------------------------------------
81870 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
81871 
81872 --
81873 
81874 --
81875 OPEN header_cur;
81876 --
81877 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81878    trace
81879    (p_msg      => 'SQL - FETCH header_cur'
81880    ,p_level    => C_LEVEL_STATEMENT
81881    ,p_module   => l_log_module);
81882 END IF;
81883 --
81884 LOOP
81885 FETCH header_cur BULK COLLECT INTO
81886         l_array_entity_id
81887       , l_array_legal_entity_id
81888       , l_array_entity_code
81889       , l_array_transaction_num
81890       , l_array_event_id
81891       , l_array_class_code
81892       , l_array_event_type
81893       , l_array_event_number
81894       , l_array_event_date
81895       , l_array_transaction_date
81896       , l_array_reference_num_1
81897       , l_array_reference_num_2
81898       , l_array_reference_num_3
81899       , l_array_reference_num_4
81900       , l_array_reference_char_1
81901       , l_array_reference_char_2
81902       , l_array_reference_char_3
81903       , l_array_reference_char_4
81907       , l_array_reference_date_4
81904       , l_array_reference_date_1
81905       , l_array_reference_date_2
81906       , l_array_reference_date_3
81908       , l_array_event_created_by
81909       , l_array_budgetary_control_flag 
81910       , l_array_source_33
81911       , l_array_source_75
81912       LIMIT l_rows;
81913 --
81914 IF (C_LEVEL_EVENT >= g_log_level) THEN
81915    trace
81916    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
81917    ,p_level    => C_LEVEL_EVENT
81918    ,p_module   => l_log_module);
81919 END IF;
81920 --
81921 EXIT WHEN l_array_entity_id.COUNT = 0;
81922 
81923 -- initialize arrays
81924 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
81925 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
81926 
81927 --
81928 -- Bug 4458708
81929 --
81930 XLA_AE_LINES_PKG.g_LineNumber := 0;
81931 
81932 
81933 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
81934 g_last_hdr_idx := l_array_event_id.LAST;
81935 --
81936 -- loop for the headers. Each iteration is for each header extract row
81937 -- fetched in header cursor
81938 --
81939 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
81940 
81941 --
81942 -- set event info as cache for other routines to refer event attributes
81943 --
81944 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
81945    (p_application_id           => p_application_id
81946    ,p_primary_ledger_id        => p_primary_ledger_id
81947    ,p_base_ledger_id           => p_base_ledger_id
81948    ,p_target_ledger_id         => p_target_ledger_id
81949    ,p_entity_id                => l_array_entity_id(hdr_idx)
81950    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
81951    ,p_entity_code              => l_array_entity_code(hdr_idx)
81952    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
81953    ,p_event_id                 => l_array_event_id(hdr_idx)
81954    ,p_event_class_code         => l_array_class_code(hdr_idx)
81955    ,p_event_type_code          => l_array_event_type(hdr_idx)
81956    ,p_event_number             => l_array_event_number(hdr_idx)
81957    ,p_event_date               => l_array_event_date(hdr_idx)
81958    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
81959    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
81960    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
81961    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
81962    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
81963    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
81964    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
81965    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
81966    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
81967    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
81968    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
81969    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
81970    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
81971    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
81972    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
81973 
81974 --
81975 -- set the status of entry to C_VALID (0)
81976 --
81977 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
81978 
81979 --
81980 -- initialize a row for ae header
81981 --
81982 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
81983 
81984 l_event_id := l_array_event_id(hdr_idx);
81985 
81986 --
81987 -- storing the hdr_idx for event. May be used by line cursor.
81988 --
81989 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
81990 
81991 --
81992 -- store sources from header extract. This can be improved to
81993 -- store only those sources from header extract that may be used in lines
81994 --
81995 
81996 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
81997 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
81998 
81999 --
82000 -- initilaize the status of ae headers for diffrent balance types
82001 -- the status is initialised to C_NOT_CREATED (2)
82002 --
82003 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82004 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82005 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82006 
82007 --
82008 -- call api to validate and store accounting attributes for header
82009 --
82010 
82011 ------------------------------------------------------------
82012 -- Accrual Reversal : to get date for Standard Source (NONE)
82013 ------------------------------------------------------------
82014 l_acc_rev_gl_date_source := NULL;
82015 
82016      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
82017       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
82018 
82019 
82020 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
82021 
82022 XLA_AE_HEADER_PKG.SetJeCategoryName;
82023 
82024 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
82025 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
82026 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
82027 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
82028 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
82029 
82030 
82031 -- No header level analytical criteria
82032 
82033 --
82037 
82034 --accounting attribute enhancement, bug 3612931
82035 --
82036 l_trx_reversal_source := SUBSTR(NULL, 1,30);
82038 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
82039    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82040 
82041    xla_accounting_err_pkg.build_message
82042       (p_appli_s_name            => 'XLA'
82043       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
82044       ,p_token_1                 => 'ACCT_ATTR_NAME'
82045       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
82046       ,p_token_2                 => 'PRODUCT_NAME'
82047       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82048       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82049       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82050       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82051 
82052 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
82053    --
82054    -- following sets the accounting attributes needed to reverse
82055    -- accounting for a distributeion
82056    --
82057    xla_ae_lines_pkg.SetTrxReversalAttrs
82058       (p_event_id              => l_event_id
82059       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
82060       ,p_trx_reversal_source   => l_trx_reversal_source);
82061 
82062 END IF;
82063 
82064 
82065 ----------------------------------------------------------------
82066 -- 4262811 -  update the header statuses to invalid in need be
82067 ----------------------------------------------------------------
82068 --
82069 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
82070 
82071 
82072   -----------------------------------------------
82073   -- No accrual reversal for the event class/type
82074   -----------------------------------------------
82075 ----------------------------------------------------------------
82076 
82077 --
82078 -- this ends the header loop iteration for one bulk fetch
82079 --
82080 END LOOP;
82081 
82082 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
82083 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
82084 
82085 --
82086 -- insert dummy rows into lines gt table that were created due to
82087 -- transaction reversals
82088 --
82089 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
82090    l_result := XLA_AE_LINES_PKG.InsertLines;
82091 END IF;
82092 
82093 --
82094 -- reset the temp_line_num for each set of events fetched from header
82095 -- cursor rather than doing it for each new event in line cursor
82096 -- Bug 3939231
82097 --
82098 xla_ae_lines_pkg.g_temp_line_num := 0;
82099 
82100 
82101 
82102 --
82103 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
82104 --
82105 --
82106 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82107 
82108       trace
82109          (p_msg      => 'SQL - FETCH line_cur'
82110          ,p_level    => C_LEVEL_STATEMENT
82111          ,p_module   => l_log_module);
82112 
82113 END IF;
82114 --
82115 --
82116 LOOP
82117   --
82118   FETCH line_cur BULK COLLECT INTO
82119         l_array_entity_id
82120       , l_array_legal_entity_id
82121       , l_array_entity_code
82122       , l_array_transaction_num
82123       , l_array_event_id
82124       , l_array_class_code
82125       , l_array_event_type
82126       , l_array_event_number
82127       , l_array_event_date
82128       , l_array_transaction_date
82129       , l_array_reference_num_1
82130       , l_array_reference_num_2
82131       , l_array_reference_num_3
82132       , l_array_reference_num_4
82133       , l_array_reference_char_1
82134       , l_array_reference_char_2
82135       , l_array_reference_char_3
82136       , l_array_reference_char_4
82137       , l_array_reference_date_1
82138       , l_array_reference_date_2
82139       , l_array_reference_date_3
82140       , l_array_reference_date_4
82141       , l_array_event_created_by
82142       , l_array_budgetary_control_flag
82143       , l_array_extract_line_num 
82144       , l_array_source_4
82145       , l_array_source_5
82146       , l_array_source_6
82147       , l_array_source_7
82148       , l_array_source_8
82149       , l_array_source_23
82150       , l_array_source_24
82151       , l_array_source_25
82152       , l_array_source_26
82153       , l_array_source_27
82154       , l_array_source_28
82155       , l_array_source_29
82156       , l_array_source_30
82157       , l_array_source_31
82158       , l_array_source_32
82159       , l_array_source_34
82160       , l_array_source_35
82161       , l_array_source_35_meaning
82162       , l_array_source_36
82163       LIMIT l_rows;
82164 
82165   --
82166   IF (C_LEVEL_EVENT >= g_log_level) THEN
82167             trace
82168                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
82169                ,p_level    => C_LEVEL_EVENT
82170                ,p_module   => l_log_module);
82171   END IF;
82172   --
82173   EXIT WHEN l_array_entity_id.count = 0;
82174 
82175   XLA_AE_LINES_PKG.g_rec_lines := null;
82176 
82177 --
82178 -- Bug 4458708
82179 --
82180 XLA_AE_LINES_PKG.g_LineNumber := 0;
82181 --
82182 --
82183 
82184 FOR Idx IN 1..l_array_event_id.count LOOP
82185    --
82186    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
82187    --
82188    l_event_id := l_array_event_id(idx);  -- 5648433
82189 
82190    --
82194    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
82191    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82192    --
82193 
82195              (g_array_event(l_event_id).array_value_num('header_index'))
82196          ,'N'
82197          ) <> 'Y'
82198    THEN
82199       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82200          trace
82201             (p_msg      => 'Trancaction revesal option is not Y '
82202             ,p_level    => C_LEVEL_STATEMENT
82203             ,p_module   => l_log_module);
82204       END IF;
82205 
82206 --
82207 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
82208 --
82209 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
82210 --
82211 -- set event info as cache for other routines to refer event attributes
82212 --
82213 
82214 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
82215    l_previous_event_id := l_event_id;
82216 
82217    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
82218       (p_application_id           => p_application_id
82219       ,p_primary_ledger_id        => p_primary_ledger_id
82220       ,p_base_ledger_id           => p_base_ledger_id
82221       ,p_target_ledger_id         => p_target_ledger_id
82222       ,p_entity_id                => l_array_entity_id(Idx)
82223       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
82224       ,p_entity_code              => l_array_entity_code(Idx)
82225       ,p_transaction_num          => l_array_transaction_num(Idx)
82226       ,p_event_id                 => l_array_event_id(Idx)
82227       ,p_event_class_code         => l_array_class_code(Idx)
82228       ,p_event_type_code          => l_array_event_type(Idx)
82229       ,p_event_number             => l_array_event_number(Idx)
82230       ,p_event_date               => l_array_event_date(Idx)
82231       ,p_transaction_date         => l_array_transaction_date(Idx)
82232       ,p_reference_num_1          => l_array_reference_num_1(Idx)
82233       ,p_reference_num_2          => l_array_reference_num_2(Idx)
82234       ,p_reference_num_3          => l_array_reference_num_3(Idx)
82235       ,p_reference_num_4          => l_array_reference_num_4(Idx)
82236       ,p_reference_char_1         => l_array_reference_char_1(Idx)
82237       ,p_reference_char_2         => l_array_reference_char_2(Idx)
82238       ,p_reference_char_3         => l_array_reference_char_3(Idx)
82239       ,p_reference_char_4         => l_array_reference_char_4(Idx)
82240       ,p_reference_date_1         => l_array_reference_date_1(Idx)
82241       ,p_reference_date_2         => l_array_reference_date_2(Idx)
82242       ,p_reference_date_3         => l_array_reference_date_3(Idx)
82243       ,p_reference_date_4         => l_array_reference_date_4(Idx)
82244       ,p_event_created_by         => l_array_event_created_by(Idx)
82245       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
82246        --
82247 END IF;
82248 
82249 
82250 
82251 --
82252 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
82253 
82254 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
82255 
82256 IF l_continue_with_lines THEN
82257    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
82258       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82259 
82260       xla_accounting_err_pkg.build_message
82261          (p_appli_s_name            => 'XLA'
82262          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
82263          ,p_token_1                 => 'LINE_NUMBER'
82264          ,p_value_1                 => l_array_extract_line_num(Idx)
82265          ,p_token_2                 => 'PRODUCT_NAME'
82266          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82267          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82268          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82269          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82270 
82271    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
82272       --
82273       -- following sets the accounting attributes needed to reverse
82274       -- accounting for a distributeion
82275       --
82276 
82277       --
82278       -- 5217187
82279       --
82280       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
82281       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
82282                                        g_array_event(l_event_id).array_value_num('header_index'));
82283       --
82284       --
82285 
82286       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
82287       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
82288       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
82289       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
82290       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
82291       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
82292       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
82293       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
82294       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
82295       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
82296       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
82297       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
82298       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
82299       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
82300       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
82301       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
82305       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
82302       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
82303       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
82304       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
82306       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
82307       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
82308       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
82309       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
82310       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
82311       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
82312       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
82313       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
82314       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
82315       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
82316       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
82317       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
82318       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
82319       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
82320       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
82321       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
82322       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
82323       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
82324       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
82325       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
82326       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
82327       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
82328       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
82329       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
82330       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
82331       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
82332       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
82333       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
82334 
82335 
82336       xla_ae_lines_pkg.SetAcctReversalAttrs
82337          (p_event_id             => l_event_id
82338          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
82339          ,p_calculate_acctd_flag => l_calculate_acctd_flag
82340          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
82341    END IF;
82342 
82343    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
82344        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
82345 
82346 --
82347 AcctLineType_75 (
82348  p_application_id  => p_application_id
82349  ,p_event_id     => l_event_id
82350  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82351  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82352  ,p_actual_flag => l_actual_flag
82353  ,p_balance_type_code => l_balance_type_code
82354  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82355  
82356  , p_source_4 => l_array_source_4(Idx)
82357  , p_source_5 => l_array_source_5(Idx)
82358  , p_source_6 => l_array_source_6(Idx)
82359  , p_source_7 => l_array_source_7(Idx)
82360  , p_source_23 => l_array_source_23(Idx)
82361  , p_source_24 => l_array_source_24(Idx)
82362  , p_source_25 => l_array_source_25(Idx)
82363  , p_source_26 => l_array_source_26(Idx)
82364  , p_source_27 => l_array_source_27(Idx)
82365  , p_source_28 => l_array_source_28(Idx)
82366  , p_source_29 => l_array_source_29(Idx)
82367  , p_source_30 => l_array_source_30(Idx)
82368  , p_source_31 => l_array_source_31(Idx)
82369  , p_source_32 => l_array_source_32(Idx)
82370  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
82371  , p_source_34 => l_array_source_34(Idx)
82372  , p_source_35 => l_array_source_35(Idx)
82373  , p_source_35_meaning => l_array_source_35_meaning(Idx)
82374  , p_source_36 => l_array_source_36(Idx)
82375  );
82376 If(l_balance_type_code = 'A') THEN
82377   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82378 END IF;
82379 
82380 --
82381 
82382 
82383 --
82384 AcctLineType_79 (
82385  p_application_id  => p_application_id
82386  ,p_event_id     => l_event_id
82387  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82388  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82389  ,p_actual_flag => l_actual_flag
82390  ,p_balance_type_code => l_balance_type_code
82391  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82392  
82393  , p_source_4 => l_array_source_4(Idx)
82394  , p_source_5 => l_array_source_5(Idx)
82395  , p_source_6 => l_array_source_6(Idx)
82396  , p_source_7 => l_array_source_7(Idx)
82397  , p_source_23 => l_array_source_23(Idx)
82398  , p_source_24 => l_array_source_24(Idx)
82399  , p_source_25 => l_array_source_25(Idx)
82400  , p_source_26 => l_array_source_26(Idx)
82401  , p_source_27 => l_array_source_27(Idx)
82402  , p_source_28 => l_array_source_28(Idx)
82403  , p_source_29 => l_array_source_29(Idx)
82404  , p_source_30 => l_array_source_30(Idx)
82405  , p_source_31 => l_array_source_31(Idx)
82406  , p_source_32 => l_array_source_32(Idx)
82407  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
82408  , p_source_34 => l_array_source_34(Idx)
82409  , p_source_35 => l_array_source_35(Idx)
82410  , p_source_35_meaning => l_array_source_35_meaning(Idx)
82411  , p_source_36 => l_array_source_36(Idx)
82412  );
82413 If(l_balance_type_code = 'A') THEN
82414   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82415 END IF;
82416 
82420 --
82417 --
82418 
82419 
82421 AcctLineType_91 (
82422  p_application_id  => p_application_id
82423  ,p_event_id     => l_event_id
82424  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82425  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82426  ,p_actual_flag => l_actual_flag
82427  ,p_balance_type_code => l_balance_type_code
82428  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82429  
82430  , p_source_4 => l_array_source_4(Idx)
82431  , p_source_5 => l_array_source_5(Idx)
82432  , p_source_7 => l_array_source_7(Idx)
82433  , p_source_8 => l_array_source_8(Idx)
82434  , p_source_23 => l_array_source_23(Idx)
82435  , p_source_24 => l_array_source_24(Idx)
82436  , p_source_25 => l_array_source_25(Idx)
82437  , p_source_26 => l_array_source_26(Idx)
82438  , p_source_27 => l_array_source_27(Idx)
82439  , p_source_28 => l_array_source_28(Idx)
82440  , p_source_29 => l_array_source_29(Idx)
82441  , p_source_30 => l_array_source_30(Idx)
82442  , p_source_31 => l_array_source_31(Idx)
82443  , p_source_32 => l_array_source_32(Idx)
82444  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
82445  , p_source_34 => l_array_source_34(Idx)
82446  , p_source_35 => l_array_source_35(Idx)
82447  , p_source_35_meaning => l_array_source_35_meaning(Idx)
82448  , p_source_36 => l_array_source_36(Idx)
82449  );
82450 If(l_balance_type_code = 'A') THEN
82451   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82452 END IF;
82453 
82454 --
82455 
82456 
82457 --
82458 AcctLineType_98 (
82459  p_application_id  => p_application_id
82460  ,p_event_id     => l_event_id
82461  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82462  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82463  ,p_actual_flag => l_actual_flag
82464  ,p_balance_type_code => l_balance_type_code
82465  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82466  
82467  , p_source_4 => l_array_source_4(Idx)
82468  , p_source_5 => l_array_source_5(Idx)
82469  , p_source_7 => l_array_source_7(Idx)
82470  , p_source_8 => l_array_source_8(Idx)
82471  , p_source_23 => l_array_source_23(Idx)
82472  , p_source_24 => l_array_source_24(Idx)
82473  , p_source_25 => l_array_source_25(Idx)
82474  , p_source_26 => l_array_source_26(Idx)
82475  , p_source_27 => l_array_source_27(Idx)
82476  , p_source_28 => l_array_source_28(Idx)
82477  , p_source_29 => l_array_source_29(Idx)
82478  , p_source_30 => l_array_source_30(Idx)
82479  , p_source_31 => l_array_source_31(Idx)
82480  , p_source_32 => l_array_source_32(Idx)
82481  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
82482  , p_source_34 => l_array_source_34(Idx)
82483  , p_source_35 => l_array_source_35(Idx)
82484  , p_source_35_meaning => l_array_source_35_meaning(Idx)
82485  , p_source_36 => l_array_source_36(Idx)
82486  );
82487 If(l_balance_type_code = 'A') THEN
82488   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82489 END IF;
82490 
82491 --
82492 
82493       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
82494       -- or secondary ledger that has different currency with primary
82495       -- or alc that is calculated by sla
82496       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
82497             (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'))
82498 
82499 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
82500 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
82501           AND (l_actual_flag = 'A')) THEN
82502         XLA_AE_LINES_PKG.CreateGainOrLossLines(
82503           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
82504          ,p_application_id   => p_application_id
82505          ,p_amb_context_code => 'DEFAULT'
82506          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
82507          ,p_event_class_code => C_EVENT_CLASS_CODE
82508          ,p_event_type_code  => C_EVENT_TYPE_CODE
82509          
82510          ,p_gain_ccid        => -1
82511          ,p_loss_ccid        => -1
82512 
82513          ,p_actual_flag      => l_actual_flag
82514          ,p_enc_flag         => null
82515          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
82516          ,p_enc_g_l_ref      => null
82517          );
82518       END IF;
82519    END IF;
82520 END IF;
82521 
82522    ELSE
82523       --
82524       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82525       --
82526       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82527          trace
82528             (p_msg      => 'Trancaction revesal option is Y'
82529             ,p_level    => C_LEVEL_STATEMENT
82530             ,p_module   => l_log_module);
82531       END IF;
82532    END IF;
82533 
82534 END LOOP;
82535 l_result := XLA_AE_LINES_PKG.InsertLines ;
82536 end loop;
82537 close line_cur;
82538 
82539 
82540 --
82541 -- insert headers into xla_ae_headers_gt table
82542 --
82543 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
82544 
82545 -- insert into errors table here.
82546 
82547 END LOOP;
82548 
82549 --
82550 -- 4865292
82551 --
82552 -- Compare g_hdr_extract_count with event count in
82553 -- CreateHeadersAndLines.
82554 --
82555 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
82556 
82557 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82558    trace (p_msg     => '# rows extracted from header extract objects '
82559                     || ' (running total): '
82560                     || g_hdr_extract_count
82561          ,p_level   => C_LEVEL_STATEMENT
82562          ,p_module  => l_log_module);
82563 END IF;
82564 
82568 --
82565 CLOSE header_cur;
82566 --
82567 
82569 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82570    trace
82571       (p_msg      => 'END of EventClass_153'
82572       ,p_level    => C_LEVEL_PROCEDURE
82573       ,p_module   => l_log_module);
82574 END IF;
82575 --
82576 RETURN l_result;
82577 EXCEPTION
82578 WHEN xla_exceptions_pkg.application_exception THEN
82579    
82580 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
82581 
82582    
82583 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
82584 
82585    RAISE;
82586 WHEN OTHERS THEN
82587    xla_exceptions_pkg.raise_message
82588       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_153');
82589 END EventClass_153;
82590 --
82591 
82592 ---------------------------------------
82593 --
82594 -- PRIVATE PROCEDURE
82595 --         insert_sources_154
82596 --
82597 ----------------------------------------
82598 --
82599 PROCEDURE insert_sources_154(
82600                                 p_target_ledger_id       IN NUMBER
82601                               , p_language               IN VARCHAR2
82602                               , p_sla_ledger_id          IN NUMBER
82603                               , p_pad_start_date         IN DATE
82604                               , p_pad_end_date           IN DATE
82605                          )
82606 IS
82607 
82608 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ALL';
82609 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVENTORY_COST';
82610 p_apps_owner                   VARCHAR2(30);
82611 l_log_module                   VARCHAR2(240);
82612 BEGIN
82613 IF g_log_enabled THEN
82614       l_log_module := C_DEFAULT_MODULE||'.insert_sources_154';
82615 END IF;
82616 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82617 
82618       trace
82619          (p_msg      => 'BEGIN of insert_sources_154'
82620          ,p_level    => C_LEVEL_PROCEDURE
82621          ,p_module   => l_log_module);
82622 
82623 END IF;
82624 
82625 -- select APPS owner
82626 SELECT oracle_username
82627   INTO p_apps_owner
82628   FROM fnd_oracle_userid
82629  WHERE read_only_flag = 'U'
82630 ;
82631 
82632 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82633       trace
82634          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
82635                         ' - p_language = '||p_language||
82636                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
82637                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
82638                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
82639                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
82640          ,p_level    => C_LEVEL_STATEMENT
82641          ,p_module   => l_log_module);
82642 END IF;
82643 
82644 
82645 --
82646 INSERT INTO xla_diag_sources --hdr2
82647 (
82648         event_id
82649       , ledger_id
82650       , sla_ledger_id
82651       , description_language
82652       , object_name
82653       , object_type_code
82654       , line_number
82655       , source_application_id
82656       , source_type_code
82657       , source_code
82658       , source_value
82659       , source_meaning
82660       , created_by
82661       , creation_date
82662       , last_update_date
82663       , last_updated_by
82664       , last_update_login
82665       , program_update_date
82666       , program_application_id
82667       , program_id
82668       , request_id
82669 )
82670 SELECT
82671         event_id
82672       , p_target_ledger_id
82673       , p_sla_ledger_id
82674       , p_language
82675       , object_name
82676       , object_type_code
82677       , line_number
82678       , source_application_id
82679       , source_type_code
82680       , source_code
82681       , SUBSTR(source_value ,1,1996)
82682       , SUBSTR(source_meaning ,1,200)
82683       , xla_environment_pkg.g_Usr_Id
82684       , TRUNC(SYSDATE)
82685       , TRUNC(SYSDATE)
82686       , xla_environment_pkg.g_Usr_Id
82687       , xla_environment_pkg.g_Login_Id
82688       , TRUNC(SYSDATE)
82689       , xla_environment_pkg.g_Prog_Appl_Id
82690       , xla_environment_pkg.g_Prog_Id
82691       , xla_environment_pkg.g_Req_Id
82692   FROM (
82693        SELECT xet.event_id                  event_id
82694             , 0                          line_number
82695             , CASE r
82696                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
82697                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
82698                 
82699                ELSE null
82700               END                           object_name
82701             , CASE r
82702                 WHEN 1 THEN 'HEADER' 
82703                 WHEN 2 THEN 'HEADER' 
82704                 
82705                 ELSE null
82706               END                           object_type_code
82707             , CASE r
82708                 WHEN 1 THEN '275' 
82709                 WHEN 2 THEN '275' 
82710                 
82711                 ELSE null
82712               END                           source_application_id
82713             , 'S'             source_type_code
82714             , CASE r
82715                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
82716                 WHEN 2 THEN 'GL_DATE' 
82717                 
82718                 ELSE null
82719               END                           source_code
82720             , CASE r
82721                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
82722                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
82723                 
82724                 ELSE null
82725               END                           source_value
82726             , null              source_meaning
82730          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
82727          FROM xla_events_gt     xet  
82728       , PA_XLA_EXP_HEADER_V  h2
82729              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
82731            AND xet.event_class_code = C_EVENT_CLASS_CODE
82732               AND h2.event_id = xet.event_id
82733 
82734 )
82735 ;
82736 --
82737 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82738 
82739       trace
82740          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
82741          ,p_level    => C_LEVEL_STATEMENT
82742          ,p_module   => l_log_module);
82743 
82744 END IF;
82745 --
82746 
82747 
82748 
82749 --
82750 INSERT INTO xla_diag_sources  --line2
82751 (
82752         event_id
82753       , ledger_id
82754       , sla_ledger_id
82755       , description_language
82756       , object_name
82757       , object_type_code
82758       , line_number
82759       , source_application_id
82760       , source_type_code
82761       , source_code
82762       , source_value
82763       , source_meaning
82764       , created_by
82765       , creation_date
82766       , last_update_date
82767       , last_updated_by
82768       , last_update_login
82769       , program_update_date
82770       , program_application_id
82771       , program_id
82772       , request_id
82773 )
82774 SELECT  event_id
82775       , p_target_ledger_id
82776       , p_sla_ledger_id
82777       , p_language
82778       , object_name
82779       , object_type_code
82780       , line_number
82781       , source_application_id
82782       , source_type_code
82783       , source_code
82784       , SUBSTR(source_value,1,1996)
82785       , SUBSTR(source_meaning ,1,200)
82786       , xla_environment_pkg.g_Usr_Id
82787       , TRUNC(SYSDATE)
82788       , TRUNC(SYSDATE)
82789       , xla_environment_pkg.g_Usr_Id
82790       , xla_environment_pkg.g_Login_Id
82791       , TRUNC(SYSDATE)
82792       , xla_environment_pkg.g_Prog_Appl_Id
82793       , xla_environment_pkg.g_Prog_Id
82794       , xla_environment_pkg.g_Req_Id
82795   FROM (
82796        SELECT xet.event_id                  event_id
82797             , l1.line_number                 line_number
82798             , CASE r
82799                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
82800                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
82801                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
82802                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
82803                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
82804                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
82805                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
82806                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
82807                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
82808                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
82809                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
82810                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
82811                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
82812                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
82813                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
82814                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
82815                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
82816                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
82817                 
82818                ELSE null
82819               END                           object_name
82820             , CASE r
82821                 WHEN 1 THEN 'LINE' 
82822                 WHEN 2 THEN 'LINE' 
82823                 WHEN 3 THEN 'LINE' 
82824                 WHEN 4 THEN 'LINE' 
82825                 WHEN 5 THEN 'LINE' 
82826                 WHEN 6 THEN 'LINE' 
82827                 WHEN 7 THEN 'LINE' 
82828                 WHEN 8 THEN 'LINE' 
82829                 WHEN 9 THEN 'LINE' 
82830                 WHEN 10 THEN 'LINE' 
82831                 WHEN 11 THEN 'LINE' 
82832                 WHEN 12 THEN 'LINE' 
82833                 WHEN 13 THEN 'LINE' 
82834                 WHEN 14 THEN 'LINE' 
82835                 WHEN 15 THEN 'LINE' 
82836                 WHEN 16 THEN 'LINE' 
82837                 WHEN 17 THEN 'LINE' 
82838                 WHEN 18 THEN 'LINE' 
82839                 
82840                 ELSE null
82841               END                           object_type_code
82842             , CASE r
82843                 WHEN 1 THEN '275' 
82844                 WHEN 2 THEN '275' 
82845                 WHEN 3 THEN '275' 
82846                 WHEN 4 THEN '275' 
82847                 WHEN 5 THEN '275' 
82848                 WHEN 6 THEN '275' 
82849                 WHEN 7 THEN '275' 
82850                 WHEN 8 THEN '275' 
82851                 WHEN 9 THEN '275' 
82852                 WHEN 10 THEN '275' 
82853                 WHEN 11 THEN '275' 
82854                 WHEN 12 THEN '275' 
82855                 WHEN 13 THEN '275' 
82856                 WHEN 14 THEN '275' 
82857                 WHEN 15 THEN '275' 
82858                 WHEN 16 THEN '275' 
82859                 WHEN 17 THEN '275' 
82860                 WHEN 18 THEN '275' 
82861                 
82862                 ELSE null
82863               END                           source_application_id
82864             , 'S'             source_type_code
82865             , CASE r
82866                 WHEN 1 THEN 'COST_CCID' 
82867                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
82868                 WHEN 3 THEN 'ADJ_COST_CCID' 
82869                 WHEN 4 THEN 'COST_CLEARING_CCID' 
82870                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
82871                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
82872                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
82873                 WHEN 8 THEN 'ENTERED_RAW_COST' 
82874                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
82878                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
82875                 WHEN 10 THEN 'ACCT_RAW_COST' 
82876                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
82877                 WHEN 12 THEN 'EXCHANGE_RATE' 
82879                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
82880                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
82881                 WHEN 16 THEN 'LINE_NUMBER' 
82882                 WHEN 17 THEN 'LINE_TYPE' 
82883                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
82884                 
82885                 ELSE null
82886               END                           source_code
82887             , CASE r
82888                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
82889                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
82890                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
82891                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
82892                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
82893                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
82894                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
82895                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
82896                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
82897                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
82898                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
82899                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
82900                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
82901                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
82902                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
82903                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
82904                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
82905                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
82906                 
82907                 ELSE null
82908               END                           source_value
82909             , CASE r
82910                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
82911                           103371
82912                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
82913                          ,'ALLOW_OVERRIDE_CCID_FLAG'
82914                          ,'S'
82915                          ,275)
82916                 WHEN 17 THEN fvl35.meaning
82917                 
82918                 ELSE null
82919               END               source_meaning
82920          FROM  xla_events_gt     xet  
82921         , PA_XLA_CDL_LINES_V  l1
82922   , fnd_lookup_values    fvl35
82923             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
82924         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
82925           AND xet.event_class_code = C_EVENT_CLASS_CODE
82926             AND l1.event_id          = xet.event_id
82927    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
82928   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
82929   AND fvl35.view_application_id(+) = 275
82930   AND fvl35.language(+)            = USERENV('LANG')
82931   
82932 )
82933 ;
82934 --
82935 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82936 
82937       trace
82938          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
82939          ,p_level    => C_LEVEL_STATEMENT
82940          ,p_module   => l_log_module);
82941 
82942 END IF;
82943 
82944 
82945 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82946       trace
82947          (p_msg      => 'END of insert_sources_154'
82948          ,p_level    => C_LEVEL_PROCEDURE
82949          ,p_module   => l_log_module);
82950 END IF;
82951 EXCEPTION
82952   WHEN xla_exceptions_pkg.application_exception THEN
82953       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
82954             trace
82955                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
82956                ,p_level    => C_LEVEL_EXCEPTION
82957                ,p_module   => l_log_module);
82958       END IF;
82959       RAISE;
82960   WHEN OTHERS THEN
82961       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
82962             trace
82963                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
82964                ,p_level    => C_LEVEL_EXCEPTION
82965                ,p_module   => l_log_module);
82966        END IF;
82967        xla_exceptions_pkg.raise_message
82968            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_154');
82969 END insert_sources_154;
82970 --
82971 
82972 ---------------------------------------
82973 --
82974 -- PRIVATE FUNCTION
82975 --         EventClass_154
82976 --
82977 ----------------------------------------
82978 --
82979 FUNCTION EventClass_154
82980        (p_application_id         IN NUMBER
82981        ,p_base_ledger_id         IN NUMBER
82982        ,p_target_ledger_id       IN NUMBER
82983        ,p_language               IN VARCHAR2
82984        ,p_currency_code          IN VARCHAR2
82985        ,p_sla_ledger_id          IN NUMBER
82986        ,p_pad_start_date         IN DATE
82987        ,p_pad_end_date           IN DATE
82988        ,p_primary_ledger_id      IN NUMBER)
82989 RETURN BOOLEAN IS
82990 --
82991 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVENTORY_COST_ALL';
82992 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVENTORY_COST';
82993 
82994 l_calculate_acctd_flag   VARCHAR2(1) :='N';
82995 l_calculate_g_l_flag     VARCHAR2(1) :='N';
82996 --
82997 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82998 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82999 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83000 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83001 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83002 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83006 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83003 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83004 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83005 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83007 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83008 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83009 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83010 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83011 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83012 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83013 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83014 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83015 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83016 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83017 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83018 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83019 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
83020 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83021 
83022 l_event_id                             NUMBER;
83023 l_previous_event_id                    NUMBER;
83024 l_first_event_id                       NUMBER;
83025 l_last_event_id                        NUMBER;
83026 
83027 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
83028 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
83029 --
83030 --
83031 l_result                    BOOLEAN := TRUE;
83032 l_rows                      NUMBER  := 1000;
83033 l_event_type_name           VARCHAR2(80) := 'All';
83034 l_event_class_name          VARCHAR2(80) := 'Inventory Cost';
83035 l_description               VARCHAR2(4000);
83036 l_transaction_reversal      NUMBER;
83037 l_ae_header_id              NUMBER;
83038 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
83039 l_log_module                VARCHAR2(240);
83040 --
83041 l_acct_reversal_source      VARCHAR2(30);
83042 l_trx_reversal_source       VARCHAR2(30);
83043 
83044 l_continue_with_lines       BOOLEAN := TRUE;
83045 --
83046 l_acc_rev_gl_date_source    DATE;                      -- 4262811
83047 --
83048 type t_array_event_id is table of number index by binary_integer;
83049 
83050 l_rec_array_event                    t_rec_array_event;
83051 l_null_rec_array_event               t_rec_array_event;
83052 l_array_ae_header_id                 xla_number_array_type;
83053 l_actual_flag                        VARCHAR2(1) := NULL;
83054 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
83055 l_balance_type_code                  VARCHAR2(1) :=NULL;
83056 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
83057 
83058 --
83059 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
83060 --
83061 
83062 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
83063 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
83064 
83065 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
83066 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
83067 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
83068 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
83069 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
83070 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
83071 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
83072 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
83073 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
83074 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
83075 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
83076 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
83077 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
83078 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
83079 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
83080 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
83081 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
83082 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
83083 
83084 l_array_source_33              t_array_source_33;
83085 l_array_source_75              t_array_source_75;
83086 
83087 l_array_source_4      t_array_source_4;
83088 l_array_source_5      t_array_source_5;
83089 l_array_source_6      t_array_source_6;
83090 l_array_source_7      t_array_source_7;
83091 l_array_source_8      t_array_source_8;
83092 l_array_source_23      t_array_source_23;
83093 l_array_source_24      t_array_source_24;
83094 l_array_source_25      t_array_source_25;
83095 l_array_source_26      t_array_source_26;
83096 l_array_source_27      t_array_source_27;
83097 l_array_source_28      t_array_source_28;
83098 l_array_source_29      t_array_source_29;
83099 l_array_source_30      t_array_source_30;
83100 l_array_source_31      t_array_source_31;
83104 l_array_source_35_meaning      t_array_lookup_meaning;
83101 l_array_source_32      t_array_source_32;
83102 l_array_source_34      t_array_source_34;
83103 l_array_source_35      t_array_source_35;
83105 l_array_source_36      t_array_source_36;
83106 
83107 --
83108 CURSOR header_cur
83109 IS
83110 SELECT /*+ leading(xet) cardinality(xet,1) */
83111 -- Event Class Code: INVENTORY_COST
83112     xet.entity_id
83113    ,xet.legal_entity_id
83114    ,xet.entity_code
83115    ,xet.transaction_number
83116    ,xet.event_id
83117    ,xet.event_class_code
83118    ,xet.event_type_code
83119    ,xet.event_number
83120    ,xet.event_date
83121    ,xet.transaction_date
83122    ,xet.reference_num_1
83123    ,xet.reference_num_2
83124    ,xet.reference_num_3
83125    ,xet.reference_num_4
83126    ,xet.reference_char_1
83127    ,xet.reference_char_2
83128    ,xet.reference_char_3
83129    ,xet.reference_char_4
83130    ,xet.reference_date_1
83131    ,xet.reference_date_2
83132    ,xet.reference_date_3
83133    ,xet.reference_date_4
83134    ,xet.event_created_by
83135    ,xet.budgetary_control_flag 
83136   , h2.EXPENDITURE_ITEM_ID    source_33
83137   , h2.GL_DATE    source_75
83138   FROM xla_events_gt     xet 
83139   , PA_XLA_EXP_HEADER_V  h2
83140  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
83141    and xet.event_class_code = C_EVENT_CLASS_CODE
83142    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
83143 
83144  ORDER BY event_id
83145 ;
83146 
83147 
83148 --
83149 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
83150 IS
83151 SELECT  /*+ leading(xet) cardinality(xet,1) */
83152 -- Event Class Code: INVENTORY_COST
83153     xet.entity_id
83154    ,xet.legal_entity_id
83155    ,xet.entity_code
83156    ,xet.transaction_number
83157    ,xet.event_id
83158    ,xet.event_class_code
83159    ,xet.event_type_code
83160    ,xet.event_number
83161    ,xet.event_date
83162    ,xet.transaction_date
83163    ,xet.reference_num_1
83164    ,xet.reference_num_2
83165    ,xet.reference_num_3
83166    ,xet.reference_num_4
83167    ,xet.reference_char_1
83168    ,xet.reference_char_2
83169    ,xet.reference_char_3
83170    ,xet.reference_char_4
83171    ,xet.reference_date_1
83172    ,xet.reference_date_2
83173    ,xet.reference_date_3
83174    ,xet.reference_date_4
83175    ,xet.event_created_by
83176    ,xet.budgetary_control_flag
83177  , l1.LINE_NUMBER  
83178   , l1.COST_CCID    source_4
83179   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
83180   , l1.ADJ_COST_CCID    source_6
83181   , l1.COST_CLEARING_CCID    source_7
83182   , l1.ADJ_COST_CLEARING_CCID    source_8
83183   , l1.REVERSING_LINE_FLAG    source_23
83184   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
83185   , l1.ENTERED_RAW_COST    source_25
83186   , l1.ENTERED_CURRENCY_CODE    source_26
83187   , l1.ACCT_RAW_COST    source_27
83188   , l1.EXCHANGE_RATE_DATE    source_28
83189   , l1.EXCHANGE_RATE    source_29
83190   , l1.EXCHANGE_RATE_TYPE    source_30
83191   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
83192   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
83193   , l1.LINE_NUMBER    source_34
83194   , l1.LINE_TYPE    source_35
83195   , fvl35.meaning   source_35_meaning
83196   , l1.LINE_NUM_REVERSED    source_36
83197   FROM xla_events_gt     xet 
83198   , PA_XLA_CDL_LINES_V  l1
83199   , fnd_lookup_values    fvl35
83200  WHERE xet.event_id between x_first_event_id and x_last_event_id
83201    and xet.event_date between p_pad_start_date and p_pad_end_date
83202    and xet.event_class_code = C_EVENT_CLASS_CODE
83203    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
83204    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
83205   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
83206   AND fvl35.view_application_id(+) = 275
83207   AND fvl35.language(+)            = USERENV('LANG')
83208   ;
83209 
83210 --
83211 BEGIN
83212 IF g_log_enabled THEN
83213    l_log_module := C_DEFAULT_MODULE||'.EventClass_154';
83214 END IF;
83215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83216    trace
83217       (p_msg      => 'BEGIN of EventClass_154'
83218       ,p_level    => C_LEVEL_PROCEDURE
83219       ,p_module   => l_log_module);
83220 END IF;
83221 
83222 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83223    trace
83224       (p_msg      => 'p_application_id = '||p_application_id||
83225                      ' - p_base_ledger_id = '||p_base_ledger_id||
83226                      ' - p_target_ledger_id  = '||p_target_ledger_id||
83227                      ' - p_language = '||p_language||
83228                      ' - p_currency_code = '||p_currency_code||
83229                      ' - p_sla_ledger_id = '||p_sla_ledger_id
83230       ,p_level    => C_LEVEL_STATEMENT
83231       ,p_module   => l_log_module);
83232 END IF;
83233 --
83234 -- initialze arrays
83235 --
83236 g_array_event.DELETE;
83237 l_rec_array_event := l_null_rec_array_event;
83238 --
83239 --------------------------------------
83240 -- 4262811 Initialze MPA Line Number
83241 --------------------------------------
83242 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
83243 
83244 --
83245 
83246 --
83247 OPEN header_cur;
83248 --
83249 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83250    trace
83251    (p_msg      => 'SQL - FETCH header_cur'
83252    ,p_level    => C_LEVEL_STATEMENT
83253    ,p_module   => l_log_module);
83254 END IF;
83255 --
83256 LOOP
83257 FETCH header_cur BULK COLLECT INTO
83258         l_array_entity_id
83259       , l_array_legal_entity_id
83260       , l_array_entity_code
83261       , l_array_transaction_num
83265       , l_array_event_number
83262       , l_array_event_id
83263       , l_array_class_code
83264       , l_array_event_type
83266       , l_array_event_date
83267       , l_array_transaction_date
83268       , l_array_reference_num_1
83269       , l_array_reference_num_2
83270       , l_array_reference_num_3
83271       , l_array_reference_num_4
83272       , l_array_reference_char_1
83273       , l_array_reference_char_2
83274       , l_array_reference_char_3
83275       , l_array_reference_char_4
83276       , l_array_reference_date_1
83277       , l_array_reference_date_2
83278       , l_array_reference_date_3
83279       , l_array_reference_date_4
83280       , l_array_event_created_by
83281       , l_array_budgetary_control_flag 
83282       , l_array_source_33
83283       , l_array_source_75
83284       LIMIT l_rows;
83285 --
83286 IF (C_LEVEL_EVENT >= g_log_level) THEN
83287    trace
83288    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
83289    ,p_level    => C_LEVEL_EVENT
83290    ,p_module   => l_log_module);
83291 END IF;
83292 --
83293 EXIT WHEN l_array_entity_id.COUNT = 0;
83294 
83295 -- initialize arrays
83296 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
83297 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
83298 
83299 --
83300 -- Bug 4458708
83301 --
83302 XLA_AE_LINES_PKG.g_LineNumber := 0;
83303 
83304 
83305 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
83306 g_last_hdr_idx := l_array_event_id.LAST;
83307 --
83308 -- loop for the headers. Each iteration is for each header extract row
83309 -- fetched in header cursor
83310 --
83311 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
83312 
83313 --
83314 -- set event info as cache for other routines to refer event attributes
83315 --
83316 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
83317    (p_application_id           => p_application_id
83318    ,p_primary_ledger_id        => p_primary_ledger_id
83319    ,p_base_ledger_id           => p_base_ledger_id
83320    ,p_target_ledger_id         => p_target_ledger_id
83321    ,p_entity_id                => l_array_entity_id(hdr_idx)
83322    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
83323    ,p_entity_code              => l_array_entity_code(hdr_idx)
83324    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
83325    ,p_event_id                 => l_array_event_id(hdr_idx)
83326    ,p_event_class_code         => l_array_class_code(hdr_idx)
83327    ,p_event_type_code          => l_array_event_type(hdr_idx)
83328    ,p_event_number             => l_array_event_number(hdr_idx)
83329    ,p_event_date               => l_array_event_date(hdr_idx)
83330    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
83331    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
83332    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
83333    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
83334    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
83335    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
83336    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
83337    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
83338    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
83339    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
83340    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
83341    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
83342    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
83343    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
83344    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
83345 
83346 --
83347 -- set the status of entry to C_VALID (0)
83348 --
83349 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
83350 
83351 --
83352 -- initialize a row for ae header
83353 --
83354 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
83355 
83356 l_event_id := l_array_event_id(hdr_idx);
83357 
83358 --
83359 -- storing the hdr_idx for event. May be used by line cursor.
83360 --
83361 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
83362 
83363 --
83364 -- store sources from header extract. This can be improved to
83365 -- store only those sources from header extract that may be used in lines
83366 --
83367 
83368 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
83369 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
83370 
83371 --
83372 -- initilaize the status of ae headers for diffrent balance types
83373 -- the status is initialised to C_NOT_CREATED (2)
83374 --
83375 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83376 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83377 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
83378 
83379 --
83380 -- call api to validate and store accounting attributes for header
83381 --
83382 
83383 ------------------------------------------------------------
83384 -- Accrual Reversal : to get date for Standard Source (NONE)
83385 ------------------------------------------------------------
83386 l_acc_rev_gl_date_source := NULL;
83387 
83388      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
83389       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
83390 
83391 
83392 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
83393 
83394 XLA_AE_HEADER_PKG.SetJeCategoryName;
83395 
83399 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
83396 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
83397 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
83398 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
83400 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
83401 
83402 
83403 -- No header level analytical criteria
83404 
83405 --
83406 --accounting attribute enhancement, bug 3612931
83407 --
83408 l_trx_reversal_source := SUBSTR(NULL, 1,30);
83409 
83410 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
83411    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
83412 
83413    xla_accounting_err_pkg.build_message
83414       (p_appli_s_name            => 'XLA'
83415       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
83416       ,p_token_1                 => 'ACCT_ATTR_NAME'
83417       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
83418       ,p_token_2                 => 'PRODUCT_NAME'
83419       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
83420       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
83421       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
83422       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
83423 
83424 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
83425    --
83426    -- following sets the accounting attributes needed to reverse
83427    -- accounting for a distributeion
83428    --
83429    xla_ae_lines_pkg.SetTrxReversalAttrs
83430       (p_event_id              => l_event_id
83431       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
83432       ,p_trx_reversal_source   => l_trx_reversal_source);
83433 
83434 END IF;
83435 
83436 
83437 ----------------------------------------------------------------
83438 -- 4262811 -  update the header statuses to invalid in need be
83439 ----------------------------------------------------------------
83440 --
83441 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
83442 
83443 
83444   -----------------------------------------------
83445   -- No accrual reversal for the event class/type
83446   -----------------------------------------------
83447 ----------------------------------------------------------------
83448 
83449 --
83450 -- this ends the header loop iteration for one bulk fetch
83451 --
83452 END LOOP;
83453 
83454 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
83455 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
83456 
83457 --
83458 -- insert dummy rows into lines gt table that were created due to
83459 -- transaction reversals
83460 --
83461 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
83462    l_result := XLA_AE_LINES_PKG.InsertLines;
83463 END IF;
83464 
83465 --
83466 -- reset the temp_line_num for each set of events fetched from header
83467 -- cursor rather than doing it for each new event in line cursor
83468 -- Bug 3939231
83469 --
83470 xla_ae_lines_pkg.g_temp_line_num := 0;
83471 
83472 
83473 
83474 --
83475 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
83476 --
83477 --
83478 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83479 
83480       trace
83481          (p_msg      => 'SQL - FETCH line_cur'
83482          ,p_level    => C_LEVEL_STATEMENT
83483          ,p_module   => l_log_module);
83484 
83485 END IF;
83486 --
83487 --
83488 LOOP
83489   --
83490   FETCH line_cur BULK COLLECT INTO
83491         l_array_entity_id
83492       , l_array_legal_entity_id
83493       , l_array_entity_code
83494       , l_array_transaction_num
83495       , l_array_event_id
83496       , l_array_class_code
83497       , l_array_event_type
83498       , l_array_event_number
83499       , l_array_event_date
83500       , l_array_transaction_date
83501       , l_array_reference_num_1
83502       , l_array_reference_num_2
83503       , l_array_reference_num_3
83504       , l_array_reference_num_4
83505       , l_array_reference_char_1
83506       , l_array_reference_char_2
83507       , l_array_reference_char_3
83508       , l_array_reference_char_4
83509       , l_array_reference_date_1
83510       , l_array_reference_date_2
83511       , l_array_reference_date_3
83512       , l_array_reference_date_4
83513       , l_array_event_created_by
83514       , l_array_budgetary_control_flag
83515       , l_array_extract_line_num 
83516       , l_array_source_4
83517       , l_array_source_5
83518       , l_array_source_6
83519       , l_array_source_7
83520       , l_array_source_8
83521       , l_array_source_23
83522       , l_array_source_24
83523       , l_array_source_25
83524       , l_array_source_26
83525       , l_array_source_27
83526       , l_array_source_28
83527       , l_array_source_29
83528       , l_array_source_30
83529       , l_array_source_31
83530       , l_array_source_32
83531       , l_array_source_34
83532       , l_array_source_35
83533       , l_array_source_35_meaning
83534       , l_array_source_36
83535       LIMIT l_rows;
83536 
83537   --
83538   IF (C_LEVEL_EVENT >= g_log_level) THEN
83539             trace
83540                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
83541                ,p_level    => C_LEVEL_EVENT
83542                ,p_module   => l_log_module);
83543   END IF;
83547   XLA_AE_LINES_PKG.g_rec_lines := null;
83544   --
83545   EXIT WHEN l_array_entity_id.count = 0;
83546 
83548 
83549 --
83550 -- Bug 4458708
83551 --
83552 XLA_AE_LINES_PKG.g_LineNumber := 0;
83553 --
83554 --
83555 
83556 FOR Idx IN 1..l_array_event_id.count LOOP
83557    --
83558    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
83559    --
83560    l_event_id := l_array_event_id(idx);  -- 5648433
83561 
83562    --
83563    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
83564    --
83565 
83566    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
83567              (g_array_event(l_event_id).array_value_num('header_index'))
83568          ,'N'
83569          ) <> 'Y'
83570    THEN
83571       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83572          trace
83573             (p_msg      => 'Trancaction revesal option is not Y '
83574             ,p_level    => C_LEVEL_STATEMENT
83575             ,p_module   => l_log_module);
83576       END IF;
83577 
83578 --
83579 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
83580 --
83581 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
83582 --
83583 -- set event info as cache for other routines to refer event attributes
83584 --
83585 
83586 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
83587    l_previous_event_id := l_event_id;
83588 
83589    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
83590       (p_application_id           => p_application_id
83591       ,p_primary_ledger_id        => p_primary_ledger_id
83592       ,p_base_ledger_id           => p_base_ledger_id
83593       ,p_target_ledger_id         => p_target_ledger_id
83594       ,p_entity_id                => l_array_entity_id(Idx)
83595       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
83596       ,p_entity_code              => l_array_entity_code(Idx)
83597       ,p_transaction_num          => l_array_transaction_num(Idx)
83598       ,p_event_id                 => l_array_event_id(Idx)
83599       ,p_event_class_code         => l_array_class_code(Idx)
83600       ,p_event_type_code          => l_array_event_type(Idx)
83601       ,p_event_number             => l_array_event_number(Idx)
83602       ,p_event_date               => l_array_event_date(Idx)
83603       ,p_transaction_date         => l_array_transaction_date(Idx)
83604       ,p_reference_num_1          => l_array_reference_num_1(Idx)
83605       ,p_reference_num_2          => l_array_reference_num_2(Idx)
83606       ,p_reference_num_3          => l_array_reference_num_3(Idx)
83607       ,p_reference_num_4          => l_array_reference_num_4(Idx)
83608       ,p_reference_char_1         => l_array_reference_char_1(Idx)
83609       ,p_reference_char_2         => l_array_reference_char_2(Idx)
83610       ,p_reference_char_3         => l_array_reference_char_3(Idx)
83611       ,p_reference_char_4         => l_array_reference_char_4(Idx)
83612       ,p_reference_date_1         => l_array_reference_date_1(Idx)
83613       ,p_reference_date_2         => l_array_reference_date_2(Idx)
83614       ,p_reference_date_3         => l_array_reference_date_3(Idx)
83615       ,p_reference_date_4         => l_array_reference_date_4(Idx)
83616       ,p_event_created_by         => l_array_event_created_by(Idx)
83617       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
83618        --
83619 END IF;
83620 
83621 
83622 
83623 --
83624 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
83625 
83626 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
83627 
83628 IF l_continue_with_lines THEN
83629    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
83630       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
83631 
83632       xla_accounting_err_pkg.build_message
83633          (p_appli_s_name            => 'XLA'
83634          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
83635          ,p_token_1                 => 'LINE_NUMBER'
83636          ,p_value_1                 => l_array_extract_line_num(Idx)
83637          ,p_token_2                 => 'PRODUCT_NAME'
83638          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
83639          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
83640          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
83641          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
83642 
83643    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
83644       --
83645       -- following sets the accounting attributes needed to reverse
83646       -- accounting for a distributeion
83647       --
83648 
83649       --
83650       -- 5217187
83651       --
83652       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
83653       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
83654                                        g_array_event(l_event_id).array_value_num('header_index'));
83655       --
83656       --
83657 
83658       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
83659       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
83660       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
83661       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
83662       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
83663       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
83664       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
83665       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
83666       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
83670       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
83667       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
83668       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
83669       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
83671       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
83672       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
83673       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
83674       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
83675       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
83676       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
83677       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
83678       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
83679       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
83680       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
83681       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
83682       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
83683       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
83684       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
83685       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
83686       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
83687       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
83688       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
83689       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
83690       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
83691       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
83692       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
83693       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
83694       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
83695       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
83696       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
83697       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
83698       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
83699       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
83700       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
83701       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
83702       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
83703       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
83704       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
83705       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
83706 
83707 
83708       xla_ae_lines_pkg.SetAcctReversalAttrs
83709          (p_event_id             => l_event_id
83710          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
83711          ,p_calculate_acctd_flag => l_calculate_acctd_flag
83712          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
83713    END IF;
83714 
83715    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
83716        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
83717 
83718 --
83719 AcctLineType_68 (
83720  p_application_id  => p_application_id
83721  ,p_event_id     => l_event_id
83722  ,p_calculate_acctd_flag => l_calculate_acctd_flag
83723  ,p_calculate_g_l_flag => l_calculate_g_l_flag
83724  ,p_actual_flag => l_actual_flag
83725  ,p_balance_type_code => l_balance_type_code
83726  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
83727  
83728  , p_source_4 => l_array_source_4(Idx)
83729  , p_source_5 => l_array_source_5(Idx)
83730  , p_source_6 => l_array_source_6(Idx)
83731  , p_source_7 => l_array_source_7(Idx)
83732  , p_source_23 => l_array_source_23(Idx)
83733  , p_source_24 => l_array_source_24(Idx)
83734  , p_source_25 => l_array_source_25(Idx)
83735  , p_source_26 => l_array_source_26(Idx)
83736  , p_source_27 => l_array_source_27(Idx)
83737  , p_source_28 => l_array_source_28(Idx)
83738  , p_source_29 => l_array_source_29(Idx)
83739  , p_source_30 => l_array_source_30(Idx)
83740  , p_source_31 => l_array_source_31(Idx)
83741  , p_source_32 => l_array_source_32(Idx)
83742  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
83743  , p_source_34 => l_array_source_34(Idx)
83744  , p_source_35 => l_array_source_35(Idx)
83745  , p_source_35_meaning => l_array_source_35_meaning(Idx)
83746  , p_source_36 => l_array_source_36(Idx)
83747  );
83748 If(l_balance_type_code = 'A') THEN
83749   l_actual_gain_loss_ref := l_gain_or_loss_ref;
83750 END IF;
83751 
83752 --
83753 
83754 
83755 --
83756 AcctLineType_89 (
83757  p_application_id  => p_application_id
83758  ,p_event_id     => l_event_id
83759  ,p_calculate_acctd_flag => l_calculate_acctd_flag
83760  ,p_calculate_g_l_flag => l_calculate_g_l_flag
83761  ,p_actual_flag => l_actual_flag
83762  ,p_balance_type_code => l_balance_type_code
83763  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
83764  
83765  , p_source_4 => l_array_source_4(Idx)
83766  , p_source_5 => l_array_source_5(Idx)
83767  , p_source_7 => l_array_source_7(Idx)
83768  , p_source_8 => l_array_source_8(Idx)
83769  , p_source_23 => l_array_source_23(Idx)
83770  , p_source_24 => l_array_source_24(Idx)
83771  , p_source_25 => l_array_source_25(Idx)
83772  , p_source_26 => l_array_source_26(Idx)
83773  , p_source_27 => l_array_source_27(Idx)
83774  , p_source_28 => l_array_source_28(Idx)
83775  , p_source_29 => l_array_source_29(Idx)
83779  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
83776  , p_source_30 => l_array_source_30(Idx)
83777  , p_source_31 => l_array_source_31(Idx)
83778  , p_source_32 => l_array_source_32(Idx)
83780  , p_source_34 => l_array_source_34(Idx)
83781  , p_source_35 => l_array_source_35(Idx)
83782  , p_source_35_meaning => l_array_source_35_meaning(Idx)
83783  , p_source_36 => l_array_source_36(Idx)
83784  );
83785 If(l_balance_type_code = 'A') THEN
83786   l_actual_gain_loss_ref := l_gain_or_loss_ref;
83787 END IF;
83788 
83789 --
83790 
83791 
83792 --
83793 AcctLineType_102 (
83794  p_application_id  => p_application_id
83795  ,p_event_id     => l_event_id
83796  ,p_calculate_acctd_flag => l_calculate_acctd_flag
83797  ,p_calculate_g_l_flag => l_calculate_g_l_flag
83798  ,p_actual_flag => l_actual_flag
83799  ,p_balance_type_code => l_balance_type_code
83800  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
83801  
83802  , p_source_4 => l_array_source_4(Idx)
83803  , p_source_5 => l_array_source_5(Idx)
83804  , p_source_7 => l_array_source_7(Idx)
83805  , p_source_8 => l_array_source_8(Idx)
83806  , p_source_23 => l_array_source_23(Idx)
83807  , p_source_24 => l_array_source_24(Idx)
83808  , p_source_25 => l_array_source_25(Idx)
83809  , p_source_26 => l_array_source_26(Idx)
83810  , p_source_27 => l_array_source_27(Idx)
83811  , p_source_28 => l_array_source_28(Idx)
83812  , p_source_29 => l_array_source_29(Idx)
83813  , p_source_30 => l_array_source_30(Idx)
83814  , p_source_31 => l_array_source_31(Idx)
83815  , p_source_32 => l_array_source_32(Idx)
83816  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
83817  , p_source_34 => l_array_source_34(Idx)
83818  , p_source_35 => l_array_source_35(Idx)
83819  , p_source_35_meaning => l_array_source_35_meaning(Idx)
83820  , p_source_36 => l_array_source_36(Idx)
83821  );
83822 If(l_balance_type_code = 'A') THEN
83823   l_actual_gain_loss_ref := l_gain_or_loss_ref;
83824 END IF;
83825 
83826 --
83827 
83828 
83829 --
83830 AcctLineType_109 (
83831  p_application_id  => p_application_id
83832  ,p_event_id     => l_event_id
83833  ,p_calculate_acctd_flag => l_calculate_acctd_flag
83834  ,p_calculate_g_l_flag => l_calculate_g_l_flag
83835  ,p_actual_flag => l_actual_flag
83836  ,p_balance_type_code => l_balance_type_code
83837  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
83838  
83839  , p_source_4 => l_array_source_4(Idx)
83840  , p_source_5 => l_array_source_5(Idx)
83841  , p_source_6 => l_array_source_6(Idx)
83842  , p_source_7 => l_array_source_7(Idx)
83843  , p_source_23 => l_array_source_23(Idx)
83844  , p_source_24 => l_array_source_24(Idx)
83845  , p_source_25 => l_array_source_25(Idx)
83846  , p_source_26 => l_array_source_26(Idx)
83847  , p_source_27 => l_array_source_27(Idx)
83848  , p_source_28 => l_array_source_28(Idx)
83849  , p_source_29 => l_array_source_29(Idx)
83850  , p_source_30 => l_array_source_30(Idx)
83851  , p_source_31 => l_array_source_31(Idx)
83852  , p_source_32 => l_array_source_32(Idx)
83853  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
83854  , p_source_34 => l_array_source_34(Idx)
83855  , p_source_35 => l_array_source_35(Idx)
83856  , p_source_35_meaning => l_array_source_35_meaning(Idx)
83857  , p_source_36 => l_array_source_36(Idx)
83858  );
83859 If(l_balance_type_code = 'A') THEN
83860   l_actual_gain_loss_ref := l_gain_or_loss_ref;
83861 END IF;
83862 
83863 --
83864 
83865       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
83866       -- or secondary ledger that has different currency with primary
83867       -- or alc that is calculated by sla
83868       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
83869             (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'))
83870 
83871 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
83872 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
83873           AND (l_actual_flag = 'A')) THEN
83874         XLA_AE_LINES_PKG.CreateGainOrLossLines(
83875           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
83876          ,p_application_id   => p_application_id
83877          ,p_amb_context_code => 'DEFAULT'
83878          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
83879          ,p_event_class_code => C_EVENT_CLASS_CODE
83880          ,p_event_type_code  => C_EVENT_TYPE_CODE
83881          
83882          ,p_gain_ccid        => -1
83883          ,p_loss_ccid        => -1
83884 
83885          ,p_actual_flag      => l_actual_flag
83886          ,p_enc_flag         => null
83887          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
83888          ,p_enc_g_l_ref      => null
83889          );
83890       END IF;
83891    END IF;
83892 END IF;
83893 
83894    ELSE
83895       --
83896       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
83897       --
83898       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83899          trace
83900             (p_msg      => 'Trancaction revesal option is Y'
83901             ,p_level    => C_LEVEL_STATEMENT
83902             ,p_module   => l_log_module);
83903       END IF;
83904    END IF;
83905 
83906 END LOOP;
83907 l_result := XLA_AE_LINES_PKG.InsertLines ;
83908 end loop;
83909 close line_cur;
83910 
83911 
83912 --
83913 -- insert headers into xla_ae_headers_gt table
83914 --
83915 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
83916 
83917 -- insert into errors table here.
83918 
83919 END LOOP;
83920 
83921 --
83925 -- CreateHeadersAndLines.
83922 -- 4865292
83923 --
83924 -- Compare g_hdr_extract_count with event count in
83926 --
83927 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
83928 
83929 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83930    trace (p_msg     => '# rows extracted from header extract objects '
83931                     || ' (running total): '
83932                     || g_hdr_extract_count
83933          ,p_level   => C_LEVEL_STATEMENT
83934          ,p_module  => l_log_module);
83935 END IF;
83936 
83937 CLOSE header_cur;
83938 --
83939 
83940 --
83941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83942    trace
83943       (p_msg      => 'END of EventClass_154'
83944       ,p_level    => C_LEVEL_PROCEDURE
83945       ,p_module   => l_log_module);
83946 END IF;
83947 --
83948 RETURN l_result;
83949 EXCEPTION
83950 WHEN xla_exceptions_pkg.application_exception THEN
83951    
83952 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
83953 
83954    
83955 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
83956 
83957    RAISE;
83958 WHEN OTHERS THEN
83959    xla_exceptions_pkg.raise_message
83960       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_154');
83961 END EventClass_154;
83962 --
83963 
83964 ---------------------------------------
83965 --
83966 -- PRIVATE PROCEDURE
83967 --         insert_sources_155
83968 --
83969 ----------------------------------------
83970 --
83971 PROCEDURE insert_sources_155(
83972                                 p_target_ledger_id       IN NUMBER
83973                               , p_language               IN VARCHAR2
83974                               , p_sla_ledger_id          IN NUMBER
83975                               , p_pad_start_date         IN DATE
83976                               , p_pad_end_date           IN DATE
83977                          )
83978 IS
83979 
83980 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ADJ_ALL';
83981 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LABOR_COST_ADJ';
83982 p_apps_owner                   VARCHAR2(30);
83983 l_log_module                   VARCHAR2(240);
83984 BEGIN
83985 IF g_log_enabled THEN
83986       l_log_module := C_DEFAULT_MODULE||'.insert_sources_155';
83987 END IF;
83988 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83989 
83990       trace
83991          (p_msg      => 'BEGIN of insert_sources_155'
83992          ,p_level    => C_LEVEL_PROCEDURE
83993          ,p_module   => l_log_module);
83994 
83995 END IF;
83996 
83997 -- select APPS owner
83998 SELECT oracle_username
83999   INTO p_apps_owner
84000   FROM fnd_oracle_userid
84001  WHERE read_only_flag = 'U'
84002 ;
84003 
84004 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84005       trace
84006          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
84007                         ' - p_language = '||p_language||
84008                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
84009                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
84010                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
84011                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
84012          ,p_level    => C_LEVEL_STATEMENT
84013          ,p_module   => l_log_module);
84014 END IF;
84015 
84016 
84017 --
84018 INSERT INTO xla_diag_sources --hdr2
84019 (
84020         event_id
84021       , ledger_id
84022       , sla_ledger_id
84023       , description_language
84024       , object_name
84025       , object_type_code
84026       , line_number
84027       , source_application_id
84028       , source_type_code
84029       , source_code
84030       , source_value
84031       , source_meaning
84032       , created_by
84033       , creation_date
84034       , last_update_date
84035       , last_updated_by
84036       , last_update_login
84037       , program_update_date
84038       , program_application_id
84039       , program_id
84040       , request_id
84041 )
84042 SELECT
84043         event_id
84044       , p_target_ledger_id
84045       , p_sla_ledger_id
84046       , p_language
84047       , object_name
84048       , object_type_code
84049       , line_number
84050       , source_application_id
84051       , source_type_code
84052       , source_code
84053       , SUBSTR(source_value ,1,1996)
84054       , SUBSTR(source_meaning ,1,200)
84055       , xla_environment_pkg.g_Usr_Id
84056       , TRUNC(SYSDATE)
84057       , TRUNC(SYSDATE)
84058       , xla_environment_pkg.g_Usr_Id
84059       , xla_environment_pkg.g_Login_Id
84060       , TRUNC(SYSDATE)
84061       , xla_environment_pkg.g_Prog_Appl_Id
84062       , xla_environment_pkg.g_Prog_Id
84063       , xla_environment_pkg.g_Req_Id
84064   FROM (
84065        SELECT xet.event_id                  event_id
84066             , 0                          line_number
84067             , CASE r
84068                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
84069                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
84070                 
84071                ELSE null
84072               END                           object_name
84073             , CASE r
84074                 WHEN 1 THEN 'HEADER' 
84075                 WHEN 2 THEN 'HEADER' 
84076                 
84077                 ELSE null
84078               END                           object_type_code
84079             , CASE r
84080                 WHEN 1 THEN '275' 
84081                 WHEN 2 THEN '275' 
84082                 
84083                 ELSE null
84084               END                           source_application_id
84085             , 'S'             source_type_code
84089                 
84086             , CASE r
84087                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
84088                 WHEN 2 THEN 'GL_DATE' 
84090                 ELSE null
84091               END                           source_code
84092             , CASE r
84093                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
84094                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
84095                 
84096                 ELSE null
84097               END                           source_value
84098             , null              source_meaning
84099          FROM xla_events_gt     xet  
84100       , PA_XLA_EXP_HEADER_V  h2
84101              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
84102          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
84103            AND xet.event_class_code = C_EVENT_CLASS_CODE
84104               AND h2.event_id = xet.event_id
84105 
84106 )
84107 ;
84108 --
84109 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84110 
84111       trace
84112          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
84113          ,p_level    => C_LEVEL_STATEMENT
84114          ,p_module   => l_log_module);
84115 
84116 END IF;
84117 --
84118 
84119 
84120 
84121 --
84122 INSERT INTO xla_diag_sources  --line2
84123 (
84124         event_id
84125       , ledger_id
84126       , sla_ledger_id
84127       , description_language
84128       , object_name
84129       , object_type_code
84130       , line_number
84131       , source_application_id
84132       , source_type_code
84133       , source_code
84134       , source_value
84135       , source_meaning
84136       , created_by
84137       , creation_date
84138       , last_update_date
84139       , last_updated_by
84140       , last_update_login
84141       , program_update_date
84142       , program_application_id
84143       , program_id
84144       , request_id
84145 )
84146 SELECT  event_id
84147       , p_target_ledger_id
84148       , p_sla_ledger_id
84149       , p_language
84150       , object_name
84151       , object_type_code
84152       , line_number
84153       , source_application_id
84154       , source_type_code
84155       , source_code
84156       , SUBSTR(source_value,1,1996)
84157       , SUBSTR(source_meaning ,1,200)
84158       , xla_environment_pkg.g_Usr_Id
84159       , TRUNC(SYSDATE)
84160       , TRUNC(SYSDATE)
84161       , xla_environment_pkg.g_Usr_Id
84162       , xla_environment_pkg.g_Login_Id
84163       , TRUNC(SYSDATE)
84164       , xla_environment_pkg.g_Prog_Appl_Id
84165       , xla_environment_pkg.g_Prog_Id
84166       , xla_environment_pkg.g_Req_Id
84167   FROM (
84168        SELECT xet.event_id                  event_id
84169             , l1.line_number                 line_number
84170             , CASE r
84171                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
84172                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
84173                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
84174                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
84175                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
84176                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
84177                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
84178                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
84179                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
84180                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
84181                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
84182                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
84183                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
84184                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
84185                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
84186                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
84187                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
84188                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
84189                 
84190                ELSE null
84191               END                           object_name
84192             , CASE r
84193                 WHEN 1 THEN 'LINE' 
84194                 WHEN 2 THEN 'LINE' 
84195                 WHEN 3 THEN 'LINE' 
84196                 WHEN 4 THEN 'LINE' 
84197                 WHEN 5 THEN 'LINE' 
84198                 WHEN 6 THEN 'LINE' 
84199                 WHEN 7 THEN 'LINE' 
84200                 WHEN 8 THEN 'LINE' 
84201                 WHEN 9 THEN 'LINE' 
84202                 WHEN 10 THEN 'LINE' 
84203                 WHEN 11 THEN 'LINE' 
84204                 WHEN 12 THEN 'LINE' 
84205                 WHEN 13 THEN 'LINE' 
84206                 WHEN 14 THEN 'LINE' 
84207                 WHEN 15 THEN 'LINE' 
84208                 WHEN 16 THEN 'LINE' 
84209                 WHEN 17 THEN 'LINE' 
84210                 WHEN 18 THEN 'LINE' 
84211                 
84212                 ELSE null
84213               END                           object_type_code
84214             , CASE r
84215                 WHEN 1 THEN '275' 
84216                 WHEN 2 THEN '275' 
84217                 WHEN 3 THEN '275' 
84218                 WHEN 4 THEN '275' 
84219                 WHEN 5 THEN '275' 
84220                 WHEN 6 THEN '275' 
84221                 WHEN 7 THEN '275' 
84222                 WHEN 8 THEN '275' 
84223                 WHEN 9 THEN '275' 
84224                 WHEN 10 THEN '275' 
84225                 WHEN 11 THEN '275' 
84226                 WHEN 12 THEN '275' 
84227                 WHEN 13 THEN '275' 
84228                 WHEN 14 THEN '275' 
84229                 WHEN 15 THEN '275' 
84230                 WHEN 16 THEN '275' 
84231                 WHEN 17 THEN '275' 
84232                 WHEN 18 THEN '275' 
84233                 
84234                 ELSE null
84235               END                           source_application_id
84239                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
84236             , 'S'             source_type_code
84237             , CASE r
84238                 WHEN 1 THEN 'COST_CCID' 
84240                 WHEN 3 THEN 'ADJ_COST_CCID' 
84241                 WHEN 4 THEN 'COST_CLEARING_CCID' 
84242                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
84243                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
84244                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
84245                 WHEN 8 THEN 'ENTERED_RAW_COST' 
84246                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
84247                 WHEN 10 THEN 'ACCT_RAW_COST' 
84248                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
84249                 WHEN 12 THEN 'EXCHANGE_RATE' 
84250                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
84251                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
84252                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
84253                 WHEN 16 THEN 'LINE_NUMBER' 
84254                 WHEN 17 THEN 'LINE_TYPE' 
84255                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
84256                 
84257                 ELSE null
84258               END                           source_code
84259             , CASE r
84260                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
84261                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
84262                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
84263                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
84264                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
84265                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
84266                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
84267                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
84268                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
84269                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
84270                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
84271                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
84272                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
84273                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
84274                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
84275                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
84276                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
84277                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
84278                 
84279                 ELSE null
84280               END                           source_value
84281             , CASE r
84282                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
84283                           103371
84284                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
84285                          ,'ALLOW_OVERRIDE_CCID_FLAG'
84286                          ,'S'
84287                          ,275)
84288                 WHEN 17 THEN fvl35.meaning
84289                 
84290                 ELSE null
84291               END               source_meaning
84292          FROM  xla_events_gt     xet  
84293         , PA_XLA_CDL_LINES_V  l1
84294   , fnd_lookup_values    fvl35
84295             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
84296         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
84297           AND xet.event_class_code = C_EVENT_CLASS_CODE
84298             AND l1.event_id          = xet.event_id
84299    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
84300   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
84301   AND fvl35.view_application_id(+) = 275
84302   AND fvl35.language(+)            = USERENV('LANG')
84303   
84304 )
84305 ;
84306 --
84307 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84308 
84309       trace
84310          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
84311          ,p_level    => C_LEVEL_STATEMENT
84312          ,p_module   => l_log_module);
84313 
84314 END IF;
84315 
84316 
84317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84318       trace
84319          (p_msg      => 'END of insert_sources_155'
84320          ,p_level    => C_LEVEL_PROCEDURE
84321          ,p_module   => l_log_module);
84322 END IF;
84323 EXCEPTION
84324   WHEN xla_exceptions_pkg.application_exception THEN
84325       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
84326             trace
84327                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
84328                ,p_level    => C_LEVEL_EXCEPTION
84329                ,p_module   => l_log_module);
84330       END IF;
84331       RAISE;
84332   WHEN OTHERS THEN
84333       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
84334             trace
84335                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
84336                ,p_level    => C_LEVEL_EXCEPTION
84337                ,p_module   => l_log_module);
84338        END IF;
84339        xla_exceptions_pkg.raise_message
84340            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_155');
84341 END insert_sources_155;
84342 --
84343 
84344 ---------------------------------------
84345 --
84346 -- PRIVATE FUNCTION
84347 --         EventClass_155
84348 --
84349 ----------------------------------------
84350 --
84351 FUNCTION EventClass_155
84352        (p_application_id         IN NUMBER
84353        ,p_base_ledger_id         IN NUMBER
84354        ,p_target_ledger_id       IN NUMBER
84355        ,p_language               IN VARCHAR2
84356        ,p_currency_code          IN VARCHAR2
84357        ,p_sla_ledger_id          IN NUMBER
84358        ,p_pad_start_date         IN DATE
84359        ,p_pad_end_date           IN DATE
84360        ,p_primary_ledger_id      IN NUMBER)
84361 RETURN BOOLEAN IS
84362 --
84363 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ADJ_ALL';
84364 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LABOR_COST_ADJ';
84365 
84366 l_calculate_acctd_flag   VARCHAR2(1) :='N';
84370 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84367 l_calculate_g_l_flag     VARCHAR2(1) :='N';
84368 --
84369 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84371 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84372 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84373 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84374 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84375 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84376 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84377 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84378 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84379 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84380 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84381 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84382 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
84383 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84384 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84385 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84386 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
84387 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84388 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84389 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84390 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
84391 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
84392 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
84393 
84394 l_event_id                             NUMBER;
84395 l_previous_event_id                    NUMBER;
84396 l_first_event_id                       NUMBER;
84397 l_last_event_id                        NUMBER;
84398 
84399 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
84400 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
84401 --
84402 --
84403 l_result                    BOOLEAN := TRUE;
84404 l_rows                      NUMBER  := 1000;
84405 l_event_type_name           VARCHAR2(80) := 'All';
84406 l_event_class_name          VARCHAR2(80) := 'Labor Cost Adjustment';
84407 l_description               VARCHAR2(4000);
84408 l_transaction_reversal      NUMBER;
84409 l_ae_header_id              NUMBER;
84410 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
84411 l_log_module                VARCHAR2(240);
84412 --
84413 l_acct_reversal_source      VARCHAR2(30);
84414 l_trx_reversal_source       VARCHAR2(30);
84415 
84416 l_continue_with_lines       BOOLEAN := TRUE;
84417 --
84418 l_acc_rev_gl_date_source    DATE;                      -- 4262811
84419 --
84420 type t_array_event_id is table of number index by binary_integer;
84421 
84422 l_rec_array_event                    t_rec_array_event;
84423 l_null_rec_array_event               t_rec_array_event;
84424 l_array_ae_header_id                 xla_number_array_type;
84425 l_actual_flag                        VARCHAR2(1) := NULL;
84426 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
84427 l_balance_type_code                  VARCHAR2(1) :=NULL;
84428 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
84429 
84430 --
84431 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
84432 --
84433 
84434 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
84435 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
84436 
84437 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
84438 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
84439 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
84440 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
84441 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
84442 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
84443 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
84444 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
84445 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
84446 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
84447 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
84448 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
84449 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
84450 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
84451 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
84452 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
84453 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
84454 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
84455 
84456 l_array_source_33              t_array_source_33;
84457 l_array_source_75              t_array_source_75;
84458 
84459 l_array_source_4      t_array_source_4;
84460 l_array_source_5      t_array_source_5;
84461 l_array_source_6      t_array_source_6;
84465 l_array_source_24      t_array_source_24;
84462 l_array_source_7      t_array_source_7;
84463 l_array_source_8      t_array_source_8;
84464 l_array_source_23      t_array_source_23;
84466 l_array_source_25      t_array_source_25;
84467 l_array_source_26      t_array_source_26;
84468 l_array_source_27      t_array_source_27;
84469 l_array_source_28      t_array_source_28;
84470 l_array_source_29      t_array_source_29;
84471 l_array_source_30      t_array_source_30;
84472 l_array_source_31      t_array_source_31;
84473 l_array_source_32      t_array_source_32;
84474 l_array_source_34      t_array_source_34;
84475 l_array_source_35      t_array_source_35;
84476 l_array_source_35_meaning      t_array_lookup_meaning;
84477 l_array_source_36      t_array_source_36;
84478 
84479 --
84480 CURSOR header_cur
84481 IS
84482 SELECT /*+ leading(xet) cardinality(xet,1) */
84483 -- Event Class Code: LABOR_COST_ADJ
84484     xet.entity_id
84485    ,xet.legal_entity_id
84486    ,xet.entity_code
84487    ,xet.transaction_number
84488    ,xet.event_id
84489    ,xet.event_class_code
84490    ,xet.event_type_code
84491    ,xet.event_number
84492    ,xet.event_date
84493    ,xet.transaction_date
84494    ,xet.reference_num_1
84495    ,xet.reference_num_2
84496    ,xet.reference_num_3
84497    ,xet.reference_num_4
84498    ,xet.reference_char_1
84499    ,xet.reference_char_2
84500    ,xet.reference_char_3
84501    ,xet.reference_char_4
84502    ,xet.reference_date_1
84503    ,xet.reference_date_2
84504    ,xet.reference_date_3
84505    ,xet.reference_date_4
84506    ,xet.event_created_by
84507    ,xet.budgetary_control_flag 
84508   , h2.EXPENDITURE_ITEM_ID    source_33
84509   , h2.GL_DATE    source_75
84510   FROM xla_events_gt     xet 
84511   , PA_XLA_EXP_HEADER_V  h2
84512  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
84513    and xet.event_class_code = C_EVENT_CLASS_CODE
84514    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
84515 
84516  ORDER BY event_id
84517 ;
84518 
84519 
84520 --
84521 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
84522 IS
84523 SELECT  /*+ leading(xet) cardinality(xet,1) */
84524 -- Event Class Code: LABOR_COST_ADJ
84525     xet.entity_id
84526    ,xet.legal_entity_id
84527    ,xet.entity_code
84528    ,xet.transaction_number
84529    ,xet.event_id
84530    ,xet.event_class_code
84531    ,xet.event_type_code
84532    ,xet.event_number
84533    ,xet.event_date
84534    ,xet.transaction_date
84535    ,xet.reference_num_1
84536    ,xet.reference_num_2
84537    ,xet.reference_num_3
84538    ,xet.reference_num_4
84539    ,xet.reference_char_1
84540    ,xet.reference_char_2
84541    ,xet.reference_char_3
84542    ,xet.reference_char_4
84543    ,xet.reference_date_1
84544    ,xet.reference_date_2
84545    ,xet.reference_date_3
84546    ,xet.reference_date_4
84547    ,xet.event_created_by
84548    ,xet.budgetary_control_flag
84549  , l1.LINE_NUMBER  
84550   , l1.COST_CCID    source_4
84551   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
84552   , l1.ADJ_COST_CCID    source_6
84553   , l1.COST_CLEARING_CCID    source_7
84554   , l1.ADJ_COST_CLEARING_CCID    source_8
84555   , l1.REVERSING_LINE_FLAG    source_23
84556   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
84557   , l1.ENTERED_RAW_COST    source_25
84558   , l1.ENTERED_CURRENCY_CODE    source_26
84559   , l1.ACCT_RAW_COST    source_27
84560   , l1.EXCHANGE_RATE_DATE    source_28
84561   , l1.EXCHANGE_RATE    source_29
84562   , l1.EXCHANGE_RATE_TYPE    source_30
84563   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
84564   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
84565   , l1.LINE_NUMBER    source_34
84566   , l1.LINE_TYPE    source_35
84567   , fvl35.meaning   source_35_meaning
84568   , l1.LINE_NUM_REVERSED    source_36
84569   FROM xla_events_gt     xet 
84570   , PA_XLA_CDL_LINES_V  l1
84571   , fnd_lookup_values    fvl35
84572  WHERE xet.event_id between x_first_event_id and x_last_event_id
84573    and xet.event_date between p_pad_start_date and p_pad_end_date
84574    and xet.event_class_code = C_EVENT_CLASS_CODE
84575    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
84576    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
84577   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
84578   AND fvl35.view_application_id(+) = 275
84579   AND fvl35.language(+)            = USERENV('LANG')
84580   ;
84581 
84582 --
84583 BEGIN
84584 IF g_log_enabled THEN
84585    l_log_module := C_DEFAULT_MODULE||'.EventClass_155';
84586 END IF;
84587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
84588    trace
84589       (p_msg      => 'BEGIN of EventClass_155'
84590       ,p_level    => C_LEVEL_PROCEDURE
84591       ,p_module   => l_log_module);
84592 END IF;
84593 
84594 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84595    trace
84596       (p_msg      => 'p_application_id = '||p_application_id||
84597                      ' - p_base_ledger_id = '||p_base_ledger_id||
84598                      ' - p_target_ledger_id  = '||p_target_ledger_id||
84599                      ' - p_language = '||p_language||
84600                      ' - p_currency_code = '||p_currency_code||
84601                      ' - p_sla_ledger_id = '||p_sla_ledger_id
84602       ,p_level    => C_LEVEL_STATEMENT
84603       ,p_module   => l_log_module);
84604 END IF;
84605 --
84606 -- initialze arrays
84607 --
84608 g_array_event.DELETE;
84609 l_rec_array_event := l_null_rec_array_event;
84610 --
84611 --------------------------------------
84612 -- 4262811 Initialze MPA Line Number
84613 --------------------------------------
84614 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
84615 
84616 --
84617 
84621 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84618 --
84619 OPEN header_cur;
84620 --
84622    trace
84623    (p_msg      => 'SQL - FETCH header_cur'
84624    ,p_level    => C_LEVEL_STATEMENT
84625    ,p_module   => l_log_module);
84626 END IF;
84627 --
84628 LOOP
84629 FETCH header_cur BULK COLLECT INTO
84630         l_array_entity_id
84631       , l_array_legal_entity_id
84632       , l_array_entity_code
84633       , l_array_transaction_num
84634       , l_array_event_id
84635       , l_array_class_code
84636       , l_array_event_type
84637       , l_array_event_number
84638       , l_array_event_date
84639       , l_array_transaction_date
84640       , l_array_reference_num_1
84641       , l_array_reference_num_2
84642       , l_array_reference_num_3
84643       , l_array_reference_num_4
84644       , l_array_reference_char_1
84645       , l_array_reference_char_2
84646       , l_array_reference_char_3
84647       , l_array_reference_char_4
84648       , l_array_reference_date_1
84649       , l_array_reference_date_2
84650       , l_array_reference_date_3
84651       , l_array_reference_date_4
84652       , l_array_event_created_by
84653       , l_array_budgetary_control_flag 
84654       , l_array_source_33
84655       , l_array_source_75
84656       LIMIT l_rows;
84657 --
84658 IF (C_LEVEL_EVENT >= g_log_level) THEN
84659    trace
84660    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
84661    ,p_level    => C_LEVEL_EVENT
84662    ,p_module   => l_log_module);
84663 END IF;
84664 --
84665 EXIT WHEN l_array_entity_id.COUNT = 0;
84666 
84667 -- initialize arrays
84668 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
84669 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
84670 
84671 --
84672 -- Bug 4458708
84673 --
84674 XLA_AE_LINES_PKG.g_LineNumber := 0;
84675 
84676 
84677 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
84678 g_last_hdr_idx := l_array_event_id.LAST;
84679 --
84680 -- loop for the headers. Each iteration is for each header extract row
84681 -- fetched in header cursor
84682 --
84683 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
84684 
84685 --
84686 -- set event info as cache for other routines to refer event attributes
84687 --
84688 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
84689    (p_application_id           => p_application_id
84690    ,p_primary_ledger_id        => p_primary_ledger_id
84691    ,p_base_ledger_id           => p_base_ledger_id
84692    ,p_target_ledger_id         => p_target_ledger_id
84693    ,p_entity_id                => l_array_entity_id(hdr_idx)
84694    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
84695    ,p_entity_code              => l_array_entity_code(hdr_idx)
84696    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
84697    ,p_event_id                 => l_array_event_id(hdr_idx)
84698    ,p_event_class_code         => l_array_class_code(hdr_idx)
84699    ,p_event_type_code          => l_array_event_type(hdr_idx)
84700    ,p_event_number             => l_array_event_number(hdr_idx)
84701    ,p_event_date               => l_array_event_date(hdr_idx)
84702    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
84703    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
84704    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
84705    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
84706    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
84707    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
84708    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
84709    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
84710    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
84711    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
84712    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
84713    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
84714    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
84715    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
84716    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
84717 
84718 --
84719 -- set the status of entry to C_VALID (0)
84720 --
84721 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
84722 
84723 --
84724 -- initialize a row for ae header
84725 --
84726 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
84727 
84728 l_event_id := l_array_event_id(hdr_idx);
84729 
84730 --
84731 -- storing the hdr_idx for event. May be used by line cursor.
84732 --
84733 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
84734 
84735 --
84736 -- store sources from header extract. This can be improved to
84737 -- store only those sources from header extract that may be used in lines
84738 --
84739 
84740 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
84741 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
84742 
84743 --
84744 -- initilaize the status of ae headers for diffrent balance types
84745 -- the status is initialised to C_NOT_CREATED (2)
84746 --
84747 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
84748 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
84749 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
84750 
84751 --
84752 -- call api to validate and store accounting attributes for header
84753 --
84754 
84755 ------------------------------------------------------------
84759 
84756 -- Accrual Reversal : to get date for Standard Source (NONE)
84757 ------------------------------------------------------------
84758 l_acc_rev_gl_date_source := NULL;
84760      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
84761       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
84762 
84763 
84764 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
84765 
84766 XLA_AE_HEADER_PKG.SetJeCategoryName;
84767 
84768 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
84769 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
84770 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
84771 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
84772 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
84773 
84774 
84775 -- No header level analytical criteria
84776 
84777 --
84778 --accounting attribute enhancement, bug 3612931
84779 --
84780 l_trx_reversal_source := SUBSTR(NULL, 1,30);
84781 
84782 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
84783    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
84784 
84785    xla_accounting_err_pkg.build_message
84786       (p_appli_s_name            => 'XLA'
84787       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
84788       ,p_token_1                 => 'ACCT_ATTR_NAME'
84789       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
84790       ,p_token_2                 => 'PRODUCT_NAME'
84791       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
84792       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
84793       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
84794       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
84795 
84796 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
84797    --
84798    -- following sets the accounting attributes needed to reverse
84799    -- accounting for a distributeion
84800    --
84801    xla_ae_lines_pkg.SetTrxReversalAttrs
84802       (p_event_id              => l_event_id
84803       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
84804       ,p_trx_reversal_source   => l_trx_reversal_source);
84805 
84806 END IF;
84807 
84808 
84809 ----------------------------------------------------------------
84810 -- 4262811 -  update the header statuses to invalid in need be
84811 ----------------------------------------------------------------
84812 --
84813 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
84814 
84815 
84816   -----------------------------------------------
84817   -- No accrual reversal for the event class/type
84818   -----------------------------------------------
84819 ----------------------------------------------------------------
84820 
84821 --
84822 -- this ends the header loop iteration for one bulk fetch
84823 --
84824 END LOOP;
84825 
84826 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
84827 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
84828 
84829 --
84830 -- insert dummy rows into lines gt table that were created due to
84831 -- transaction reversals
84832 --
84833 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
84834    l_result := XLA_AE_LINES_PKG.InsertLines;
84835 END IF;
84836 
84837 --
84838 -- reset the temp_line_num for each set of events fetched from header
84839 -- cursor rather than doing it for each new event in line cursor
84840 -- Bug 3939231
84841 --
84842 xla_ae_lines_pkg.g_temp_line_num := 0;
84843 
84844 
84845 
84846 --
84847 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
84848 --
84849 --
84850 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84851 
84852       trace
84853          (p_msg      => 'SQL - FETCH line_cur'
84854          ,p_level    => C_LEVEL_STATEMENT
84855          ,p_module   => l_log_module);
84856 
84857 END IF;
84858 --
84859 --
84860 LOOP
84861   --
84862   FETCH line_cur BULK COLLECT INTO
84863         l_array_entity_id
84864       , l_array_legal_entity_id
84865       , l_array_entity_code
84866       , l_array_transaction_num
84867       , l_array_event_id
84868       , l_array_class_code
84869       , l_array_event_type
84870       , l_array_event_number
84871       , l_array_event_date
84872       , l_array_transaction_date
84873       , l_array_reference_num_1
84874       , l_array_reference_num_2
84875       , l_array_reference_num_3
84876       , l_array_reference_num_4
84877       , l_array_reference_char_1
84878       , l_array_reference_char_2
84879       , l_array_reference_char_3
84880       , l_array_reference_char_4
84881       , l_array_reference_date_1
84882       , l_array_reference_date_2
84883       , l_array_reference_date_3
84884       , l_array_reference_date_4
84885       , l_array_event_created_by
84886       , l_array_budgetary_control_flag
84887       , l_array_extract_line_num 
84888       , l_array_source_4
84889       , l_array_source_5
84890       , l_array_source_6
84891       , l_array_source_7
84892       , l_array_source_8
84893       , l_array_source_23
84894       , l_array_source_24
84895       , l_array_source_25
84896       , l_array_source_26
84897       , l_array_source_27
84898       , l_array_source_28
84899       , l_array_source_29
84900       , l_array_source_30
84901       , l_array_source_31
84902       , l_array_source_32
84906       , l_array_source_36
84903       , l_array_source_34
84904       , l_array_source_35
84905       , l_array_source_35_meaning
84907       LIMIT l_rows;
84908 
84909   --
84910   IF (C_LEVEL_EVENT >= g_log_level) THEN
84911             trace
84912                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
84913                ,p_level    => C_LEVEL_EVENT
84914                ,p_module   => l_log_module);
84915   END IF;
84916   --
84917   EXIT WHEN l_array_entity_id.count = 0;
84918 
84919   XLA_AE_LINES_PKG.g_rec_lines := null;
84920 
84921 --
84922 -- Bug 4458708
84923 --
84924 XLA_AE_LINES_PKG.g_LineNumber := 0;
84925 --
84926 --
84927 
84928 FOR Idx IN 1..l_array_event_id.count LOOP
84929    --
84930    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
84931    --
84932    l_event_id := l_array_event_id(idx);  -- 5648433
84933 
84934    --
84935    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
84936    --
84937 
84938    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
84939              (g_array_event(l_event_id).array_value_num('header_index'))
84940          ,'N'
84941          ) <> 'Y'
84942    THEN
84943       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84944          trace
84945             (p_msg      => 'Trancaction revesal option is not Y '
84946             ,p_level    => C_LEVEL_STATEMENT
84947             ,p_module   => l_log_module);
84948       END IF;
84949 
84950 --
84951 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
84952 --
84953 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
84954 --
84955 -- set event info as cache for other routines to refer event attributes
84956 --
84957 
84958 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
84959    l_previous_event_id := l_event_id;
84960 
84961    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
84962       (p_application_id           => p_application_id
84963       ,p_primary_ledger_id        => p_primary_ledger_id
84964       ,p_base_ledger_id           => p_base_ledger_id
84965       ,p_target_ledger_id         => p_target_ledger_id
84966       ,p_entity_id                => l_array_entity_id(Idx)
84967       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
84968       ,p_entity_code              => l_array_entity_code(Idx)
84969       ,p_transaction_num          => l_array_transaction_num(Idx)
84970       ,p_event_id                 => l_array_event_id(Idx)
84971       ,p_event_class_code         => l_array_class_code(Idx)
84972       ,p_event_type_code          => l_array_event_type(Idx)
84973       ,p_event_number             => l_array_event_number(Idx)
84974       ,p_event_date               => l_array_event_date(Idx)
84975       ,p_transaction_date         => l_array_transaction_date(Idx)
84976       ,p_reference_num_1          => l_array_reference_num_1(Idx)
84977       ,p_reference_num_2          => l_array_reference_num_2(Idx)
84978       ,p_reference_num_3          => l_array_reference_num_3(Idx)
84979       ,p_reference_num_4          => l_array_reference_num_4(Idx)
84980       ,p_reference_char_1         => l_array_reference_char_1(Idx)
84981       ,p_reference_char_2         => l_array_reference_char_2(Idx)
84982       ,p_reference_char_3         => l_array_reference_char_3(Idx)
84983       ,p_reference_char_4         => l_array_reference_char_4(Idx)
84984       ,p_reference_date_1         => l_array_reference_date_1(Idx)
84985       ,p_reference_date_2         => l_array_reference_date_2(Idx)
84986       ,p_reference_date_3         => l_array_reference_date_3(Idx)
84987       ,p_reference_date_4         => l_array_reference_date_4(Idx)
84988       ,p_event_created_by         => l_array_event_created_by(Idx)
84989       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
84990        --
84991 END IF;
84992 
84993 
84994 
84995 --
84996 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
84997 
84998 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
84999 
85000 IF l_continue_with_lines THEN
85001    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
85002       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
85003 
85004       xla_accounting_err_pkg.build_message
85005          (p_appli_s_name            => 'XLA'
85006          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
85007          ,p_token_1                 => 'LINE_NUMBER'
85008          ,p_value_1                 => l_array_extract_line_num(Idx)
85009          ,p_token_2                 => 'PRODUCT_NAME'
85010          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
85011          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
85012          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
85013          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
85014 
85015    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
85016       --
85017       -- following sets the accounting attributes needed to reverse
85018       -- accounting for a distributeion
85019       --
85020 
85021       --
85022       -- 5217187
85023       --
85024       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
85025       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
85026                                        g_array_event(l_event_id).array_value_num('header_index'));
85027       --
85028       --
85029 
85030       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
85031       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
85035       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
85032       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
85033       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
85034       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
85036       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
85037       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
85038       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
85039       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
85040       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
85041       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
85042       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
85043       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
85044       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
85045       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
85046       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
85047       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
85048       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
85049       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
85050       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
85051       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
85052       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
85053       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
85054       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
85055       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
85056       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
85057       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
85058       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
85059       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
85060       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
85061       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
85062       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
85063       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
85064       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
85065       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
85066       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
85067       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
85068       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
85069       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
85070       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
85071       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
85072       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
85073       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
85074       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
85075       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
85076       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
85077       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
85078 
85079 
85080       xla_ae_lines_pkg.SetAcctReversalAttrs
85081          (p_event_id             => l_event_id
85082          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
85083          ,p_calculate_acctd_flag => l_calculate_acctd_flag
85084          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
85085    END IF;
85086 
85087    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
85088        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
85089 
85090 --
85091 AcctLineType_73 (
85092  p_application_id  => p_application_id
85093  ,p_event_id     => l_event_id
85094  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85095  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85096  ,p_actual_flag => l_actual_flag
85097  ,p_balance_type_code => l_balance_type_code
85098  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85099  
85100  , p_source_4 => l_array_source_4(Idx)
85101  , p_source_5 => l_array_source_5(Idx)
85102  , p_source_6 => l_array_source_6(Idx)
85103  , p_source_7 => l_array_source_7(Idx)
85104  , p_source_23 => l_array_source_23(Idx)
85105  , p_source_24 => l_array_source_24(Idx)
85106  , p_source_25 => l_array_source_25(Idx)
85107  , p_source_26 => l_array_source_26(Idx)
85108  , p_source_27 => l_array_source_27(Idx)
85109  , p_source_28 => l_array_source_28(Idx)
85110  , p_source_29 => l_array_source_29(Idx)
85111  , p_source_30 => l_array_source_30(Idx)
85112  , p_source_31 => l_array_source_31(Idx)
85113  , p_source_32 => l_array_source_32(Idx)
85114  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
85115  , p_source_34 => l_array_source_34(Idx)
85116  , p_source_35 => l_array_source_35(Idx)
85117  , p_source_35_meaning => l_array_source_35_meaning(Idx)
85118  , p_source_36 => l_array_source_36(Idx)
85119  );
85120 If(l_balance_type_code = 'A') THEN
85121   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85122 END IF;
85123 
85124 --
85125 
85126 
85127 --
85128 AcctLineType_84 (
85129  p_application_id  => p_application_id
85130  ,p_event_id     => l_event_id
85131  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85132  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85133  ,p_actual_flag => l_actual_flag
85134  ,p_balance_type_code => l_balance_type_code
85135  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85139  , p_source_6 => l_array_source_6(Idx)
85136  
85137  , p_source_4 => l_array_source_4(Idx)
85138  , p_source_5 => l_array_source_5(Idx)
85140  , p_source_7 => l_array_source_7(Idx)
85141  , p_source_23 => l_array_source_23(Idx)
85142  , p_source_24 => l_array_source_24(Idx)
85143  , p_source_25 => l_array_source_25(Idx)
85144  , p_source_26 => l_array_source_26(Idx)
85145  , p_source_27 => l_array_source_27(Idx)
85146  , p_source_28 => l_array_source_28(Idx)
85147  , p_source_29 => l_array_source_29(Idx)
85148  , p_source_30 => l_array_source_30(Idx)
85149  , p_source_31 => l_array_source_31(Idx)
85150  , p_source_32 => l_array_source_32(Idx)
85151  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
85152  , p_source_34 => l_array_source_34(Idx)
85153  , p_source_35 => l_array_source_35(Idx)
85154  , p_source_35_meaning => l_array_source_35_meaning(Idx)
85155  , p_source_36 => l_array_source_36(Idx)
85156  );
85157 If(l_balance_type_code = 'A') THEN
85158   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85159 END IF;
85160 
85161 --
85162 
85163 
85164 --
85165 AcctLineType_94 (
85166  p_application_id  => p_application_id
85167  ,p_event_id     => l_event_id
85168  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85169  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85170  ,p_actual_flag => l_actual_flag
85171  ,p_balance_type_code => l_balance_type_code
85172  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85173  
85174  , p_source_4 => l_array_source_4(Idx)
85175  , p_source_5 => l_array_source_5(Idx)
85176  , p_source_7 => l_array_source_7(Idx)
85177  , p_source_8 => l_array_source_8(Idx)
85178  , p_source_23 => l_array_source_23(Idx)
85179  , p_source_24 => l_array_source_24(Idx)
85180  , p_source_25 => l_array_source_25(Idx)
85181  , p_source_26 => l_array_source_26(Idx)
85182  , p_source_27 => l_array_source_27(Idx)
85183  , p_source_28 => l_array_source_28(Idx)
85184  , p_source_29 => l_array_source_29(Idx)
85185  , p_source_30 => l_array_source_30(Idx)
85186  , p_source_31 => l_array_source_31(Idx)
85187  , p_source_32 => l_array_source_32(Idx)
85188  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
85189  , p_source_34 => l_array_source_34(Idx)
85190  , p_source_35 => l_array_source_35(Idx)
85191  , p_source_35_meaning => l_array_source_35_meaning(Idx)
85192  , p_source_36 => l_array_source_36(Idx)
85193  );
85194 If(l_balance_type_code = 'A') THEN
85195   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85196 END IF;
85197 
85198 --
85199 
85200 
85201 --
85202 AcctLineType_97 (
85203  p_application_id  => p_application_id
85204  ,p_event_id     => l_event_id
85205  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85206  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85207  ,p_actual_flag => l_actual_flag
85208  ,p_balance_type_code => l_balance_type_code
85209  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85210  
85211  , p_source_4 => l_array_source_4(Idx)
85212  , p_source_5 => l_array_source_5(Idx)
85213  , p_source_7 => l_array_source_7(Idx)
85214  , p_source_8 => l_array_source_8(Idx)
85215  , p_source_23 => l_array_source_23(Idx)
85216  , p_source_24 => l_array_source_24(Idx)
85217  , p_source_25 => l_array_source_25(Idx)
85218  , p_source_26 => l_array_source_26(Idx)
85219  , p_source_27 => l_array_source_27(Idx)
85220  , p_source_28 => l_array_source_28(Idx)
85221  , p_source_29 => l_array_source_29(Idx)
85222  , p_source_30 => l_array_source_30(Idx)
85223  , p_source_31 => l_array_source_31(Idx)
85224  , p_source_32 => l_array_source_32(Idx)
85225  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
85226  , p_source_34 => l_array_source_34(Idx)
85227  , p_source_35 => l_array_source_35(Idx)
85228  , p_source_35_meaning => l_array_source_35_meaning(Idx)
85229  , p_source_36 => l_array_source_36(Idx)
85230  );
85231 If(l_balance_type_code = 'A') THEN
85232   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85233 END IF;
85234 
85235 --
85236 
85237       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
85238       -- or secondary ledger that has different currency with primary
85239       -- or alc that is calculated by sla
85240       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
85241             (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'))
85242 
85243 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
85244 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
85245           AND (l_actual_flag = 'A')) THEN
85246         XLA_AE_LINES_PKG.CreateGainOrLossLines(
85247           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
85248          ,p_application_id   => p_application_id
85249          ,p_amb_context_code => 'DEFAULT'
85250          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
85251          ,p_event_class_code => C_EVENT_CLASS_CODE
85252          ,p_event_type_code  => C_EVENT_TYPE_CODE
85253          
85254          ,p_gain_ccid        => -1
85255          ,p_loss_ccid        => -1
85256 
85257          ,p_actual_flag      => l_actual_flag
85258          ,p_enc_flag         => null
85259          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
85260          ,p_enc_g_l_ref      => null
85261          );
85262       END IF;
85263    END IF;
85264 END IF;
85265 
85266    ELSE
85267       --
85268       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
85269       --
85270       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85271          trace
85272             (p_msg      => 'Trancaction revesal option is Y'
85273             ,p_level    => C_LEVEL_STATEMENT
85277 
85274             ,p_module   => l_log_module);
85275       END IF;
85276    END IF;
85278 END LOOP;
85279 l_result := XLA_AE_LINES_PKG.InsertLines ;
85280 end loop;
85281 close line_cur;
85282 
85283 
85284 --
85285 -- insert headers into xla_ae_headers_gt table
85286 --
85287 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
85288 
85289 -- insert into errors table here.
85290 
85291 END LOOP;
85292 
85293 --
85294 -- 4865292
85295 --
85296 -- Compare g_hdr_extract_count with event count in
85297 -- CreateHeadersAndLines.
85298 --
85299 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
85300 
85301 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85302    trace (p_msg     => '# rows extracted from header extract objects '
85303                     || ' (running total): '
85304                     || g_hdr_extract_count
85305          ,p_level   => C_LEVEL_STATEMENT
85306          ,p_module  => l_log_module);
85307 END IF;
85308 
85309 CLOSE header_cur;
85310 --
85311 
85312 --
85313 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85314    trace
85315       (p_msg      => 'END of EventClass_155'
85316       ,p_level    => C_LEVEL_PROCEDURE
85317       ,p_module   => l_log_module);
85318 END IF;
85319 --
85320 RETURN l_result;
85321 EXCEPTION
85322 WHEN xla_exceptions_pkg.application_exception THEN
85323    
85324 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
85325 
85326    
85327 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
85328 
85329    RAISE;
85330 WHEN OTHERS THEN
85331    xla_exceptions_pkg.raise_message
85332       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_155');
85333 END EventClass_155;
85334 --
85335 
85336 ---------------------------------------
85337 --
85338 -- PRIVATE PROCEDURE
85339 --         insert_sources_156
85340 --
85341 ----------------------------------------
85342 --
85343 PROCEDURE insert_sources_156(
85344                                 p_target_ledger_id       IN NUMBER
85345                               , p_language               IN VARCHAR2
85346                               , p_sla_ledger_id          IN NUMBER
85347                               , p_pad_start_date         IN DATE
85348                               , p_pad_end_date           IN DATE
85349                          )
85350 IS
85351 
85352 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ALL';
85353 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'LABOR_COST';
85354 p_apps_owner                   VARCHAR2(30);
85355 l_log_module                   VARCHAR2(240);
85356 BEGIN
85357 IF g_log_enabled THEN
85358       l_log_module := C_DEFAULT_MODULE||'.insert_sources_156';
85359 END IF;
85360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85361 
85362       trace
85363          (p_msg      => 'BEGIN of insert_sources_156'
85364          ,p_level    => C_LEVEL_PROCEDURE
85365          ,p_module   => l_log_module);
85366 
85367 END IF;
85368 
85369 -- select APPS owner
85370 SELECT oracle_username
85371   INTO p_apps_owner
85372   FROM fnd_oracle_userid
85373  WHERE read_only_flag = 'U'
85374 ;
85375 
85376 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85377       trace
85378          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
85379                         ' - p_language = '||p_language||
85380                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
85381                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
85382                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
85383                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
85384          ,p_level    => C_LEVEL_STATEMENT
85385          ,p_module   => l_log_module);
85386 END IF;
85387 
85388 
85389 --
85390 INSERT INTO xla_diag_sources --hdr2
85391 (
85392         event_id
85393       , ledger_id
85394       , sla_ledger_id
85395       , description_language
85396       , object_name
85397       , object_type_code
85398       , line_number
85399       , source_application_id
85400       , source_type_code
85401       , source_code
85402       , source_value
85403       , source_meaning
85404       , created_by
85405       , creation_date
85406       , last_update_date
85407       , last_updated_by
85408       , last_update_login
85409       , program_update_date
85410       , program_application_id
85411       , program_id
85412       , request_id
85413 )
85414 SELECT
85415         event_id
85416       , p_target_ledger_id
85417       , p_sla_ledger_id
85418       , p_language
85419       , object_name
85420       , object_type_code
85421       , line_number
85422       , source_application_id
85423       , source_type_code
85424       , source_code
85425       , SUBSTR(source_value ,1,1996)
85426       , SUBSTR(source_meaning ,1,200)
85427       , xla_environment_pkg.g_Usr_Id
85428       , TRUNC(SYSDATE)
85429       , TRUNC(SYSDATE)
85430       , xla_environment_pkg.g_Usr_Id
85431       , xla_environment_pkg.g_Login_Id
85432       , TRUNC(SYSDATE)
85433       , xla_environment_pkg.g_Prog_Appl_Id
85434       , xla_environment_pkg.g_Prog_Id
85435       , xla_environment_pkg.g_Req_Id
85436   FROM (
85437        SELECT xet.event_id                  event_id
85438             , 0                          line_number
85439             , CASE r
85440                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
85441                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
85442                 
85443                ELSE null
85444               END                           object_name
85445             , CASE r
85449                 ELSE null
85446                 WHEN 1 THEN 'HEADER' 
85447                 WHEN 2 THEN 'HEADER' 
85448                 
85450               END                           object_type_code
85451             , CASE r
85452                 WHEN 1 THEN '275' 
85453                 WHEN 2 THEN '275' 
85454                 
85455                 ELSE null
85456               END                           source_application_id
85457             , 'S'             source_type_code
85458             , CASE r
85459                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
85460                 WHEN 2 THEN 'GL_DATE' 
85461                 
85462                 ELSE null
85463               END                           source_code
85464             , CASE r
85465                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
85466                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
85467                 
85468                 ELSE null
85469               END                           source_value
85470             , null              source_meaning
85471          FROM xla_events_gt     xet  
85472       , PA_XLA_EXP_HEADER_V  h2
85473              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
85474          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
85475            AND xet.event_class_code = C_EVENT_CLASS_CODE
85476               AND h2.event_id = xet.event_id
85477 
85478 )
85479 ;
85480 --
85481 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85482 
85483       trace
85484          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
85485          ,p_level    => C_LEVEL_STATEMENT
85486          ,p_module   => l_log_module);
85487 
85488 END IF;
85489 --
85490 
85491 
85492 
85493 --
85494 INSERT INTO xla_diag_sources  --line2
85495 (
85496         event_id
85497       , ledger_id
85498       , sla_ledger_id
85499       , description_language
85500       , object_name
85501       , object_type_code
85502       , line_number
85503       , source_application_id
85504       , source_type_code
85505       , source_code
85506       , source_value
85507       , source_meaning
85508       , created_by
85509       , creation_date
85510       , last_update_date
85511       , last_updated_by
85512       , last_update_login
85513       , program_update_date
85514       , program_application_id
85515       , program_id
85516       , request_id
85517 )
85518 SELECT  event_id
85519       , p_target_ledger_id
85520       , p_sla_ledger_id
85521       , p_language
85522       , object_name
85523       , object_type_code
85524       , line_number
85525       , source_application_id
85526       , source_type_code
85527       , source_code
85528       , SUBSTR(source_value,1,1996)
85529       , SUBSTR(source_meaning ,1,200)
85530       , xla_environment_pkg.g_Usr_Id
85531       , TRUNC(SYSDATE)
85532       , TRUNC(SYSDATE)
85533       , xla_environment_pkg.g_Usr_Id
85534       , xla_environment_pkg.g_Login_Id
85535       , TRUNC(SYSDATE)
85536       , xla_environment_pkg.g_Prog_Appl_Id
85537       , xla_environment_pkg.g_Prog_Id
85538       , xla_environment_pkg.g_Req_Id
85539   FROM (
85540        SELECT xet.event_id                  event_id
85541             , l1.line_number                 line_number
85542             , CASE r
85543                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
85544                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
85545                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
85546                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
85547                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
85548                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
85549                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
85550                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
85551                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
85552                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
85553                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
85554                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
85555                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
85556                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
85557                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
85558                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
85559                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
85560                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
85561                 
85562                ELSE null
85563               END                           object_name
85564             , CASE r
85565                 WHEN 1 THEN 'LINE' 
85566                 WHEN 2 THEN 'LINE' 
85567                 WHEN 3 THEN 'LINE' 
85568                 WHEN 4 THEN 'LINE' 
85569                 WHEN 5 THEN 'LINE' 
85570                 WHEN 6 THEN 'LINE' 
85571                 WHEN 7 THEN 'LINE' 
85572                 WHEN 8 THEN 'LINE' 
85573                 WHEN 9 THEN 'LINE' 
85574                 WHEN 10 THEN 'LINE' 
85575                 WHEN 11 THEN 'LINE' 
85576                 WHEN 12 THEN 'LINE' 
85577                 WHEN 13 THEN 'LINE' 
85578                 WHEN 14 THEN 'LINE' 
85579                 WHEN 15 THEN 'LINE' 
85580                 WHEN 16 THEN 'LINE' 
85581                 WHEN 17 THEN 'LINE' 
85582                 WHEN 18 THEN 'LINE' 
85583                 
85584                 ELSE null
85585               END                           object_type_code
85586             , CASE r
85587                 WHEN 1 THEN '275' 
85588                 WHEN 2 THEN '275' 
85589                 WHEN 3 THEN '275' 
85590                 WHEN 4 THEN '275' 
85591                 WHEN 5 THEN '275' 
85592                 WHEN 6 THEN '275' 
85593                 WHEN 7 THEN '275' 
85594                 WHEN 8 THEN '275' 
85595                 WHEN 9 THEN '275' 
85599                 WHEN 13 THEN '275' 
85596                 WHEN 10 THEN '275' 
85597                 WHEN 11 THEN '275' 
85598                 WHEN 12 THEN '275' 
85600                 WHEN 14 THEN '275' 
85601                 WHEN 15 THEN '275' 
85602                 WHEN 16 THEN '275' 
85603                 WHEN 17 THEN '275' 
85604                 WHEN 18 THEN '275' 
85605                 
85606                 ELSE null
85607               END                           source_application_id
85608             , 'S'             source_type_code
85609             , CASE r
85610                 WHEN 1 THEN 'COST_CCID' 
85611                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
85612                 WHEN 3 THEN 'ADJ_COST_CCID' 
85613                 WHEN 4 THEN 'COST_CLEARING_CCID' 
85614                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
85615                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
85616                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
85617                 WHEN 8 THEN 'ENTERED_RAW_COST' 
85618                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
85619                 WHEN 10 THEN 'ACCT_RAW_COST' 
85620                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
85621                 WHEN 12 THEN 'EXCHANGE_RATE' 
85622                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
85623                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
85624                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
85625                 WHEN 16 THEN 'LINE_NUMBER' 
85626                 WHEN 17 THEN 'LINE_TYPE' 
85627                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
85628                 
85629                 ELSE null
85630               END                           source_code
85631             , CASE r
85632                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
85633                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
85634                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
85635                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
85636                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
85637                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
85638                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
85639                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
85640                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
85641                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
85642                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
85643                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
85644                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
85645                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
85646                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
85647                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
85648                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
85649                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
85650                 
85651                 ELSE null
85652               END                           source_value
85653             , CASE r
85654                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
85655                           103371
85656                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
85657                          ,'ALLOW_OVERRIDE_CCID_FLAG'
85658                          ,'S'
85659                          ,275)
85660                 WHEN 17 THEN fvl35.meaning
85661                 
85662                 ELSE null
85663               END               source_meaning
85664          FROM  xla_events_gt     xet  
85665         , PA_XLA_CDL_LINES_V  l1
85666   , fnd_lookup_values    fvl35
85667             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
85668         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
85669           AND xet.event_class_code = C_EVENT_CLASS_CODE
85670             AND l1.event_id          = xet.event_id
85671    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
85672   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
85673   AND fvl35.view_application_id(+) = 275
85674   AND fvl35.language(+)            = USERENV('LANG')
85675   
85676 )
85677 ;
85678 --
85679 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85680 
85681       trace
85682          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
85683          ,p_level    => C_LEVEL_STATEMENT
85684          ,p_module   => l_log_module);
85685 
85686 END IF;
85687 
85688 
85689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85690       trace
85691          (p_msg      => 'END of insert_sources_156'
85692          ,p_level    => C_LEVEL_PROCEDURE
85693          ,p_module   => l_log_module);
85694 END IF;
85695 EXCEPTION
85696   WHEN xla_exceptions_pkg.application_exception THEN
85697       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
85698             trace
85699                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
85700                ,p_level    => C_LEVEL_EXCEPTION
85701                ,p_module   => l_log_module);
85702       END IF;
85703       RAISE;
85704   WHEN OTHERS THEN
85705       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
85706             trace
85707                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
85708                ,p_level    => C_LEVEL_EXCEPTION
85709                ,p_module   => l_log_module);
85710        END IF;
85711        xla_exceptions_pkg.raise_message
85712            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_156');
85713 END insert_sources_156;
85714 --
85715 
85716 ---------------------------------------
85717 --
85718 -- PRIVATE FUNCTION
85719 --         EventClass_156
85720 --
85721 ----------------------------------------
85722 --
85723 FUNCTION EventClass_156
85724        (p_application_id         IN NUMBER
85725        ,p_base_ledger_id         IN NUMBER
85726        ,p_target_ledger_id       IN NUMBER
85730        ,p_pad_start_date         IN DATE
85727        ,p_language               IN VARCHAR2
85728        ,p_currency_code          IN VARCHAR2
85729        ,p_sla_ledger_id          IN NUMBER
85731        ,p_pad_end_date           IN DATE
85732        ,p_primary_ledger_id      IN NUMBER)
85733 RETURN BOOLEAN IS
85734 --
85735 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'LABOR_COST_ALL';
85736 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'LABOR_COST';
85737 
85738 l_calculate_acctd_flag   VARCHAR2(1) :='N';
85739 l_calculate_g_l_flag     VARCHAR2(1) :='N';
85740 --
85741 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85742 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85743 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85744 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85745 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85746 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85747 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85748 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85749 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85750 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85751 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85752 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85753 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85754 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
85755 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85756 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85757 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85758 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
85759 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85760 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85761 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85762 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
85763 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
85764 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
85765 
85766 l_event_id                             NUMBER;
85767 l_previous_event_id                    NUMBER;
85768 l_first_event_id                       NUMBER;
85769 l_last_event_id                        NUMBER;
85770 
85771 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
85772 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
85773 --
85774 --
85775 l_result                    BOOLEAN := TRUE;
85776 l_rows                      NUMBER  := 1000;
85777 l_event_type_name           VARCHAR2(80) := 'All';
85778 l_event_class_name          VARCHAR2(80) := 'Labor Cost';
85779 l_description               VARCHAR2(4000);
85780 l_transaction_reversal      NUMBER;
85781 l_ae_header_id              NUMBER;
85782 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
85783 l_log_module                VARCHAR2(240);
85784 --
85785 l_acct_reversal_source      VARCHAR2(30);
85786 l_trx_reversal_source       VARCHAR2(30);
85787 
85788 l_continue_with_lines       BOOLEAN := TRUE;
85789 --
85790 l_acc_rev_gl_date_source    DATE;                      -- 4262811
85791 --
85792 type t_array_event_id is table of number index by binary_integer;
85793 
85794 l_rec_array_event                    t_rec_array_event;
85795 l_null_rec_array_event               t_rec_array_event;
85796 l_array_ae_header_id                 xla_number_array_type;
85797 l_actual_flag                        VARCHAR2(1) := NULL;
85798 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
85799 l_balance_type_code                  VARCHAR2(1) :=NULL;
85800 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
85801 
85802 --
85803 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
85804 --
85805 
85806 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
85807 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
85808 
85809 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
85810 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
85811 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
85812 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
85813 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
85814 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
85815 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
85816 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
85817 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
85818 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
85819 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
85820 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
85821 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
85822 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
85823 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
85827 
85824 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
85825 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
85826 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
85828 l_array_source_33              t_array_source_33;
85829 l_array_source_75              t_array_source_75;
85830 
85831 l_array_source_4      t_array_source_4;
85832 l_array_source_5      t_array_source_5;
85833 l_array_source_6      t_array_source_6;
85834 l_array_source_7      t_array_source_7;
85835 l_array_source_8      t_array_source_8;
85836 l_array_source_23      t_array_source_23;
85837 l_array_source_24      t_array_source_24;
85838 l_array_source_25      t_array_source_25;
85839 l_array_source_26      t_array_source_26;
85840 l_array_source_27      t_array_source_27;
85841 l_array_source_28      t_array_source_28;
85842 l_array_source_29      t_array_source_29;
85843 l_array_source_30      t_array_source_30;
85844 l_array_source_31      t_array_source_31;
85845 l_array_source_32      t_array_source_32;
85846 l_array_source_34      t_array_source_34;
85847 l_array_source_35      t_array_source_35;
85848 l_array_source_35_meaning      t_array_lookup_meaning;
85849 l_array_source_36      t_array_source_36;
85850 
85851 --
85852 CURSOR header_cur
85853 IS
85854 SELECT /*+ leading(xet) cardinality(xet,1) */
85855 -- Event Class Code: LABOR_COST
85856     xet.entity_id
85857    ,xet.legal_entity_id
85858    ,xet.entity_code
85859    ,xet.transaction_number
85860    ,xet.event_id
85861    ,xet.event_class_code
85862    ,xet.event_type_code
85863    ,xet.event_number
85864    ,xet.event_date
85865    ,xet.transaction_date
85866    ,xet.reference_num_1
85867    ,xet.reference_num_2
85868    ,xet.reference_num_3
85869    ,xet.reference_num_4
85870    ,xet.reference_char_1
85871    ,xet.reference_char_2
85872    ,xet.reference_char_3
85873    ,xet.reference_char_4
85874    ,xet.reference_date_1
85875    ,xet.reference_date_2
85876    ,xet.reference_date_3
85877    ,xet.reference_date_4
85878    ,xet.event_created_by
85879    ,xet.budgetary_control_flag 
85880   , h2.EXPENDITURE_ITEM_ID    source_33
85881   , h2.GL_DATE    source_75
85882   FROM xla_events_gt     xet 
85883   , PA_XLA_EXP_HEADER_V  h2
85884  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
85885    and xet.event_class_code = C_EVENT_CLASS_CODE
85886    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
85887 
85888  ORDER BY event_id
85889 ;
85890 
85891 
85892 --
85893 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
85894 IS
85895 SELECT  /*+ leading(xet) cardinality(xet,1) */
85896 -- Event Class Code: LABOR_COST
85897     xet.entity_id
85898    ,xet.legal_entity_id
85899    ,xet.entity_code
85900    ,xet.transaction_number
85901    ,xet.event_id
85902    ,xet.event_class_code
85903    ,xet.event_type_code
85904    ,xet.event_number
85905    ,xet.event_date
85906    ,xet.transaction_date
85907    ,xet.reference_num_1
85908    ,xet.reference_num_2
85909    ,xet.reference_num_3
85910    ,xet.reference_num_4
85911    ,xet.reference_char_1
85912    ,xet.reference_char_2
85913    ,xet.reference_char_3
85914    ,xet.reference_char_4
85915    ,xet.reference_date_1
85916    ,xet.reference_date_2
85917    ,xet.reference_date_3
85918    ,xet.reference_date_4
85919    ,xet.event_created_by
85920    ,xet.budgetary_control_flag
85921  , l1.LINE_NUMBER  
85922   , l1.COST_CCID    source_4
85923   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
85924   , l1.ADJ_COST_CCID    source_6
85925   , l1.COST_CLEARING_CCID    source_7
85926   , l1.ADJ_COST_CLEARING_CCID    source_8
85927   , l1.REVERSING_LINE_FLAG    source_23
85928   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
85929   , l1.ENTERED_RAW_COST    source_25
85930   , l1.ENTERED_CURRENCY_CODE    source_26
85931   , l1.ACCT_RAW_COST    source_27
85932   , l1.EXCHANGE_RATE_DATE    source_28
85933   , l1.EXCHANGE_RATE    source_29
85934   , l1.EXCHANGE_RATE_TYPE    source_30
85935   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
85936   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
85937   , l1.LINE_NUMBER    source_34
85938   , l1.LINE_TYPE    source_35
85939   , fvl35.meaning   source_35_meaning
85940   , l1.LINE_NUM_REVERSED    source_36
85941   FROM xla_events_gt     xet 
85942   , PA_XLA_CDL_LINES_V  l1
85943   , fnd_lookup_values    fvl35
85944  WHERE xet.event_id between x_first_event_id and x_last_event_id
85945    and xet.event_date between p_pad_start_date and p_pad_end_date
85946    and xet.event_class_code = C_EVENT_CLASS_CODE
85947    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
85948    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
85949   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
85950   AND fvl35.view_application_id(+) = 275
85951   AND fvl35.language(+)            = USERENV('LANG')
85952   ;
85953 
85954 --
85955 BEGIN
85956 IF g_log_enabled THEN
85957    l_log_module := C_DEFAULT_MODULE||'.EventClass_156';
85958 END IF;
85959 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85960    trace
85961       (p_msg      => 'BEGIN of EventClass_156'
85962       ,p_level    => C_LEVEL_PROCEDURE
85963       ,p_module   => l_log_module);
85964 END IF;
85965 
85966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85967    trace
85968       (p_msg      => 'p_application_id = '||p_application_id||
85969                      ' - p_base_ledger_id = '||p_base_ledger_id||
85970                      ' - p_target_ledger_id  = '||p_target_ledger_id||
85971                      ' - p_language = '||p_language||
85972                      ' - p_currency_code = '||p_currency_code||
85976 END IF;
85973                      ' - p_sla_ledger_id = '||p_sla_ledger_id
85974       ,p_level    => C_LEVEL_STATEMENT
85975       ,p_module   => l_log_module);
85977 --
85978 -- initialze arrays
85979 --
85980 g_array_event.DELETE;
85981 l_rec_array_event := l_null_rec_array_event;
85982 --
85983 --------------------------------------
85984 -- 4262811 Initialze MPA Line Number
85985 --------------------------------------
85986 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
85987 
85988 --
85989 
85990 --
85991 OPEN header_cur;
85992 --
85993 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85994    trace
85995    (p_msg      => 'SQL - FETCH header_cur'
85996    ,p_level    => C_LEVEL_STATEMENT
85997    ,p_module   => l_log_module);
85998 END IF;
85999 --
86000 LOOP
86001 FETCH header_cur BULK COLLECT INTO
86002         l_array_entity_id
86003       , l_array_legal_entity_id
86004       , l_array_entity_code
86005       , l_array_transaction_num
86006       , l_array_event_id
86007       , l_array_class_code
86008       , l_array_event_type
86009       , l_array_event_number
86010       , l_array_event_date
86011       , l_array_transaction_date
86012       , l_array_reference_num_1
86013       , l_array_reference_num_2
86014       , l_array_reference_num_3
86015       , l_array_reference_num_4
86016       , l_array_reference_char_1
86017       , l_array_reference_char_2
86018       , l_array_reference_char_3
86019       , l_array_reference_char_4
86020       , l_array_reference_date_1
86021       , l_array_reference_date_2
86022       , l_array_reference_date_3
86023       , l_array_reference_date_4
86024       , l_array_event_created_by
86025       , l_array_budgetary_control_flag 
86026       , l_array_source_33
86027       , l_array_source_75
86028       LIMIT l_rows;
86029 --
86030 IF (C_LEVEL_EVENT >= g_log_level) THEN
86031    trace
86032    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
86033    ,p_level    => C_LEVEL_EVENT
86034    ,p_module   => l_log_module);
86035 END IF;
86036 --
86037 EXIT WHEN l_array_entity_id.COUNT = 0;
86038 
86039 -- initialize arrays
86040 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
86041 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
86042 
86043 --
86044 -- Bug 4458708
86045 --
86046 XLA_AE_LINES_PKG.g_LineNumber := 0;
86047 
86048 
86049 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
86050 g_last_hdr_idx := l_array_event_id.LAST;
86051 --
86052 -- loop for the headers. Each iteration is for each header extract row
86053 -- fetched in header cursor
86054 --
86055 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
86056 
86057 --
86058 -- set event info as cache for other routines to refer event attributes
86059 --
86060 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
86061    (p_application_id           => p_application_id
86062    ,p_primary_ledger_id        => p_primary_ledger_id
86063    ,p_base_ledger_id           => p_base_ledger_id
86064    ,p_target_ledger_id         => p_target_ledger_id
86065    ,p_entity_id                => l_array_entity_id(hdr_idx)
86066    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
86067    ,p_entity_code              => l_array_entity_code(hdr_idx)
86068    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
86069    ,p_event_id                 => l_array_event_id(hdr_idx)
86070    ,p_event_class_code         => l_array_class_code(hdr_idx)
86071    ,p_event_type_code          => l_array_event_type(hdr_idx)
86072    ,p_event_number             => l_array_event_number(hdr_idx)
86073    ,p_event_date               => l_array_event_date(hdr_idx)
86074    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
86075    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
86076    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
86077    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
86078    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
86079    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
86080    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
86081    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
86082    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
86083    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
86084    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
86085    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
86086    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
86087    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
86088    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
86089 
86090 --
86091 -- set the status of entry to C_VALID (0)
86092 --
86093 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
86094 
86095 --
86096 -- initialize a row for ae header
86097 --
86098 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
86099 
86100 l_event_id := l_array_event_id(hdr_idx);
86101 
86102 --
86103 -- storing the hdr_idx for event. May be used by line cursor.
86104 --
86105 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
86106 
86107 --
86108 -- store sources from header extract. This can be improved to
86109 -- store only those sources from header extract that may be used in lines
86110 --
86111 
86112 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
86113 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
86114 
86115 --
86116 -- initilaize the status of ae headers for diffrent balance types
86117 -- the status is initialised to C_NOT_CREATED (2)
86121 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86118 --
86119 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86120 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
86122 
86123 --
86124 -- call api to validate and store accounting attributes for header
86125 --
86126 
86127 ------------------------------------------------------------
86128 -- Accrual Reversal : to get date for Standard Source (NONE)
86129 ------------------------------------------------------------
86130 l_acc_rev_gl_date_source := NULL;
86131 
86132      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
86133       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
86134 
86135 
86136 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
86137 
86138 XLA_AE_HEADER_PKG.SetJeCategoryName;
86139 
86140 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
86141 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
86142 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
86143 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
86144 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
86145 
86146 
86147 -- No header level analytical criteria
86148 
86149 --
86150 --accounting attribute enhancement, bug 3612931
86151 --
86152 l_trx_reversal_source := SUBSTR(NULL, 1,30);
86153 
86154 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
86155    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
86156 
86157    xla_accounting_err_pkg.build_message
86158       (p_appli_s_name            => 'XLA'
86159       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
86160       ,p_token_1                 => 'ACCT_ATTR_NAME'
86161       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
86162       ,p_token_2                 => 'PRODUCT_NAME'
86163       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
86164       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
86165       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
86166       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
86167 
86168 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
86169    --
86170    -- following sets the accounting attributes needed to reverse
86171    -- accounting for a distributeion
86172    --
86173    xla_ae_lines_pkg.SetTrxReversalAttrs
86174       (p_event_id              => l_event_id
86175       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
86176       ,p_trx_reversal_source   => l_trx_reversal_source);
86177 
86178 END IF;
86179 
86180 
86181 ----------------------------------------------------------------
86182 -- 4262811 -  update the header statuses to invalid in need be
86183 ----------------------------------------------------------------
86184 --
86185 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
86186 
86187 
86188   -----------------------------------------------
86189   -- No accrual reversal for the event class/type
86190   -----------------------------------------------
86191 ----------------------------------------------------------------
86192 
86193 --
86194 -- this ends the header loop iteration for one bulk fetch
86195 --
86196 END LOOP;
86197 
86198 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
86199 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
86200 
86201 --
86202 -- insert dummy rows into lines gt table that were created due to
86203 -- transaction reversals
86204 --
86205 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
86206    l_result := XLA_AE_LINES_PKG.InsertLines;
86207 END IF;
86208 
86209 --
86210 -- reset the temp_line_num for each set of events fetched from header
86211 -- cursor rather than doing it for each new event in line cursor
86212 -- Bug 3939231
86213 --
86214 xla_ae_lines_pkg.g_temp_line_num := 0;
86215 
86216 
86217 
86218 --
86219 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
86220 --
86221 --
86222 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86223 
86224       trace
86225          (p_msg      => 'SQL - FETCH line_cur'
86226          ,p_level    => C_LEVEL_STATEMENT
86227          ,p_module   => l_log_module);
86228 
86229 END IF;
86230 --
86231 --
86232 LOOP
86233   --
86234   FETCH line_cur BULK COLLECT INTO
86235         l_array_entity_id
86236       , l_array_legal_entity_id
86237       , l_array_entity_code
86238       , l_array_transaction_num
86239       , l_array_event_id
86240       , l_array_class_code
86241       , l_array_event_type
86242       , l_array_event_number
86243       , l_array_event_date
86244       , l_array_transaction_date
86245       , l_array_reference_num_1
86246       , l_array_reference_num_2
86247       , l_array_reference_num_3
86248       , l_array_reference_num_4
86249       , l_array_reference_char_1
86250       , l_array_reference_char_2
86251       , l_array_reference_char_3
86252       , l_array_reference_char_4
86253       , l_array_reference_date_1
86254       , l_array_reference_date_2
86255       , l_array_reference_date_3
86256       , l_array_reference_date_4
86257       , l_array_event_created_by
86258       , l_array_budgetary_control_flag
86259       , l_array_extract_line_num 
86263       , l_array_source_7
86260       , l_array_source_4
86261       , l_array_source_5
86262       , l_array_source_6
86264       , l_array_source_8
86265       , l_array_source_23
86266       , l_array_source_24
86267       , l_array_source_25
86268       , l_array_source_26
86269       , l_array_source_27
86270       , l_array_source_28
86271       , l_array_source_29
86272       , l_array_source_30
86273       , l_array_source_31
86274       , l_array_source_32
86275       , l_array_source_34
86276       , l_array_source_35
86277       , l_array_source_35_meaning
86278       , l_array_source_36
86279       LIMIT l_rows;
86280 
86281   --
86282   IF (C_LEVEL_EVENT >= g_log_level) THEN
86283             trace
86284                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
86285                ,p_level    => C_LEVEL_EVENT
86286                ,p_module   => l_log_module);
86287   END IF;
86288   --
86289   EXIT WHEN l_array_entity_id.count = 0;
86290 
86291   XLA_AE_LINES_PKG.g_rec_lines := null;
86292 
86293 --
86294 -- Bug 4458708
86295 --
86296 XLA_AE_LINES_PKG.g_LineNumber := 0;
86297 --
86298 --
86299 
86300 FOR Idx IN 1..l_array_event_id.count LOOP
86301    --
86302    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
86303    --
86304    l_event_id := l_array_event_id(idx);  -- 5648433
86305 
86306    --
86307    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
86308    --
86309 
86310    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
86311              (g_array_event(l_event_id).array_value_num('header_index'))
86312          ,'N'
86313          ) <> 'Y'
86314    THEN
86315       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86316          trace
86317             (p_msg      => 'Trancaction revesal option is not Y '
86318             ,p_level    => C_LEVEL_STATEMENT
86319             ,p_module   => l_log_module);
86320       END IF;
86321 
86322 --
86323 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
86324 --
86325 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
86326 --
86327 -- set event info as cache for other routines to refer event attributes
86328 --
86329 
86330 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
86331    l_previous_event_id := l_event_id;
86332 
86333    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
86334       (p_application_id           => p_application_id
86335       ,p_primary_ledger_id        => p_primary_ledger_id
86336       ,p_base_ledger_id           => p_base_ledger_id
86337       ,p_target_ledger_id         => p_target_ledger_id
86338       ,p_entity_id                => l_array_entity_id(Idx)
86339       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
86340       ,p_entity_code              => l_array_entity_code(Idx)
86341       ,p_transaction_num          => l_array_transaction_num(Idx)
86342       ,p_event_id                 => l_array_event_id(Idx)
86343       ,p_event_class_code         => l_array_class_code(Idx)
86344       ,p_event_type_code          => l_array_event_type(Idx)
86345       ,p_event_number             => l_array_event_number(Idx)
86346       ,p_event_date               => l_array_event_date(Idx)
86347       ,p_transaction_date         => l_array_transaction_date(Idx)
86348       ,p_reference_num_1          => l_array_reference_num_1(Idx)
86349       ,p_reference_num_2          => l_array_reference_num_2(Idx)
86350       ,p_reference_num_3          => l_array_reference_num_3(Idx)
86351       ,p_reference_num_4          => l_array_reference_num_4(Idx)
86352       ,p_reference_char_1         => l_array_reference_char_1(Idx)
86353       ,p_reference_char_2         => l_array_reference_char_2(Idx)
86354       ,p_reference_char_3         => l_array_reference_char_3(Idx)
86355       ,p_reference_char_4         => l_array_reference_char_4(Idx)
86356       ,p_reference_date_1         => l_array_reference_date_1(Idx)
86357       ,p_reference_date_2         => l_array_reference_date_2(Idx)
86358       ,p_reference_date_3         => l_array_reference_date_3(Idx)
86359       ,p_reference_date_4         => l_array_reference_date_4(Idx)
86360       ,p_event_created_by         => l_array_event_created_by(Idx)
86361       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
86362        --
86363 END IF;
86364 
86365 
86366 
86367 --
86368 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
86369 
86370 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
86371 
86372 IF l_continue_with_lines THEN
86373    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
86374       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
86375 
86376       xla_accounting_err_pkg.build_message
86377          (p_appli_s_name            => 'XLA'
86378          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
86379          ,p_token_1                 => 'LINE_NUMBER'
86380          ,p_value_1                 => l_array_extract_line_num(Idx)
86381          ,p_token_2                 => 'PRODUCT_NAME'
86382          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
86383          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
86384          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
86385          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
86386 
86387    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
86388       --
86389       -- following sets the accounting attributes needed to reverse
86390       -- accounting for a distributeion
86391       --
86392 
86393       --
86394       -- 5217187
86395       --
86399       --
86396       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
86397       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
86398                                        g_array_event(l_event_id).array_value_num('header_index'));
86400       --
86401 
86402       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
86403       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
86404       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
86405       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
86406       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
86407       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
86408       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
86409       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
86410       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
86411       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
86412       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
86413       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
86414       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
86415       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
86416       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
86417       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
86418       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
86419       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
86420       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
86421       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
86422       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
86423       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
86424       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
86425       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
86426       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
86427       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
86428       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
86429       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
86430       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
86431       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
86432       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
86433       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
86434       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
86435       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
86436       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
86437       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
86438       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
86439       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
86440       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
86441       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
86442       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
86443       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
86444       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
86445       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
86446       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
86447       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
86448       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
86449       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
86450 
86451 
86452       xla_ae_lines_pkg.SetAcctReversalAttrs
86453          (p_event_id             => l_event_id
86454          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
86455          ,p_calculate_acctd_flag => l_calculate_acctd_flag
86456          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
86457    END IF;
86458 
86459    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
86460        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
86461 
86462 --
86463 AcctLineType_66 (
86464  p_application_id  => p_application_id
86465  ,p_event_id     => l_event_id
86466  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86467  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86468  ,p_actual_flag => l_actual_flag
86469  ,p_balance_type_code => l_balance_type_code
86470  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86471  
86472  , p_source_4 => l_array_source_4(Idx)
86473  , p_source_5 => l_array_source_5(Idx)
86474  , p_source_6 => l_array_source_6(Idx)
86475  , p_source_7 => l_array_source_7(Idx)
86476  , p_source_23 => l_array_source_23(Idx)
86477  , p_source_24 => l_array_source_24(Idx)
86478  , p_source_25 => l_array_source_25(Idx)
86479  , p_source_26 => l_array_source_26(Idx)
86480  , p_source_27 => l_array_source_27(Idx)
86481  , p_source_28 => l_array_source_28(Idx)
86482  , p_source_29 => l_array_source_29(Idx)
86483  , p_source_30 => l_array_source_30(Idx)
86484  , p_source_31 => l_array_source_31(Idx)
86485  , p_source_32 => l_array_source_32(Idx)
86486  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
86487  , p_source_34 => l_array_source_34(Idx)
86488  , p_source_35 => l_array_source_35(Idx)
86489  , p_source_35_meaning => l_array_source_35_meaning(Idx)
86490  , p_source_36 => l_array_source_36(Idx)
86491  );
86492 If(l_balance_type_code = 'A') THEN
86496 --
86493   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86494 END IF;
86495 
86497 
86498 
86499 --
86500 AcctLineType_86 (
86501  p_application_id  => p_application_id
86502  ,p_event_id     => l_event_id
86503  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86504  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86505  ,p_actual_flag => l_actual_flag
86506  ,p_balance_type_code => l_balance_type_code
86507  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86508  
86509  , p_source_4 => l_array_source_4(Idx)
86510  , p_source_5 => l_array_source_5(Idx)
86511  , p_source_7 => l_array_source_7(Idx)
86512  , p_source_8 => l_array_source_8(Idx)
86513  , p_source_23 => l_array_source_23(Idx)
86514  , p_source_24 => l_array_source_24(Idx)
86515  , p_source_25 => l_array_source_25(Idx)
86516  , p_source_26 => l_array_source_26(Idx)
86517  , p_source_27 => l_array_source_27(Idx)
86518  , p_source_28 => l_array_source_28(Idx)
86519  , p_source_29 => l_array_source_29(Idx)
86520  , p_source_30 => l_array_source_30(Idx)
86521  , p_source_31 => l_array_source_31(Idx)
86522  , p_source_32 => l_array_source_32(Idx)
86523  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
86524  , p_source_34 => l_array_source_34(Idx)
86525  , p_source_35 => l_array_source_35(Idx)
86526  , p_source_35_meaning => l_array_source_35_meaning(Idx)
86527  , p_source_36 => l_array_source_36(Idx)
86528  );
86529 If(l_balance_type_code = 'A') THEN
86530   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86531 END IF;
86532 
86533 --
86534 
86535 
86536 --
86537 AcctLineType_103 (
86538  p_application_id  => p_application_id
86539  ,p_event_id     => l_event_id
86540  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86541  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86542  ,p_actual_flag => l_actual_flag
86543  ,p_balance_type_code => l_balance_type_code
86544  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86545  
86546  , p_source_4 => l_array_source_4(Idx)
86547  , p_source_5 => l_array_source_5(Idx)
86548  , p_source_7 => l_array_source_7(Idx)
86549  , p_source_8 => l_array_source_8(Idx)
86550  , p_source_23 => l_array_source_23(Idx)
86551  , p_source_24 => l_array_source_24(Idx)
86552  , p_source_25 => l_array_source_25(Idx)
86553  , p_source_26 => l_array_source_26(Idx)
86554  , p_source_27 => l_array_source_27(Idx)
86555  , p_source_28 => l_array_source_28(Idx)
86556  , p_source_29 => l_array_source_29(Idx)
86557  , p_source_30 => l_array_source_30(Idx)
86558  , p_source_31 => l_array_source_31(Idx)
86559  , p_source_32 => l_array_source_32(Idx)
86560  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
86561  , p_source_34 => l_array_source_34(Idx)
86562  , p_source_35 => l_array_source_35(Idx)
86563  , p_source_35_meaning => l_array_source_35_meaning(Idx)
86564  , p_source_36 => l_array_source_36(Idx)
86565  );
86566 If(l_balance_type_code = 'A') THEN
86567   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86568 END IF;
86569 
86570 --
86571 
86572 
86573 --
86574 AcctLineType_112 (
86575  p_application_id  => p_application_id
86576  ,p_event_id     => l_event_id
86577  ,p_calculate_acctd_flag => l_calculate_acctd_flag
86578  ,p_calculate_g_l_flag => l_calculate_g_l_flag
86579  ,p_actual_flag => l_actual_flag
86580  ,p_balance_type_code => l_balance_type_code
86581  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
86582  
86583  , p_source_4 => l_array_source_4(Idx)
86584  , p_source_5 => l_array_source_5(Idx)
86585  , p_source_6 => l_array_source_6(Idx)
86586  , p_source_7 => l_array_source_7(Idx)
86587  , p_source_23 => l_array_source_23(Idx)
86588  , p_source_24 => l_array_source_24(Idx)
86589  , p_source_25 => l_array_source_25(Idx)
86590  , p_source_26 => l_array_source_26(Idx)
86591  , p_source_27 => l_array_source_27(Idx)
86592  , p_source_28 => l_array_source_28(Idx)
86593  , p_source_29 => l_array_source_29(Idx)
86594  , p_source_30 => l_array_source_30(Idx)
86595  , p_source_31 => l_array_source_31(Idx)
86596  , p_source_32 => l_array_source_32(Idx)
86597  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
86598  , p_source_34 => l_array_source_34(Idx)
86599  , p_source_35 => l_array_source_35(Idx)
86600  , p_source_35_meaning => l_array_source_35_meaning(Idx)
86601  , p_source_36 => l_array_source_36(Idx)
86602  );
86603 If(l_balance_type_code = 'A') THEN
86604   l_actual_gain_loss_ref := l_gain_or_loss_ref;
86605 END IF;
86606 
86607 --
86608 
86609       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
86610       -- or secondary ledger that has different currency with primary
86611       -- or alc that is calculated by sla
86612       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
86613             (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'))
86614 
86615 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
86616 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
86617           AND (l_actual_flag = 'A')) THEN
86618         XLA_AE_LINES_PKG.CreateGainOrLossLines(
86619           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
86620          ,p_application_id   => p_application_id
86621          ,p_amb_context_code => 'DEFAULT'
86622          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
86623          ,p_event_class_code => C_EVENT_CLASS_CODE
86624          ,p_event_type_code  => C_EVENT_TYPE_CODE
86625          
86626          ,p_gain_ccid        => -1
86627          ,p_loss_ccid        => -1
86628 
86629          ,p_actual_flag      => l_actual_flag
86630          ,p_enc_flag         => null
86634       END IF;
86631          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
86632          ,p_enc_g_l_ref      => null
86633          );
86635    END IF;
86636 END IF;
86637 
86638    ELSE
86639       --
86640       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
86641       --
86642       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86643          trace
86644             (p_msg      => 'Trancaction revesal option is Y'
86645             ,p_level    => C_LEVEL_STATEMENT
86646             ,p_module   => l_log_module);
86647       END IF;
86648    END IF;
86649 
86650 END LOOP;
86651 l_result := XLA_AE_LINES_PKG.InsertLines ;
86652 end loop;
86653 close line_cur;
86654 
86655 
86656 --
86657 -- insert headers into xla_ae_headers_gt table
86658 --
86659 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
86660 
86661 -- insert into errors table here.
86662 
86663 END LOOP;
86664 
86665 --
86666 -- 4865292
86667 --
86668 -- Compare g_hdr_extract_count with event count in
86669 -- CreateHeadersAndLines.
86670 --
86671 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
86672 
86673 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86674    trace (p_msg     => '# rows extracted from header extract objects '
86675                     || ' (running total): '
86676                     || g_hdr_extract_count
86677          ,p_level   => C_LEVEL_STATEMENT
86678          ,p_module  => l_log_module);
86679 END IF;
86680 
86681 CLOSE header_cur;
86682 --
86683 
86684 --
86685 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86686    trace
86687       (p_msg      => 'END of EventClass_156'
86688       ,p_level    => C_LEVEL_PROCEDURE
86689       ,p_module   => l_log_module);
86690 END IF;
86691 --
86692 RETURN l_result;
86693 EXCEPTION
86694 WHEN xla_exceptions_pkg.application_exception THEN
86695    
86696 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
86697 
86698    
86699 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
86700 
86701    RAISE;
86702 WHEN OTHERS THEN
86703    xla_exceptions_pkg.raise_message
86704       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_156');
86705 END EventClass_156;
86706 --
86707 
86708 ---------------------------------------
86709 --
86710 -- PRIVATE PROCEDURE
86711 --         insert_sources_157
86712 --
86713 ----------------------------------------
86714 --
86715 PROCEDURE insert_sources_157(
86716                                 p_target_ledger_id       IN NUMBER
86717                               , p_language               IN VARCHAR2
86718                               , p_sla_ledger_id          IN NUMBER
86719                               , p_pad_start_date         IN DATE
86720                               , p_pad_end_date           IN DATE
86721                          )
86722 IS
86723 
86724 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ADJ_ALL';
86725 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_COST_ADJ';
86726 p_apps_owner                   VARCHAR2(30);
86727 l_log_module                   VARCHAR2(240);
86728 BEGIN
86729 IF g_log_enabled THEN
86730       l_log_module := C_DEFAULT_MODULE||'.insert_sources_157';
86731 END IF;
86732 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86733 
86734       trace
86735          (p_msg      => 'BEGIN of insert_sources_157'
86736          ,p_level    => C_LEVEL_PROCEDURE
86737          ,p_module   => l_log_module);
86738 
86739 END IF;
86740 
86741 -- select APPS owner
86742 SELECT oracle_username
86743   INTO p_apps_owner
86744   FROM fnd_oracle_userid
86745  WHERE read_only_flag = 'U'
86746 ;
86747 
86748 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86749       trace
86750          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
86751                         ' - p_language = '||p_language||
86752                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
86753                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
86754                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
86755                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
86756          ,p_level    => C_LEVEL_STATEMENT
86757          ,p_module   => l_log_module);
86758 END IF;
86759 
86760 
86761 --
86762 INSERT INTO xla_diag_sources --hdr2
86763 (
86764         event_id
86765       , ledger_id
86766       , sla_ledger_id
86767       , description_language
86768       , object_name
86769       , object_type_code
86770       , line_number
86771       , source_application_id
86772       , source_type_code
86773       , source_code
86774       , source_value
86775       , source_meaning
86776       , created_by
86777       , creation_date
86778       , last_update_date
86779       , last_updated_by
86780       , last_update_login
86781       , program_update_date
86782       , program_application_id
86783       , program_id
86784       , request_id
86785 )
86786 SELECT
86787         event_id
86788       , p_target_ledger_id
86789       , p_sla_ledger_id
86790       , p_language
86791       , object_name
86792       , object_type_code
86793       , line_number
86794       , source_application_id
86795       , source_type_code
86796       , source_code
86797       , SUBSTR(source_value ,1,1996)
86798       , SUBSTR(source_meaning ,1,200)
86799       , xla_environment_pkg.g_Usr_Id
86800       , TRUNC(SYSDATE)
86801       , TRUNC(SYSDATE)
86802       , xla_environment_pkg.g_Usr_Id
86803       , xla_environment_pkg.g_Login_Id
86804       , TRUNC(SYSDATE)
86808   FROM (
86805       , xla_environment_pkg.g_Prog_Appl_Id
86806       , xla_environment_pkg.g_Prog_Id
86807       , xla_environment_pkg.g_Req_Id
86809        SELECT xet.event_id                  event_id
86810             , 0                          line_number
86811             , CASE r
86812                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
86813                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
86814                 
86815                ELSE null
86816               END                           object_name
86817             , CASE r
86818                 WHEN 1 THEN 'HEADER' 
86819                 WHEN 2 THEN 'HEADER' 
86820                 
86821                 ELSE null
86822               END                           object_type_code
86823             , CASE r
86824                 WHEN 1 THEN '275' 
86825                 WHEN 2 THEN '275' 
86826                 
86827                 ELSE null
86828               END                           source_application_id
86829             , 'S'             source_type_code
86830             , CASE r
86831                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
86832                 WHEN 2 THEN 'GL_DATE' 
86833                 
86834                 ELSE null
86835               END                           source_code
86836             , CASE r
86837                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
86838                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
86839                 
86840                 ELSE null
86841               END                           source_value
86842             , null              source_meaning
86843          FROM xla_events_gt     xet  
86844       , PA_XLA_EXP_HEADER_V  h2
86845              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
86846          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
86847            AND xet.event_class_code = C_EVENT_CLASS_CODE
86848               AND h2.event_id = xet.event_id
86849 
86850 )
86851 ;
86852 --
86853 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86854 
86855       trace
86856          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
86857          ,p_level    => C_LEVEL_STATEMENT
86858          ,p_module   => l_log_module);
86859 
86860 END IF;
86861 --
86862 
86863 
86864 
86865 --
86866 INSERT INTO xla_diag_sources  --line2
86867 (
86868         event_id
86869       , ledger_id
86870       , sla_ledger_id
86871       , description_language
86872       , object_name
86873       , object_type_code
86874       , line_number
86875       , source_application_id
86876       , source_type_code
86877       , source_code
86878       , source_value
86879       , source_meaning
86880       , created_by
86881       , creation_date
86882       , last_update_date
86883       , last_updated_by
86884       , last_update_login
86885       , program_update_date
86886       , program_application_id
86887       , program_id
86888       , request_id
86889 )
86890 SELECT  event_id
86891       , p_target_ledger_id
86892       , p_sla_ledger_id
86893       , p_language
86894       , object_name
86895       , object_type_code
86896       , line_number
86897       , source_application_id
86898       , source_type_code
86899       , source_code
86900       , SUBSTR(source_value,1,1996)
86901       , SUBSTR(source_meaning ,1,200)
86902       , xla_environment_pkg.g_Usr_Id
86903       , TRUNC(SYSDATE)
86904       , TRUNC(SYSDATE)
86905       , xla_environment_pkg.g_Usr_Id
86906       , xla_environment_pkg.g_Login_Id
86907       , TRUNC(SYSDATE)
86908       , xla_environment_pkg.g_Prog_Appl_Id
86909       , xla_environment_pkg.g_Prog_Id
86910       , xla_environment_pkg.g_Req_Id
86911   FROM (
86912        SELECT xet.event_id                  event_id
86913             , l1.line_number                 line_number
86914             , CASE r
86915                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
86916                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
86917                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
86918                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
86919                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
86920                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
86921                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
86922                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
86923                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
86924                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
86925                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
86926                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
86927                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
86928                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
86929                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
86930                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
86931                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
86932                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
86933                 
86934                ELSE null
86935               END                           object_name
86936             , CASE r
86937                 WHEN 1 THEN 'LINE' 
86938                 WHEN 2 THEN 'LINE' 
86939                 WHEN 3 THEN 'LINE' 
86940                 WHEN 4 THEN 'LINE' 
86941                 WHEN 5 THEN 'LINE' 
86942                 WHEN 6 THEN 'LINE' 
86943                 WHEN 7 THEN 'LINE' 
86944                 WHEN 8 THEN 'LINE' 
86945                 WHEN 9 THEN 'LINE' 
86946                 WHEN 10 THEN 'LINE' 
86947                 WHEN 11 THEN 'LINE' 
86948                 WHEN 12 THEN 'LINE' 
86949                 WHEN 13 THEN 'LINE' 
86950                 WHEN 14 THEN 'LINE' 
86951                 WHEN 15 THEN 'LINE' 
86952                 WHEN 16 THEN 'LINE' 
86953                 WHEN 17 THEN 'LINE' 
86957               END                           object_type_code
86954                 WHEN 18 THEN 'LINE' 
86955                 
86956                 ELSE null
86958             , CASE r
86959                 WHEN 1 THEN '275' 
86960                 WHEN 2 THEN '275' 
86961                 WHEN 3 THEN '275' 
86962                 WHEN 4 THEN '275' 
86963                 WHEN 5 THEN '275' 
86964                 WHEN 6 THEN '275' 
86965                 WHEN 7 THEN '275' 
86966                 WHEN 8 THEN '275' 
86967                 WHEN 9 THEN '275' 
86968                 WHEN 10 THEN '275' 
86969                 WHEN 11 THEN '275' 
86970                 WHEN 12 THEN '275' 
86971                 WHEN 13 THEN '275' 
86972                 WHEN 14 THEN '275' 
86973                 WHEN 15 THEN '275' 
86974                 WHEN 16 THEN '275' 
86975                 WHEN 17 THEN '275' 
86976                 WHEN 18 THEN '275' 
86977                 
86978                 ELSE null
86979               END                           source_application_id
86980             , 'S'             source_type_code
86981             , CASE r
86982                 WHEN 1 THEN 'COST_CCID' 
86983                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
86984                 WHEN 3 THEN 'ADJ_COST_CCID' 
86985                 WHEN 4 THEN 'COST_CLEARING_CCID' 
86986                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
86987                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
86988                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
86989                 WHEN 8 THEN 'ENTERED_RAW_COST' 
86990                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
86991                 WHEN 10 THEN 'ACCT_RAW_COST' 
86992                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
86993                 WHEN 12 THEN 'EXCHANGE_RATE' 
86994                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
86995                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
86996                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
86997                 WHEN 16 THEN 'LINE_NUMBER' 
86998                 WHEN 17 THEN 'LINE_TYPE' 
86999                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
87000                 
87001                 ELSE null
87002               END                           source_code
87003             , CASE r
87004                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
87005                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
87006                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
87007                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
87008                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
87009                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
87010                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
87011                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
87012                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
87013                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
87014                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
87015                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
87016                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
87017                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
87018                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
87019                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
87020                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
87021                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
87022                 
87023                 ELSE null
87024               END                           source_value
87025             , CASE r
87026                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
87027                           103371
87028                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
87029                          ,'ALLOW_OVERRIDE_CCID_FLAG'
87030                          ,'S'
87031                          ,275)
87032                 WHEN 17 THEN fvl35.meaning
87033                 
87034                 ELSE null
87035               END               source_meaning
87036          FROM  xla_events_gt     xet  
87037         , PA_XLA_CDL_LINES_V  l1
87038   , fnd_lookup_values    fvl35
87039             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
87040         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
87041           AND xet.event_class_code = C_EVENT_CLASS_CODE
87042             AND l1.event_id          = xet.event_id
87043    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
87044   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
87045   AND fvl35.view_application_id(+) = 275
87046   AND fvl35.language(+)            = USERENV('LANG')
87047   
87048 )
87049 ;
87050 --
87051 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87052 
87053       trace
87054          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
87055          ,p_level    => C_LEVEL_STATEMENT
87056          ,p_module   => l_log_module);
87057 
87058 END IF;
87059 
87060 
87061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87062       trace
87063          (p_msg      => 'END of insert_sources_157'
87064          ,p_level    => C_LEVEL_PROCEDURE
87065          ,p_module   => l_log_module);
87066 END IF;
87067 EXCEPTION
87068   WHEN xla_exceptions_pkg.application_exception THEN
87069       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
87070             trace
87071                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
87072                ,p_level    => C_LEVEL_EXCEPTION
87073                ,p_module   => l_log_module);
87074       END IF;
87075       RAISE;
87076   WHEN OTHERS THEN
87077       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
87078             trace
87079                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
87080                ,p_level    => C_LEVEL_EXCEPTION
87081                ,p_module   => l_log_module);
87082        END IF;
87086 --
87083        xla_exceptions_pkg.raise_message
87084            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_157');
87085 END insert_sources_157;
87087 
87088 ---------------------------------------
87089 --
87090 -- PRIVATE FUNCTION
87091 --         EventClass_157
87092 --
87093 ----------------------------------------
87094 --
87095 FUNCTION EventClass_157
87096        (p_application_id         IN NUMBER
87097        ,p_base_ledger_id         IN NUMBER
87098        ,p_target_ledger_id       IN NUMBER
87099        ,p_language               IN VARCHAR2
87100        ,p_currency_code          IN VARCHAR2
87101        ,p_sla_ledger_id          IN NUMBER
87102        ,p_pad_start_date         IN DATE
87103        ,p_pad_end_date           IN DATE
87104        ,p_primary_ledger_id      IN NUMBER)
87105 RETURN BOOLEAN IS
87106 --
87107 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ADJ_ALL';
87108 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_COST_ADJ';
87109 
87110 l_calculate_acctd_flag   VARCHAR2(1) :='N';
87111 l_calculate_g_l_flag     VARCHAR2(1) :='N';
87112 --
87113 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87114 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87115 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87116 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87117 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87118 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87119 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87120 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87121 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87122 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87123 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87124 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87125 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87126 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
87127 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87128 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87129 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87130 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
87131 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87132 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87133 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87134 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
87135 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
87136 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
87137 
87138 l_event_id                             NUMBER;
87139 l_previous_event_id                    NUMBER;
87140 l_first_event_id                       NUMBER;
87141 l_last_event_id                        NUMBER;
87142 
87143 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
87144 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
87145 --
87146 --
87147 l_result                    BOOLEAN := TRUE;
87148 l_rows                      NUMBER  := 1000;
87149 l_event_type_name           VARCHAR2(80) := 'All';
87150 l_event_class_name          VARCHAR2(80) := 'Miscelleneous Cost Adjustment';
87151 l_description               VARCHAR2(4000);
87152 l_transaction_reversal      NUMBER;
87153 l_ae_header_id              NUMBER;
87154 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
87155 l_log_module                VARCHAR2(240);
87156 --
87157 l_acct_reversal_source      VARCHAR2(30);
87158 l_trx_reversal_source       VARCHAR2(30);
87159 
87160 l_continue_with_lines       BOOLEAN := TRUE;
87161 --
87162 l_acc_rev_gl_date_source    DATE;                      -- 4262811
87163 --
87164 type t_array_event_id is table of number index by binary_integer;
87165 
87166 l_rec_array_event                    t_rec_array_event;
87167 l_null_rec_array_event               t_rec_array_event;
87168 l_array_ae_header_id                 xla_number_array_type;
87169 l_actual_flag                        VARCHAR2(1) := NULL;
87170 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
87171 l_balance_type_code                  VARCHAR2(1) :=NULL;
87172 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
87173 
87174 --
87175 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
87176 --
87177 
87178 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
87179 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
87180 
87181 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
87182 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
87183 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
87184 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
87185 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
87186 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
87187 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
87188 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
87189 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
87193 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
87190 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
87191 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
87192 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
87194 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
87195 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
87196 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
87197 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
87198 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
87199 
87200 l_array_source_33              t_array_source_33;
87201 l_array_source_75              t_array_source_75;
87202 
87203 l_array_source_4      t_array_source_4;
87204 l_array_source_5      t_array_source_5;
87205 l_array_source_6      t_array_source_6;
87206 l_array_source_7      t_array_source_7;
87207 l_array_source_8      t_array_source_8;
87208 l_array_source_23      t_array_source_23;
87209 l_array_source_24      t_array_source_24;
87210 l_array_source_25      t_array_source_25;
87211 l_array_source_26      t_array_source_26;
87212 l_array_source_27      t_array_source_27;
87213 l_array_source_28      t_array_source_28;
87214 l_array_source_29      t_array_source_29;
87215 l_array_source_30      t_array_source_30;
87216 l_array_source_31      t_array_source_31;
87217 l_array_source_32      t_array_source_32;
87218 l_array_source_34      t_array_source_34;
87219 l_array_source_35      t_array_source_35;
87220 l_array_source_35_meaning      t_array_lookup_meaning;
87221 l_array_source_36      t_array_source_36;
87222 
87223 --
87224 CURSOR header_cur
87225 IS
87226 SELECT /*+ leading(xet) cardinality(xet,1) */
87227 -- Event Class Code: MISC_COST_ADJ
87228     xet.entity_id
87229    ,xet.legal_entity_id
87230    ,xet.entity_code
87231    ,xet.transaction_number
87232    ,xet.event_id
87233    ,xet.event_class_code
87234    ,xet.event_type_code
87235    ,xet.event_number
87236    ,xet.event_date
87237    ,xet.transaction_date
87238    ,xet.reference_num_1
87239    ,xet.reference_num_2
87240    ,xet.reference_num_3
87241    ,xet.reference_num_4
87242    ,xet.reference_char_1
87243    ,xet.reference_char_2
87244    ,xet.reference_char_3
87245    ,xet.reference_char_4
87246    ,xet.reference_date_1
87247    ,xet.reference_date_2
87248    ,xet.reference_date_3
87249    ,xet.reference_date_4
87250    ,xet.event_created_by
87251    ,xet.budgetary_control_flag 
87252   , h2.EXPENDITURE_ITEM_ID    source_33
87253   , h2.GL_DATE    source_75
87254   FROM xla_events_gt     xet 
87255   , PA_XLA_EXP_HEADER_V  h2
87256  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
87257    and xet.event_class_code = C_EVENT_CLASS_CODE
87258    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
87259 
87260  ORDER BY event_id
87261 ;
87262 
87263 
87264 --
87265 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
87266 IS
87267 SELECT  /*+ leading(xet) cardinality(xet,1) */
87268 -- Event Class Code: MISC_COST_ADJ
87269     xet.entity_id
87270    ,xet.legal_entity_id
87271    ,xet.entity_code
87272    ,xet.transaction_number
87273    ,xet.event_id
87274    ,xet.event_class_code
87275    ,xet.event_type_code
87276    ,xet.event_number
87277    ,xet.event_date
87278    ,xet.transaction_date
87279    ,xet.reference_num_1
87280    ,xet.reference_num_2
87281    ,xet.reference_num_3
87282    ,xet.reference_num_4
87283    ,xet.reference_char_1
87284    ,xet.reference_char_2
87285    ,xet.reference_char_3
87286    ,xet.reference_char_4
87287    ,xet.reference_date_1
87288    ,xet.reference_date_2
87289    ,xet.reference_date_3
87290    ,xet.reference_date_4
87291    ,xet.event_created_by
87292    ,xet.budgetary_control_flag
87293  , l1.LINE_NUMBER  
87294   , l1.COST_CCID    source_4
87295   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
87296   , l1.ADJ_COST_CCID    source_6
87297   , l1.COST_CLEARING_CCID    source_7
87298   , l1.ADJ_COST_CLEARING_CCID    source_8
87299   , l1.REVERSING_LINE_FLAG    source_23
87300   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
87301   , l1.ENTERED_RAW_COST    source_25
87302   , l1.ENTERED_CURRENCY_CODE    source_26
87303   , l1.ACCT_RAW_COST    source_27
87304   , l1.EXCHANGE_RATE_DATE    source_28
87305   , l1.EXCHANGE_RATE    source_29
87306   , l1.EXCHANGE_RATE_TYPE    source_30
87307   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
87308   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
87309   , l1.LINE_NUMBER    source_34
87310   , l1.LINE_TYPE    source_35
87311   , fvl35.meaning   source_35_meaning
87312   , l1.LINE_NUM_REVERSED    source_36
87313   FROM xla_events_gt     xet 
87314   , PA_XLA_CDL_LINES_V  l1
87315   , fnd_lookup_values    fvl35
87316  WHERE xet.event_id between x_first_event_id and x_last_event_id
87317    and xet.event_date between p_pad_start_date and p_pad_end_date
87318    and xet.event_class_code = C_EVENT_CLASS_CODE
87319    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
87320    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
87321   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
87322   AND fvl35.view_application_id(+) = 275
87323   AND fvl35.language(+)            = USERENV('LANG')
87324   ;
87325 
87326 --
87327 BEGIN
87328 IF g_log_enabled THEN
87329    l_log_module := C_DEFAULT_MODULE||'.EventClass_157';
87330 END IF;
87331 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
87335       ,p_module   => l_log_module);
87332    trace
87333       (p_msg      => 'BEGIN of EventClass_157'
87334       ,p_level    => C_LEVEL_PROCEDURE
87336 END IF;
87337 
87338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87339    trace
87340       (p_msg      => 'p_application_id = '||p_application_id||
87341                      ' - p_base_ledger_id = '||p_base_ledger_id||
87342                      ' - p_target_ledger_id  = '||p_target_ledger_id||
87343                      ' - p_language = '||p_language||
87344                      ' - p_currency_code = '||p_currency_code||
87345                      ' - p_sla_ledger_id = '||p_sla_ledger_id
87346       ,p_level    => C_LEVEL_STATEMENT
87347       ,p_module   => l_log_module);
87348 END IF;
87349 --
87350 -- initialze arrays
87351 --
87352 g_array_event.DELETE;
87353 l_rec_array_event := l_null_rec_array_event;
87354 --
87355 --------------------------------------
87356 -- 4262811 Initialze MPA Line Number
87357 --------------------------------------
87358 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
87359 
87360 --
87361 
87362 --
87363 OPEN header_cur;
87364 --
87365 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87366    trace
87367    (p_msg      => 'SQL - FETCH header_cur'
87368    ,p_level    => C_LEVEL_STATEMENT
87369    ,p_module   => l_log_module);
87370 END IF;
87371 --
87372 LOOP
87373 FETCH header_cur BULK COLLECT INTO
87374         l_array_entity_id
87375       , l_array_legal_entity_id
87376       , l_array_entity_code
87377       , l_array_transaction_num
87378       , l_array_event_id
87379       , l_array_class_code
87380       , l_array_event_type
87381       , l_array_event_number
87382       , l_array_event_date
87383       , l_array_transaction_date
87384       , l_array_reference_num_1
87385       , l_array_reference_num_2
87386       , l_array_reference_num_3
87387       , l_array_reference_num_4
87388       , l_array_reference_char_1
87389       , l_array_reference_char_2
87390       , l_array_reference_char_3
87391       , l_array_reference_char_4
87392       , l_array_reference_date_1
87393       , l_array_reference_date_2
87394       , l_array_reference_date_3
87395       , l_array_reference_date_4
87396       , l_array_event_created_by
87397       , l_array_budgetary_control_flag 
87398       , l_array_source_33
87399       , l_array_source_75
87400       LIMIT l_rows;
87401 --
87402 IF (C_LEVEL_EVENT >= g_log_level) THEN
87403    trace
87404    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
87405    ,p_level    => C_LEVEL_EVENT
87406    ,p_module   => l_log_module);
87407 END IF;
87408 --
87409 EXIT WHEN l_array_entity_id.COUNT = 0;
87410 
87411 -- initialize arrays
87412 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
87413 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
87414 
87415 --
87416 -- Bug 4458708
87417 --
87418 XLA_AE_LINES_PKG.g_LineNumber := 0;
87419 
87420 
87421 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
87422 g_last_hdr_idx := l_array_event_id.LAST;
87423 --
87424 -- loop for the headers. Each iteration is for each header extract row
87425 -- fetched in header cursor
87426 --
87427 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
87428 
87429 --
87430 -- set event info as cache for other routines to refer event attributes
87431 --
87432 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
87433    (p_application_id           => p_application_id
87434    ,p_primary_ledger_id        => p_primary_ledger_id
87435    ,p_base_ledger_id           => p_base_ledger_id
87436    ,p_target_ledger_id         => p_target_ledger_id
87437    ,p_entity_id                => l_array_entity_id(hdr_idx)
87438    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
87439    ,p_entity_code              => l_array_entity_code(hdr_idx)
87440    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
87441    ,p_event_id                 => l_array_event_id(hdr_idx)
87442    ,p_event_class_code         => l_array_class_code(hdr_idx)
87443    ,p_event_type_code          => l_array_event_type(hdr_idx)
87444    ,p_event_number             => l_array_event_number(hdr_idx)
87445    ,p_event_date               => l_array_event_date(hdr_idx)
87446    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
87447    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
87448    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
87449    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
87450    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
87451    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
87452    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
87453    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
87454    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
87455    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
87456    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
87457    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
87458    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
87459    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
87460    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
87461 
87462 --
87463 -- set the status of entry to C_VALID (0)
87464 --
87465 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
87466 
87467 --
87468 -- initialize a row for ae header
87469 --
87470 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
87471 
87472 l_event_id := l_array_event_id(hdr_idx);
87473 
87474 --
87475 -- storing the hdr_idx for event. May be used by line cursor.
87479 --
87476 --
87477 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
87478 
87480 -- store sources from header extract. This can be improved to
87481 -- store only those sources from header extract that may be used in lines
87482 --
87483 
87484 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
87485 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
87486 
87487 --
87488 -- initilaize the status of ae headers for diffrent balance types
87489 -- the status is initialised to C_NOT_CREATED (2)
87490 --
87491 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87492 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87493 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
87494 
87495 --
87496 -- call api to validate and store accounting attributes for header
87497 --
87498 
87499 ------------------------------------------------------------
87500 -- Accrual Reversal : to get date for Standard Source (NONE)
87501 ------------------------------------------------------------
87502 l_acc_rev_gl_date_source := NULL;
87503 
87504      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
87505       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
87506 
87507 
87508 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
87509 
87510 XLA_AE_HEADER_PKG.SetJeCategoryName;
87511 
87512 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
87513 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
87514 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
87515 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
87516 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
87517 
87518 
87519 -- No header level analytical criteria
87520 
87521 --
87522 --accounting attribute enhancement, bug 3612931
87523 --
87524 l_trx_reversal_source := SUBSTR(NULL, 1,30);
87525 
87526 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
87527    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
87528 
87529    xla_accounting_err_pkg.build_message
87530       (p_appli_s_name            => 'XLA'
87531       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
87532       ,p_token_1                 => 'ACCT_ATTR_NAME'
87533       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
87534       ,p_token_2                 => 'PRODUCT_NAME'
87535       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
87536       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
87537       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
87538       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
87539 
87540 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
87541    --
87542    -- following sets the accounting attributes needed to reverse
87543    -- accounting for a distributeion
87544    --
87545    xla_ae_lines_pkg.SetTrxReversalAttrs
87546       (p_event_id              => l_event_id
87547       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
87548       ,p_trx_reversal_source   => l_trx_reversal_source);
87549 
87550 END IF;
87551 
87552 
87553 ----------------------------------------------------------------
87554 -- 4262811 -  update the header statuses to invalid in need be
87555 ----------------------------------------------------------------
87556 --
87557 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
87558 
87559 
87560   -----------------------------------------------
87561   -- No accrual reversal for the event class/type
87562   -----------------------------------------------
87563 ----------------------------------------------------------------
87564 
87565 --
87566 -- this ends the header loop iteration for one bulk fetch
87567 --
87568 END LOOP;
87569 
87570 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
87571 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
87572 
87573 --
87574 -- insert dummy rows into lines gt table that were created due to
87575 -- transaction reversals
87576 --
87577 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
87578    l_result := XLA_AE_LINES_PKG.InsertLines;
87579 END IF;
87580 
87581 --
87582 -- reset the temp_line_num for each set of events fetched from header
87583 -- cursor rather than doing it for each new event in line cursor
87584 -- Bug 3939231
87585 --
87586 xla_ae_lines_pkg.g_temp_line_num := 0;
87587 
87588 
87589 
87590 --
87591 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
87592 --
87593 --
87594 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87595 
87596       trace
87597          (p_msg      => 'SQL - FETCH line_cur'
87598          ,p_level    => C_LEVEL_STATEMENT
87599          ,p_module   => l_log_module);
87600 
87601 END IF;
87602 --
87603 --
87604 LOOP
87605   --
87606   FETCH line_cur BULK COLLECT INTO
87607         l_array_entity_id
87608       , l_array_legal_entity_id
87609       , l_array_entity_code
87610       , l_array_transaction_num
87611       , l_array_event_id
87612       , l_array_class_code
87613       , l_array_event_type
87614       , l_array_event_number
87615       , l_array_event_date
87616       , l_array_transaction_date
87620       , l_array_reference_num_4
87617       , l_array_reference_num_1
87618       , l_array_reference_num_2
87619       , l_array_reference_num_3
87621       , l_array_reference_char_1
87622       , l_array_reference_char_2
87623       , l_array_reference_char_3
87624       , l_array_reference_char_4
87625       , l_array_reference_date_1
87626       , l_array_reference_date_2
87627       , l_array_reference_date_3
87628       , l_array_reference_date_4
87629       , l_array_event_created_by
87630       , l_array_budgetary_control_flag
87631       , l_array_extract_line_num 
87632       , l_array_source_4
87633       , l_array_source_5
87634       , l_array_source_6
87635       , l_array_source_7
87636       , l_array_source_8
87637       , l_array_source_23
87638       , l_array_source_24
87639       , l_array_source_25
87640       , l_array_source_26
87641       , l_array_source_27
87642       , l_array_source_28
87643       , l_array_source_29
87644       , l_array_source_30
87645       , l_array_source_31
87646       , l_array_source_32
87647       , l_array_source_34
87648       , l_array_source_35
87649       , l_array_source_35_meaning
87650       , l_array_source_36
87651       LIMIT l_rows;
87652 
87653   --
87654   IF (C_LEVEL_EVENT >= g_log_level) THEN
87655             trace
87656                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
87657                ,p_level    => C_LEVEL_EVENT
87658                ,p_module   => l_log_module);
87659   END IF;
87660   --
87661   EXIT WHEN l_array_entity_id.count = 0;
87662 
87663   XLA_AE_LINES_PKG.g_rec_lines := null;
87664 
87665 --
87666 -- Bug 4458708
87667 --
87668 XLA_AE_LINES_PKG.g_LineNumber := 0;
87669 --
87670 --
87671 
87672 FOR Idx IN 1..l_array_event_id.count LOOP
87673    --
87674    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
87675    --
87676    l_event_id := l_array_event_id(idx);  -- 5648433
87677 
87678    --
87679    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
87680    --
87681 
87682    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
87683              (g_array_event(l_event_id).array_value_num('header_index'))
87684          ,'N'
87685          ) <> 'Y'
87686    THEN
87687       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
87688          trace
87689             (p_msg      => 'Trancaction revesal option is not Y '
87690             ,p_level    => C_LEVEL_STATEMENT
87691             ,p_module   => l_log_module);
87692       END IF;
87693 
87694 --
87695 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
87696 --
87697 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
87698 --
87699 -- set event info as cache for other routines to refer event attributes
87700 --
87701 
87702 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
87703    l_previous_event_id := l_event_id;
87704 
87705    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
87706       (p_application_id           => p_application_id
87707       ,p_primary_ledger_id        => p_primary_ledger_id
87708       ,p_base_ledger_id           => p_base_ledger_id
87709       ,p_target_ledger_id         => p_target_ledger_id
87710       ,p_entity_id                => l_array_entity_id(Idx)
87711       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
87712       ,p_entity_code              => l_array_entity_code(Idx)
87713       ,p_transaction_num          => l_array_transaction_num(Idx)
87714       ,p_event_id                 => l_array_event_id(Idx)
87715       ,p_event_class_code         => l_array_class_code(Idx)
87716       ,p_event_type_code          => l_array_event_type(Idx)
87717       ,p_event_number             => l_array_event_number(Idx)
87718       ,p_event_date               => l_array_event_date(Idx)
87719       ,p_transaction_date         => l_array_transaction_date(Idx)
87720       ,p_reference_num_1          => l_array_reference_num_1(Idx)
87721       ,p_reference_num_2          => l_array_reference_num_2(Idx)
87722       ,p_reference_num_3          => l_array_reference_num_3(Idx)
87723       ,p_reference_num_4          => l_array_reference_num_4(Idx)
87724       ,p_reference_char_1         => l_array_reference_char_1(Idx)
87725       ,p_reference_char_2         => l_array_reference_char_2(Idx)
87726       ,p_reference_char_3         => l_array_reference_char_3(Idx)
87727       ,p_reference_char_4         => l_array_reference_char_4(Idx)
87728       ,p_reference_date_1         => l_array_reference_date_1(Idx)
87729       ,p_reference_date_2         => l_array_reference_date_2(Idx)
87730       ,p_reference_date_3         => l_array_reference_date_3(Idx)
87731       ,p_reference_date_4         => l_array_reference_date_4(Idx)
87732       ,p_event_created_by         => l_array_event_created_by(Idx)
87733       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
87734        --
87735 END IF;
87736 
87737 
87738 
87739 --
87740 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
87741 
87742 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
87743 
87744 IF l_continue_with_lines THEN
87745    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
87746       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
87747 
87748       xla_accounting_err_pkg.build_message
87749          (p_appli_s_name            => 'XLA'
87750          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
87751          ,p_token_1                 => 'LINE_NUMBER'
87752          ,p_value_1                 => l_array_extract_line_num(Idx)
87753          ,p_token_2                 => 'PRODUCT_NAME'
87757          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
87754          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
87755          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
87756          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
87758 
87759    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
87760       --
87761       -- following sets the accounting attributes needed to reverse
87762       -- accounting for a distributeion
87763       --
87764 
87765       --
87766       -- 5217187
87767       --
87768       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
87769       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
87770                                        g_array_event(l_event_id).array_value_num('header_index'));
87771       --
87772       --
87773 
87774       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
87775       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
87776       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
87777       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
87778       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
87779       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
87780       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
87781       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
87782       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
87783       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
87784       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
87785       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
87786       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
87787       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
87788       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
87789       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
87790       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
87791       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
87792       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
87793       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
87794       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
87795       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
87796       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
87797       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
87798       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
87799       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
87800       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
87801       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
87802       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
87803       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
87804       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
87805       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
87806       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
87807       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
87808       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
87809       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
87810       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
87811       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
87812       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
87813       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
87814       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
87815       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
87816       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
87817       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
87818       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
87819       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
87820       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
87821       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
87822 
87823 
87824       xla_ae_lines_pkg.SetAcctReversalAttrs
87825          (p_event_id             => l_event_id
87826          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
87827          ,p_calculate_acctd_flag => l_calculate_acctd_flag
87828          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
87829    END IF;
87830 
87831    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
87832        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
87833 
87834 --
87835 AcctLineType_72 (
87836  p_application_id  => p_application_id
87837  ,p_event_id     => l_event_id
87838  ,p_calculate_acctd_flag => l_calculate_acctd_flag
87839  ,p_calculate_g_l_flag => l_calculate_g_l_flag
87840  ,p_actual_flag => l_actual_flag
87841  ,p_balance_type_code => l_balance_type_code
87842  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
87843  
87844  , p_source_4 => l_array_source_4(Idx)
87845  , p_source_5 => l_array_source_5(Idx)
87846  , p_source_6 => l_array_source_6(Idx)
87847  , p_source_7 => l_array_source_7(Idx)
87848  , p_source_23 => l_array_source_23(Idx)
87849  , p_source_24 => l_array_source_24(Idx)
87850  , p_source_25 => l_array_source_25(Idx)
87854  , p_source_29 => l_array_source_29(Idx)
87851  , p_source_26 => l_array_source_26(Idx)
87852  , p_source_27 => l_array_source_27(Idx)
87853  , p_source_28 => l_array_source_28(Idx)
87855  , p_source_30 => l_array_source_30(Idx)
87856  , p_source_31 => l_array_source_31(Idx)
87857  , p_source_32 => l_array_source_32(Idx)
87858  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
87859  , p_source_34 => l_array_source_34(Idx)
87860  , p_source_35 => l_array_source_35(Idx)
87861  , p_source_35_meaning => l_array_source_35_meaning(Idx)
87862  , p_source_36 => l_array_source_36(Idx)
87863  );
87864 If(l_balance_type_code = 'A') THEN
87865   l_actual_gain_loss_ref := l_gain_or_loss_ref;
87866 END IF;
87867 
87868 --
87869 
87870 
87871 --
87872 AcctLineType_82 (
87873  p_application_id  => p_application_id
87874  ,p_event_id     => l_event_id
87875  ,p_calculate_acctd_flag => l_calculate_acctd_flag
87876  ,p_calculate_g_l_flag => l_calculate_g_l_flag
87877  ,p_actual_flag => l_actual_flag
87878  ,p_balance_type_code => l_balance_type_code
87879  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
87880  
87881  , p_source_4 => l_array_source_4(Idx)
87882  , p_source_5 => l_array_source_5(Idx)
87883  , p_source_6 => l_array_source_6(Idx)
87884  , p_source_7 => l_array_source_7(Idx)
87885  , p_source_23 => l_array_source_23(Idx)
87886  , p_source_24 => l_array_source_24(Idx)
87887  , p_source_25 => l_array_source_25(Idx)
87888  , p_source_26 => l_array_source_26(Idx)
87889  , p_source_27 => l_array_source_27(Idx)
87890  , p_source_28 => l_array_source_28(Idx)
87891  , p_source_29 => l_array_source_29(Idx)
87892  , p_source_30 => l_array_source_30(Idx)
87893  , p_source_31 => l_array_source_31(Idx)
87894  , p_source_32 => l_array_source_32(Idx)
87895  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
87896  , p_source_34 => l_array_source_34(Idx)
87897  , p_source_35 => l_array_source_35(Idx)
87898  , p_source_35_meaning => l_array_source_35_meaning(Idx)
87899  , p_source_36 => l_array_source_36(Idx)
87900  );
87901 If(l_balance_type_code = 'A') THEN
87902   l_actual_gain_loss_ref := l_gain_or_loss_ref;
87903 END IF;
87904 
87905 --
87906 
87907 
87908 --
87909 AcctLineType_93 (
87910  p_application_id  => p_application_id
87911  ,p_event_id     => l_event_id
87912  ,p_calculate_acctd_flag => l_calculate_acctd_flag
87913  ,p_calculate_g_l_flag => l_calculate_g_l_flag
87914  ,p_actual_flag => l_actual_flag
87915  ,p_balance_type_code => l_balance_type_code
87916  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
87917  
87918  , p_source_4 => l_array_source_4(Idx)
87919  , p_source_5 => l_array_source_5(Idx)
87920  , p_source_7 => l_array_source_7(Idx)
87921  , p_source_8 => l_array_source_8(Idx)
87922  , p_source_23 => l_array_source_23(Idx)
87923  , p_source_24 => l_array_source_24(Idx)
87924  , p_source_25 => l_array_source_25(Idx)
87925  , p_source_26 => l_array_source_26(Idx)
87926  , p_source_27 => l_array_source_27(Idx)
87927  , p_source_28 => l_array_source_28(Idx)
87928  , p_source_29 => l_array_source_29(Idx)
87929  , p_source_30 => l_array_source_30(Idx)
87930  , p_source_31 => l_array_source_31(Idx)
87931  , p_source_32 => l_array_source_32(Idx)
87932  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
87933  , p_source_34 => l_array_source_34(Idx)
87934  , p_source_35 => l_array_source_35(Idx)
87935  , p_source_35_meaning => l_array_source_35_meaning(Idx)
87936  , p_source_36 => l_array_source_36(Idx)
87937  );
87938 If(l_balance_type_code = 'A') THEN
87939   l_actual_gain_loss_ref := l_gain_or_loss_ref;
87940 END IF;
87941 
87942 --
87943 
87944 
87945 --
87946 AcctLineType_99 (
87947  p_application_id  => p_application_id
87948  ,p_event_id     => l_event_id
87949  ,p_calculate_acctd_flag => l_calculate_acctd_flag
87950  ,p_calculate_g_l_flag => l_calculate_g_l_flag
87951  ,p_actual_flag => l_actual_flag
87952  ,p_balance_type_code => l_balance_type_code
87953  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
87954  
87955  , p_source_4 => l_array_source_4(Idx)
87956  , p_source_5 => l_array_source_5(Idx)
87957  , p_source_7 => l_array_source_7(Idx)
87958  , p_source_8 => l_array_source_8(Idx)
87959  , p_source_23 => l_array_source_23(Idx)
87960  , p_source_24 => l_array_source_24(Idx)
87961  , p_source_25 => l_array_source_25(Idx)
87962  , p_source_26 => l_array_source_26(Idx)
87963  , p_source_27 => l_array_source_27(Idx)
87964  , p_source_28 => l_array_source_28(Idx)
87965  , p_source_29 => l_array_source_29(Idx)
87966  , p_source_30 => l_array_source_30(Idx)
87967  , p_source_31 => l_array_source_31(Idx)
87968  , p_source_32 => l_array_source_32(Idx)
87969  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
87970  , p_source_34 => l_array_source_34(Idx)
87971  , p_source_35 => l_array_source_35(Idx)
87972  , p_source_35_meaning => l_array_source_35_meaning(Idx)
87973  , p_source_36 => l_array_source_36(Idx)
87974  );
87975 If(l_balance_type_code = 'A') THEN
87976   l_actual_gain_loss_ref := l_gain_or_loss_ref;
87977 END IF;
87978 
87979 --
87980 
87981       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
87982       -- or secondary ledger that has different currency with primary
87983       -- or alc that is calculated by sla
87984       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
87985             (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'))
87986 
87987 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
87988 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
87989           AND (l_actual_flag = 'A')) THEN
87993          ,p_amb_context_code => 'DEFAULT'
87990         XLA_AE_LINES_PKG.CreateGainOrLossLines(
87991           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
87992          ,p_application_id   => p_application_id
87994          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
87995          ,p_event_class_code => C_EVENT_CLASS_CODE
87996          ,p_event_type_code  => C_EVENT_TYPE_CODE
87997          
87998          ,p_gain_ccid        => -1
87999          ,p_loss_ccid        => -1
88000 
88001          ,p_actual_flag      => l_actual_flag
88002          ,p_enc_flag         => null
88003          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
88004          ,p_enc_g_l_ref      => null
88005          );
88006       END IF;
88007    END IF;
88008 END IF;
88009 
88010    ELSE
88011       --
88012       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
88013       --
88014       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88015          trace
88016             (p_msg      => 'Trancaction revesal option is Y'
88017             ,p_level    => C_LEVEL_STATEMENT
88018             ,p_module   => l_log_module);
88019       END IF;
88020    END IF;
88021 
88022 END LOOP;
88023 l_result := XLA_AE_LINES_PKG.InsertLines ;
88024 end loop;
88025 close line_cur;
88026 
88027 
88028 --
88029 -- insert headers into xla_ae_headers_gt table
88030 --
88031 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
88032 
88033 -- insert into errors table here.
88034 
88035 END LOOP;
88036 
88037 --
88038 -- 4865292
88039 --
88040 -- Compare g_hdr_extract_count with event count in
88041 -- CreateHeadersAndLines.
88042 --
88043 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
88044 
88045 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88046    trace (p_msg     => '# rows extracted from header extract objects '
88047                     || ' (running total): '
88048                     || g_hdr_extract_count
88049          ,p_level   => C_LEVEL_STATEMENT
88050          ,p_module  => l_log_module);
88051 END IF;
88052 
88053 CLOSE header_cur;
88054 --
88055 
88056 --
88057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88058    trace
88059       (p_msg      => 'END of EventClass_157'
88060       ,p_level    => C_LEVEL_PROCEDURE
88061       ,p_module   => l_log_module);
88062 END IF;
88063 --
88064 RETURN l_result;
88065 EXCEPTION
88066 WHEN xla_exceptions_pkg.application_exception THEN
88067    
88068 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
88069 
88070    
88071 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
88072 
88073    RAISE;
88074 WHEN OTHERS THEN
88075    xla_exceptions_pkg.raise_message
88076       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_157');
88077 END EventClass_157;
88078 --
88079 
88080 ---------------------------------------
88081 --
88082 -- PRIVATE PROCEDURE
88083 --         insert_sources_158
88084 --
88085 ----------------------------------------
88086 --
88087 PROCEDURE insert_sources_158(
88088                                 p_target_ledger_id       IN NUMBER
88089                               , p_language               IN VARCHAR2
88090                               , p_sla_ledger_id          IN NUMBER
88091                               , p_pad_start_date         IN DATE
88092                               , p_pad_end_date           IN DATE
88093                          )
88094 IS
88095 
88096 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ALL';
88097 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_COST';
88098 p_apps_owner                   VARCHAR2(30);
88099 l_log_module                   VARCHAR2(240);
88100 BEGIN
88101 IF g_log_enabled THEN
88102       l_log_module := C_DEFAULT_MODULE||'.insert_sources_158';
88103 END IF;
88104 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88105 
88106       trace
88107          (p_msg      => 'BEGIN of insert_sources_158'
88108          ,p_level    => C_LEVEL_PROCEDURE
88109          ,p_module   => l_log_module);
88110 
88111 END IF;
88112 
88113 -- select APPS owner
88114 SELECT oracle_username
88115   INTO p_apps_owner
88116   FROM fnd_oracle_userid
88117  WHERE read_only_flag = 'U'
88118 ;
88119 
88120 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88121       trace
88122          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
88123                         ' - p_language = '||p_language||
88124                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
88125                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
88126                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
88127                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
88128          ,p_level    => C_LEVEL_STATEMENT
88129          ,p_module   => l_log_module);
88130 END IF;
88131 
88132 
88133 --
88134 INSERT INTO xla_diag_sources --hdr2
88135 (
88136         event_id
88137       , ledger_id
88138       , sla_ledger_id
88139       , description_language
88140       , object_name
88141       , object_type_code
88142       , line_number
88143       , source_application_id
88144       , source_type_code
88145       , source_code
88146       , source_value
88147       , source_meaning
88148       , created_by
88149       , creation_date
88150       , last_update_date
88151       , last_updated_by
88152       , last_update_login
88153       , program_update_date
88154       , program_application_id
88155       , program_id
88156       , request_id
88157 )
88158 SELECT
88159         event_id
88163       , object_name
88160       , p_target_ledger_id
88161       , p_sla_ledger_id
88162       , p_language
88164       , object_type_code
88165       , line_number
88166       , source_application_id
88167       , source_type_code
88168       , source_code
88169       , SUBSTR(source_value ,1,1996)
88170       , SUBSTR(source_meaning ,1,200)
88171       , xla_environment_pkg.g_Usr_Id
88172       , TRUNC(SYSDATE)
88173       , TRUNC(SYSDATE)
88174       , xla_environment_pkg.g_Usr_Id
88175       , xla_environment_pkg.g_Login_Id
88176       , TRUNC(SYSDATE)
88177       , xla_environment_pkg.g_Prog_Appl_Id
88178       , xla_environment_pkg.g_Prog_Id
88179       , xla_environment_pkg.g_Req_Id
88180   FROM (
88181        SELECT xet.event_id                  event_id
88182             , 0                          line_number
88183             , CASE r
88184                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
88185                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
88186                 
88187                ELSE null
88188               END                           object_name
88189             , CASE r
88190                 WHEN 1 THEN 'HEADER' 
88191                 WHEN 2 THEN 'HEADER' 
88192                 
88193                 ELSE null
88194               END                           object_type_code
88195             , CASE r
88196                 WHEN 1 THEN '275' 
88197                 WHEN 2 THEN '275' 
88198                 
88199                 ELSE null
88200               END                           source_application_id
88201             , 'S'             source_type_code
88202             , CASE r
88203                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
88204                 WHEN 2 THEN 'GL_DATE' 
88205                 
88206                 ELSE null
88207               END                           source_code
88208             , CASE r
88209                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
88210                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
88211                 
88212                 ELSE null
88213               END                           source_value
88214             , null              source_meaning
88215          FROM xla_events_gt     xet  
88216       , PA_XLA_EXP_HEADER_V  h2
88217              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
88218          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
88219            AND xet.event_class_code = C_EVENT_CLASS_CODE
88220               AND h2.event_id = xet.event_id
88221 
88222 )
88223 ;
88224 --
88225 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88226 
88227       trace
88228          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
88229          ,p_level    => C_LEVEL_STATEMENT
88230          ,p_module   => l_log_module);
88231 
88232 END IF;
88233 --
88234 
88235 
88236 
88237 --
88238 INSERT INTO xla_diag_sources  --line2
88239 (
88240         event_id
88241       , ledger_id
88242       , sla_ledger_id
88243       , description_language
88244       , object_name
88245       , object_type_code
88246       , line_number
88247       , source_application_id
88248       , source_type_code
88249       , source_code
88250       , source_value
88251       , source_meaning
88252       , created_by
88253       , creation_date
88254       , last_update_date
88255       , last_updated_by
88256       , last_update_login
88257       , program_update_date
88258       , program_application_id
88259       , program_id
88260       , request_id
88261 )
88262 SELECT  event_id
88263       , p_target_ledger_id
88264       , p_sla_ledger_id
88265       , p_language
88266       , object_name
88267       , object_type_code
88268       , line_number
88269       , source_application_id
88270       , source_type_code
88271       , source_code
88272       , SUBSTR(source_value,1,1996)
88273       , SUBSTR(source_meaning ,1,200)
88274       , xla_environment_pkg.g_Usr_Id
88275       , TRUNC(SYSDATE)
88276       , TRUNC(SYSDATE)
88277       , xla_environment_pkg.g_Usr_Id
88278       , xla_environment_pkg.g_Login_Id
88279       , TRUNC(SYSDATE)
88280       , xla_environment_pkg.g_Prog_Appl_Id
88281       , xla_environment_pkg.g_Prog_Id
88282       , xla_environment_pkg.g_Req_Id
88283   FROM (
88284        SELECT xet.event_id                  event_id
88285             , l1.line_number                 line_number
88286             , CASE r
88287                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
88288                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
88289                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
88290                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
88291                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
88292                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
88293                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
88294                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
88295                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
88296                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
88297                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
88298                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
88299                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
88300                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
88301                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
88302                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
88303                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
88304                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
88305                 
88306                ELSE null
88307               END                           object_name
88308             , CASE r
88309                 WHEN 1 THEN 'LINE' 
88310                 WHEN 2 THEN 'LINE' 
88311                 WHEN 3 THEN 'LINE' 
88315                 WHEN 7 THEN 'LINE' 
88312                 WHEN 4 THEN 'LINE' 
88313                 WHEN 5 THEN 'LINE' 
88314                 WHEN 6 THEN 'LINE' 
88316                 WHEN 8 THEN 'LINE' 
88317                 WHEN 9 THEN 'LINE' 
88318                 WHEN 10 THEN 'LINE' 
88319                 WHEN 11 THEN 'LINE' 
88320                 WHEN 12 THEN 'LINE' 
88321                 WHEN 13 THEN 'LINE' 
88322                 WHEN 14 THEN 'LINE' 
88323                 WHEN 15 THEN 'LINE' 
88324                 WHEN 16 THEN 'LINE' 
88325                 WHEN 17 THEN 'LINE' 
88326                 WHEN 18 THEN 'LINE' 
88327                 
88328                 ELSE null
88329               END                           object_type_code
88330             , CASE r
88331                 WHEN 1 THEN '275' 
88332                 WHEN 2 THEN '275' 
88333                 WHEN 3 THEN '275' 
88334                 WHEN 4 THEN '275' 
88335                 WHEN 5 THEN '275' 
88336                 WHEN 6 THEN '275' 
88337                 WHEN 7 THEN '275' 
88338                 WHEN 8 THEN '275' 
88339                 WHEN 9 THEN '275' 
88340                 WHEN 10 THEN '275' 
88341                 WHEN 11 THEN '275' 
88342                 WHEN 12 THEN '275' 
88343                 WHEN 13 THEN '275' 
88344                 WHEN 14 THEN '275' 
88345                 WHEN 15 THEN '275' 
88346                 WHEN 16 THEN '275' 
88347                 WHEN 17 THEN '275' 
88348                 WHEN 18 THEN '275' 
88349                 
88350                 ELSE null
88351               END                           source_application_id
88352             , 'S'             source_type_code
88353             , CASE r
88354                 WHEN 1 THEN 'COST_CCID' 
88355                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
88356                 WHEN 3 THEN 'ADJ_COST_CCID' 
88357                 WHEN 4 THEN 'COST_CLEARING_CCID' 
88358                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
88359                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
88360                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
88361                 WHEN 8 THEN 'ENTERED_RAW_COST' 
88362                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
88363                 WHEN 10 THEN 'ACCT_RAW_COST' 
88364                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
88365                 WHEN 12 THEN 'EXCHANGE_RATE' 
88366                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
88367                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
88368                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
88369                 WHEN 16 THEN 'LINE_NUMBER' 
88370                 WHEN 17 THEN 'LINE_TYPE' 
88371                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
88372                 
88373                 ELSE null
88374               END                           source_code
88375             , CASE r
88376                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
88377                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
88378                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
88379                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
88380                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
88381                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
88382                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
88383                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
88384                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
88385                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
88386                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
88387                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
88388                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
88389                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
88390                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
88391                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
88392                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
88393                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
88394                 
88395                 ELSE null
88396               END                           source_value
88397             , CASE r
88398                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
88399                           103371
88400                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
88401                          ,'ALLOW_OVERRIDE_CCID_FLAG'
88402                          ,'S'
88403                          ,275)
88404                 WHEN 17 THEN fvl35.meaning
88405                 
88406                 ELSE null
88407               END               source_meaning
88408          FROM  xla_events_gt     xet  
88409         , PA_XLA_CDL_LINES_V  l1
88410   , fnd_lookup_values    fvl35
88411             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
88412         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
88413           AND xet.event_class_code = C_EVENT_CLASS_CODE
88414             AND l1.event_id          = xet.event_id
88415    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
88416   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
88417   AND fvl35.view_application_id(+) = 275
88418   AND fvl35.language(+)            = USERENV('LANG')
88419   
88420 )
88421 ;
88422 --
88423 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88424 
88425       trace
88426          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
88427          ,p_level    => C_LEVEL_STATEMENT
88428          ,p_module   => l_log_module);
88429 
88430 END IF;
88431 
88432 
88433 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88434       trace
88435          (p_msg      => 'END of insert_sources_158'
88436          ,p_level    => C_LEVEL_PROCEDURE
88437          ,p_module   => l_log_module);
88438 END IF;
88439 EXCEPTION
88440   WHEN xla_exceptions_pkg.application_exception THEN
88444                ,p_level    => C_LEVEL_EXCEPTION
88441       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
88442             trace
88443                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
88445                ,p_module   => l_log_module);
88446       END IF;
88447       RAISE;
88448   WHEN OTHERS THEN
88449       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
88450             trace
88451                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
88452                ,p_level    => C_LEVEL_EXCEPTION
88453                ,p_module   => l_log_module);
88454        END IF;
88455        xla_exceptions_pkg.raise_message
88456            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_158');
88457 END insert_sources_158;
88458 --
88459 
88460 ---------------------------------------
88461 --
88462 -- PRIVATE FUNCTION
88463 --         EventClass_158
88464 --
88465 ----------------------------------------
88466 --
88467 FUNCTION EventClass_158
88468        (p_application_id         IN NUMBER
88469        ,p_base_ledger_id         IN NUMBER
88470        ,p_target_ledger_id       IN NUMBER
88471        ,p_language               IN VARCHAR2
88472        ,p_currency_code          IN VARCHAR2
88473        ,p_sla_ledger_id          IN NUMBER
88474        ,p_pad_start_date         IN DATE
88475        ,p_pad_end_date           IN DATE
88476        ,p_primary_ledger_id      IN NUMBER)
88477 RETURN BOOLEAN IS
88478 --
88479 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_COST_ALL';
88480 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_COST';
88481 
88482 l_calculate_acctd_flag   VARCHAR2(1) :='N';
88483 l_calculate_g_l_flag     VARCHAR2(1) :='N';
88484 --
88485 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88486 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88487 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
88488 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
88489 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88490 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
88491 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
88492 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88493 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
88494 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
88495 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88496 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88497 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88498 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
88499 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
88500 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
88501 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
88502 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
88503 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
88504 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
88505 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
88506 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
88507 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
88508 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
88509 
88510 l_event_id                             NUMBER;
88511 l_previous_event_id                    NUMBER;
88512 l_first_event_id                       NUMBER;
88513 l_last_event_id                        NUMBER;
88514 
88515 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
88516 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
88517 --
88518 --
88519 l_result                    BOOLEAN := TRUE;
88520 l_rows                      NUMBER  := 1000;
88521 l_event_type_name           VARCHAR2(80) := 'All';
88522 l_event_class_name          VARCHAR2(80) := 'Miscellaneous Cost';
88523 l_description               VARCHAR2(4000);
88524 l_transaction_reversal      NUMBER;
88525 l_ae_header_id              NUMBER;
88526 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
88527 l_log_module                VARCHAR2(240);
88528 --
88529 l_acct_reversal_source      VARCHAR2(30);
88530 l_trx_reversal_source       VARCHAR2(30);
88531 
88532 l_continue_with_lines       BOOLEAN := TRUE;
88533 --
88534 l_acc_rev_gl_date_source    DATE;                      -- 4262811
88535 --
88536 type t_array_event_id is table of number index by binary_integer;
88537 
88538 l_rec_array_event                    t_rec_array_event;
88539 l_null_rec_array_event               t_rec_array_event;
88540 l_array_ae_header_id                 xla_number_array_type;
88541 l_actual_flag                        VARCHAR2(1) := NULL;
88542 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
88543 l_balance_type_code                  VARCHAR2(1) :=NULL;
88544 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
88545 
88546 --
88547 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
88548 --
88549 
88550 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
88551 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
88552 
88553 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
88554 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
88555 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
88559 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
88556 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
88557 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
88558 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
88560 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
88561 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
88562 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
88563 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
88564 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
88565 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
88566 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
88567 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
88568 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
88569 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
88570 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
88571 
88572 l_array_source_33              t_array_source_33;
88573 l_array_source_75              t_array_source_75;
88574 
88575 l_array_source_4      t_array_source_4;
88576 l_array_source_5      t_array_source_5;
88577 l_array_source_6      t_array_source_6;
88578 l_array_source_7      t_array_source_7;
88579 l_array_source_8      t_array_source_8;
88580 l_array_source_23      t_array_source_23;
88581 l_array_source_24      t_array_source_24;
88582 l_array_source_25      t_array_source_25;
88583 l_array_source_26      t_array_source_26;
88584 l_array_source_27      t_array_source_27;
88585 l_array_source_28      t_array_source_28;
88586 l_array_source_29      t_array_source_29;
88587 l_array_source_30      t_array_source_30;
88588 l_array_source_31      t_array_source_31;
88589 l_array_source_32      t_array_source_32;
88590 l_array_source_34      t_array_source_34;
88591 l_array_source_35      t_array_source_35;
88592 l_array_source_35_meaning      t_array_lookup_meaning;
88593 l_array_source_36      t_array_source_36;
88594 
88595 --
88596 CURSOR header_cur
88597 IS
88598 SELECT /*+ leading(xet) cardinality(xet,1) */
88599 -- Event Class Code: MISC_COST
88600     xet.entity_id
88601    ,xet.legal_entity_id
88602    ,xet.entity_code
88603    ,xet.transaction_number
88604    ,xet.event_id
88605    ,xet.event_class_code
88606    ,xet.event_type_code
88607    ,xet.event_number
88608    ,xet.event_date
88609    ,xet.transaction_date
88610    ,xet.reference_num_1
88611    ,xet.reference_num_2
88612    ,xet.reference_num_3
88613    ,xet.reference_num_4
88614    ,xet.reference_char_1
88615    ,xet.reference_char_2
88616    ,xet.reference_char_3
88617    ,xet.reference_char_4
88618    ,xet.reference_date_1
88619    ,xet.reference_date_2
88620    ,xet.reference_date_3
88621    ,xet.reference_date_4
88622    ,xet.event_created_by
88623    ,xet.budgetary_control_flag 
88624   , h2.EXPENDITURE_ITEM_ID    source_33
88625   , h2.GL_DATE    source_75
88626   FROM xla_events_gt     xet 
88627   , PA_XLA_EXP_HEADER_V  h2
88628  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
88629    and xet.event_class_code = C_EVENT_CLASS_CODE
88630    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
88631 
88632  ORDER BY event_id
88633 ;
88634 
88635 
88636 --
88637 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
88638 IS
88639 SELECT  /*+ leading(xet) cardinality(xet,1) */
88640 -- Event Class Code: MISC_COST
88641     xet.entity_id
88642    ,xet.legal_entity_id
88643    ,xet.entity_code
88644    ,xet.transaction_number
88645    ,xet.event_id
88646    ,xet.event_class_code
88647    ,xet.event_type_code
88648    ,xet.event_number
88649    ,xet.event_date
88650    ,xet.transaction_date
88651    ,xet.reference_num_1
88652    ,xet.reference_num_2
88653    ,xet.reference_num_3
88654    ,xet.reference_num_4
88655    ,xet.reference_char_1
88656    ,xet.reference_char_2
88657    ,xet.reference_char_3
88658    ,xet.reference_char_4
88659    ,xet.reference_date_1
88660    ,xet.reference_date_2
88661    ,xet.reference_date_3
88662    ,xet.reference_date_4
88663    ,xet.event_created_by
88664    ,xet.budgetary_control_flag
88665  , l1.LINE_NUMBER  
88666   , l1.COST_CCID    source_4
88667   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
88668   , l1.ADJ_COST_CCID    source_6
88669   , l1.COST_CLEARING_CCID    source_7
88670   , l1.ADJ_COST_CLEARING_CCID    source_8
88671   , l1.REVERSING_LINE_FLAG    source_23
88672   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
88673   , l1.ENTERED_RAW_COST    source_25
88674   , l1.ENTERED_CURRENCY_CODE    source_26
88675   , l1.ACCT_RAW_COST    source_27
88676   , l1.EXCHANGE_RATE_DATE    source_28
88677   , l1.EXCHANGE_RATE    source_29
88678   , l1.EXCHANGE_RATE_TYPE    source_30
88679   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
88680   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
88681   , l1.LINE_NUMBER    source_34
88682   , l1.LINE_TYPE    source_35
88683   , fvl35.meaning   source_35_meaning
88684   , l1.LINE_NUM_REVERSED    source_36
88685   FROM xla_events_gt     xet 
88686   , PA_XLA_CDL_LINES_V  l1
88687   , fnd_lookup_values    fvl35
88688  WHERE xet.event_id between x_first_event_id and x_last_event_id
88689    and xet.event_date between p_pad_start_date and p_pad_end_date
88693   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
88690    and xet.event_class_code = C_EVENT_CLASS_CODE
88691    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
88692    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
88694   AND fvl35.view_application_id(+) = 275
88695   AND fvl35.language(+)            = USERENV('LANG')
88696   ;
88697 
88698 --
88699 BEGIN
88700 IF g_log_enabled THEN
88701    l_log_module := C_DEFAULT_MODULE||'.EventClass_158';
88702 END IF;
88703 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
88704    trace
88705       (p_msg      => 'BEGIN of EventClass_158'
88706       ,p_level    => C_LEVEL_PROCEDURE
88707       ,p_module   => l_log_module);
88708 END IF;
88709 
88710 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88711    trace
88712       (p_msg      => 'p_application_id = '||p_application_id||
88713                      ' - p_base_ledger_id = '||p_base_ledger_id||
88714                      ' - p_target_ledger_id  = '||p_target_ledger_id||
88715                      ' - p_language = '||p_language||
88716                      ' - p_currency_code = '||p_currency_code||
88717                      ' - p_sla_ledger_id = '||p_sla_ledger_id
88718       ,p_level    => C_LEVEL_STATEMENT
88719       ,p_module   => l_log_module);
88720 END IF;
88721 --
88722 -- initialze arrays
88723 --
88724 g_array_event.DELETE;
88725 l_rec_array_event := l_null_rec_array_event;
88726 --
88727 --------------------------------------
88728 -- 4262811 Initialze MPA Line Number
88729 --------------------------------------
88730 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
88731 
88732 --
88733 
88734 --
88735 OPEN header_cur;
88736 --
88737 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88738    trace
88739    (p_msg      => 'SQL - FETCH header_cur'
88740    ,p_level    => C_LEVEL_STATEMENT
88741    ,p_module   => l_log_module);
88742 END IF;
88743 --
88744 LOOP
88745 FETCH header_cur BULK COLLECT INTO
88746         l_array_entity_id
88747       , l_array_legal_entity_id
88748       , l_array_entity_code
88749       , l_array_transaction_num
88750       , l_array_event_id
88751       , l_array_class_code
88752       , l_array_event_type
88753       , l_array_event_number
88754       , l_array_event_date
88755       , l_array_transaction_date
88756       , l_array_reference_num_1
88757       , l_array_reference_num_2
88758       , l_array_reference_num_3
88759       , l_array_reference_num_4
88760       , l_array_reference_char_1
88761       , l_array_reference_char_2
88762       , l_array_reference_char_3
88763       , l_array_reference_char_4
88764       , l_array_reference_date_1
88765       , l_array_reference_date_2
88766       , l_array_reference_date_3
88767       , l_array_reference_date_4
88768       , l_array_event_created_by
88769       , l_array_budgetary_control_flag 
88770       , l_array_source_33
88771       , l_array_source_75
88772       LIMIT l_rows;
88773 --
88774 IF (C_LEVEL_EVENT >= g_log_level) THEN
88775    trace
88776    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
88777    ,p_level    => C_LEVEL_EVENT
88778    ,p_module   => l_log_module);
88779 END IF;
88780 --
88781 EXIT WHEN l_array_entity_id.COUNT = 0;
88782 
88783 -- initialize arrays
88784 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
88785 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
88786 
88787 --
88788 -- Bug 4458708
88789 --
88790 XLA_AE_LINES_PKG.g_LineNumber := 0;
88791 
88792 
88793 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
88794 g_last_hdr_idx := l_array_event_id.LAST;
88795 --
88796 -- loop for the headers. Each iteration is for each header extract row
88797 -- fetched in header cursor
88798 --
88799 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
88800 
88801 --
88802 -- set event info as cache for other routines to refer event attributes
88803 --
88804 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
88805    (p_application_id           => p_application_id
88806    ,p_primary_ledger_id        => p_primary_ledger_id
88807    ,p_base_ledger_id           => p_base_ledger_id
88808    ,p_target_ledger_id         => p_target_ledger_id
88809    ,p_entity_id                => l_array_entity_id(hdr_idx)
88810    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
88811    ,p_entity_code              => l_array_entity_code(hdr_idx)
88812    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
88813    ,p_event_id                 => l_array_event_id(hdr_idx)
88814    ,p_event_class_code         => l_array_class_code(hdr_idx)
88815    ,p_event_type_code          => l_array_event_type(hdr_idx)
88816    ,p_event_number             => l_array_event_number(hdr_idx)
88817    ,p_event_date               => l_array_event_date(hdr_idx)
88818    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
88819    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
88820    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
88821    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
88822    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
88823    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
88824    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
88825    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
88826    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
88827    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
88828    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
88829    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
88830    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
88834 --
88831    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
88832    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
88833 
88835 -- set the status of entry to C_VALID (0)
88836 --
88837 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
88838 
88839 --
88840 -- initialize a row for ae header
88841 --
88842 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
88843 
88844 l_event_id := l_array_event_id(hdr_idx);
88845 
88846 --
88847 -- storing the hdr_idx for event. May be used by line cursor.
88848 --
88849 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
88850 
88851 --
88852 -- store sources from header extract. This can be improved to
88853 -- store only those sources from header extract that may be used in lines
88854 --
88855 
88856 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
88857 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
88858 
88859 --
88860 -- initilaize the status of ae headers for diffrent balance types
88861 -- the status is initialised to C_NOT_CREATED (2)
88862 --
88863 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
88864 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
88865 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
88866 
88867 --
88868 -- call api to validate and store accounting attributes for header
88869 --
88870 
88871 ------------------------------------------------------------
88872 -- Accrual Reversal : to get date for Standard Source (NONE)
88873 ------------------------------------------------------------
88874 l_acc_rev_gl_date_source := NULL;
88875 
88876      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
88877       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
88878 
88879 
88880 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
88881 
88882 XLA_AE_HEADER_PKG.SetJeCategoryName;
88883 
88884 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
88885 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
88886 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
88887 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
88888 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
88889 
88890 
88891 -- No header level analytical criteria
88892 
88893 --
88894 --accounting attribute enhancement, bug 3612931
88895 --
88896 l_trx_reversal_source := SUBSTR(NULL, 1,30);
88897 
88898 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
88899    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
88900 
88901    xla_accounting_err_pkg.build_message
88902       (p_appli_s_name            => 'XLA'
88903       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
88904       ,p_token_1                 => 'ACCT_ATTR_NAME'
88905       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
88906       ,p_token_2                 => 'PRODUCT_NAME'
88907       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
88908       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
88909       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
88910       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
88911 
88912 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
88913    --
88914    -- following sets the accounting attributes needed to reverse
88915    -- accounting for a distributeion
88916    --
88917    xla_ae_lines_pkg.SetTrxReversalAttrs
88918       (p_event_id              => l_event_id
88919       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
88920       ,p_trx_reversal_source   => l_trx_reversal_source);
88921 
88922 END IF;
88923 
88924 
88925 ----------------------------------------------------------------
88926 -- 4262811 -  update the header statuses to invalid in need be
88927 ----------------------------------------------------------------
88928 --
88929 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
88930 
88931 
88932   -----------------------------------------------
88933   -- No accrual reversal for the event class/type
88934   -----------------------------------------------
88935 ----------------------------------------------------------------
88936 
88937 --
88938 -- this ends the header loop iteration for one bulk fetch
88939 --
88940 END LOOP;
88941 
88942 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
88943 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
88944 
88945 --
88946 -- insert dummy rows into lines gt table that were created due to
88947 -- transaction reversals
88948 --
88949 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
88950    l_result := XLA_AE_LINES_PKG.InsertLines;
88951 END IF;
88952 
88953 --
88954 -- reset the temp_line_num for each set of events fetched from header
88955 -- cursor rather than doing it for each new event in line cursor
88956 -- Bug 3939231
88957 --
88958 xla_ae_lines_pkg.g_temp_line_num := 0;
88959 
88960 
88961 
88962 --
88963 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
88964 --
88965 --
88966 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
88967 
88968       trace
88969          (p_msg      => 'SQL - FETCH line_cur'
88973 END IF;
88970          ,p_level    => C_LEVEL_STATEMENT
88971          ,p_module   => l_log_module);
88972 
88974 --
88975 --
88976 LOOP
88977   --
88978   FETCH line_cur BULK COLLECT INTO
88979         l_array_entity_id
88980       , l_array_legal_entity_id
88981       , l_array_entity_code
88982       , l_array_transaction_num
88983       , l_array_event_id
88984       , l_array_class_code
88985       , l_array_event_type
88986       , l_array_event_number
88987       , l_array_event_date
88988       , l_array_transaction_date
88989       , l_array_reference_num_1
88990       , l_array_reference_num_2
88991       , l_array_reference_num_3
88992       , l_array_reference_num_4
88993       , l_array_reference_char_1
88994       , l_array_reference_char_2
88995       , l_array_reference_char_3
88996       , l_array_reference_char_4
88997       , l_array_reference_date_1
88998       , l_array_reference_date_2
88999       , l_array_reference_date_3
89000       , l_array_reference_date_4
89001       , l_array_event_created_by
89002       , l_array_budgetary_control_flag
89003       , l_array_extract_line_num 
89004       , l_array_source_4
89005       , l_array_source_5
89006       , l_array_source_6
89007       , l_array_source_7
89008       , l_array_source_8
89009       , l_array_source_23
89010       , l_array_source_24
89011       , l_array_source_25
89012       , l_array_source_26
89013       , l_array_source_27
89014       , l_array_source_28
89015       , l_array_source_29
89016       , l_array_source_30
89017       , l_array_source_31
89018       , l_array_source_32
89019       , l_array_source_34
89020       , l_array_source_35
89021       , l_array_source_35_meaning
89022       , l_array_source_36
89023       LIMIT l_rows;
89024 
89025   --
89026   IF (C_LEVEL_EVENT >= g_log_level) THEN
89027             trace
89028                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
89029                ,p_level    => C_LEVEL_EVENT
89030                ,p_module   => l_log_module);
89031   END IF;
89032   --
89033   EXIT WHEN l_array_entity_id.count = 0;
89034 
89035   XLA_AE_LINES_PKG.g_rec_lines := null;
89036 
89037 --
89038 -- Bug 4458708
89039 --
89040 XLA_AE_LINES_PKG.g_LineNumber := 0;
89041 --
89042 --
89043 
89044 FOR Idx IN 1..l_array_event_id.count LOOP
89045    --
89046    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
89047    --
89048    l_event_id := l_array_event_id(idx);  -- 5648433
89049 
89050    --
89051    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
89052    --
89053 
89054    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
89055              (g_array_event(l_event_id).array_value_num('header_index'))
89056          ,'N'
89057          ) <> 'Y'
89058    THEN
89059       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89060          trace
89061             (p_msg      => 'Trancaction revesal option is not Y '
89062             ,p_level    => C_LEVEL_STATEMENT
89063             ,p_module   => l_log_module);
89064       END IF;
89065 
89066 --
89067 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
89068 --
89069 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
89070 --
89071 -- set event info as cache for other routines to refer event attributes
89072 --
89073 
89074 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
89075    l_previous_event_id := l_event_id;
89076 
89077    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
89078       (p_application_id           => p_application_id
89079       ,p_primary_ledger_id        => p_primary_ledger_id
89080       ,p_base_ledger_id           => p_base_ledger_id
89081       ,p_target_ledger_id         => p_target_ledger_id
89082       ,p_entity_id                => l_array_entity_id(Idx)
89083       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
89084       ,p_entity_code              => l_array_entity_code(Idx)
89085       ,p_transaction_num          => l_array_transaction_num(Idx)
89086       ,p_event_id                 => l_array_event_id(Idx)
89087       ,p_event_class_code         => l_array_class_code(Idx)
89088       ,p_event_type_code          => l_array_event_type(Idx)
89089       ,p_event_number             => l_array_event_number(Idx)
89090       ,p_event_date               => l_array_event_date(Idx)
89091       ,p_transaction_date         => l_array_transaction_date(Idx)
89092       ,p_reference_num_1          => l_array_reference_num_1(Idx)
89093       ,p_reference_num_2          => l_array_reference_num_2(Idx)
89094       ,p_reference_num_3          => l_array_reference_num_3(Idx)
89095       ,p_reference_num_4          => l_array_reference_num_4(Idx)
89096       ,p_reference_char_1         => l_array_reference_char_1(Idx)
89097       ,p_reference_char_2         => l_array_reference_char_2(Idx)
89098       ,p_reference_char_3         => l_array_reference_char_3(Idx)
89099       ,p_reference_char_4         => l_array_reference_char_4(Idx)
89100       ,p_reference_date_1         => l_array_reference_date_1(Idx)
89101       ,p_reference_date_2         => l_array_reference_date_2(Idx)
89102       ,p_reference_date_3         => l_array_reference_date_3(Idx)
89103       ,p_reference_date_4         => l_array_reference_date_4(Idx)
89104       ,p_event_created_by         => l_array_event_created_by(Idx)
89105       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
89106        --
89107 END IF;
89108 
89109 
89110 
89111 --
89112 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
89113 
89114 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
89115 
89116 IF l_continue_with_lines THEN
89120       xla_accounting_err_pkg.build_message
89117    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
89118       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
89119 
89121          (p_appli_s_name            => 'XLA'
89122          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
89123          ,p_token_1                 => 'LINE_NUMBER'
89124          ,p_value_1                 => l_array_extract_line_num(Idx)
89125          ,p_token_2                 => 'PRODUCT_NAME'
89126          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
89127          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
89128          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
89129          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
89130 
89131    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
89132       --
89133       -- following sets the accounting attributes needed to reverse
89134       -- accounting for a distributeion
89135       --
89136 
89137       --
89138       -- 5217187
89139       --
89140       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
89141       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
89142                                        g_array_event(l_event_id).array_value_num('header_index'));
89143       --
89144       --
89145 
89146       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
89147       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
89148       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
89149       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
89150       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
89151       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
89152       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
89153       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
89154       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
89155       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
89156       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
89157       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
89158       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
89159       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
89160       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
89161       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
89162       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
89163       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
89164       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
89165       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
89166       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
89167       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
89168       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
89169       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
89170       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
89171       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
89172       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
89173       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
89174       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
89175       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
89176       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
89177       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
89178       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
89179       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
89180       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
89181       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
89182       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
89183       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
89184       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
89185       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
89186       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
89187       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
89188       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
89189       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
89190       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
89191       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
89192       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
89193       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
89194 
89195 
89196       xla_ae_lines_pkg.SetAcctReversalAttrs
89197          (p_event_id             => l_event_id
89198          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
89199          ,p_calculate_acctd_flag => l_calculate_acctd_flag
89200          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
89201    END IF;
89202 
89203    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
89204        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
89205 
89206 --
89207 AcctLineType_71 (
89208  p_application_id  => p_application_id
89209  ,p_event_id     => l_event_id
89210  ,p_calculate_acctd_flag => l_calculate_acctd_flag
89214  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
89211  ,p_calculate_g_l_flag => l_calculate_g_l_flag
89212  ,p_actual_flag => l_actual_flag
89213  ,p_balance_type_code => l_balance_type_code
89215  
89216  , p_source_4 => l_array_source_4(Idx)
89217  , p_source_5 => l_array_source_5(Idx)
89218  , p_source_6 => l_array_source_6(Idx)
89219  , p_source_7 => l_array_source_7(Idx)
89220  , p_source_23 => l_array_source_23(Idx)
89221  , p_source_24 => l_array_source_24(Idx)
89222  , p_source_25 => l_array_source_25(Idx)
89223  , p_source_26 => l_array_source_26(Idx)
89224  , p_source_27 => l_array_source_27(Idx)
89225  , p_source_28 => l_array_source_28(Idx)
89226  , p_source_29 => l_array_source_29(Idx)
89227  , p_source_30 => l_array_source_30(Idx)
89228  , p_source_31 => l_array_source_31(Idx)
89229  , p_source_32 => l_array_source_32(Idx)
89230  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
89231  , p_source_34 => l_array_source_34(Idx)
89232  , p_source_35 => l_array_source_35(Idx)
89233  , p_source_35_meaning => l_array_source_35_meaning(Idx)
89234  , p_source_36 => l_array_source_36(Idx)
89235  );
89236 If(l_balance_type_code = 'A') THEN
89237   l_actual_gain_loss_ref := l_gain_or_loss_ref;
89238 END IF;
89239 
89240 --
89241 
89242 
89243 --
89244 AcctLineType_90 (
89245  p_application_id  => p_application_id
89246  ,p_event_id     => l_event_id
89247  ,p_calculate_acctd_flag => l_calculate_acctd_flag
89248  ,p_calculate_g_l_flag => l_calculate_g_l_flag
89249  ,p_actual_flag => l_actual_flag
89250  ,p_balance_type_code => l_balance_type_code
89251  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
89252  
89253  , p_source_4 => l_array_source_4(Idx)
89254  , p_source_5 => l_array_source_5(Idx)
89255  , p_source_7 => l_array_source_7(Idx)
89256  , p_source_8 => l_array_source_8(Idx)
89257  , p_source_23 => l_array_source_23(Idx)
89258  , p_source_24 => l_array_source_24(Idx)
89259  , p_source_25 => l_array_source_25(Idx)
89260  , p_source_26 => l_array_source_26(Idx)
89261  , p_source_27 => l_array_source_27(Idx)
89262  , p_source_28 => l_array_source_28(Idx)
89263  , p_source_29 => l_array_source_29(Idx)
89264  , p_source_30 => l_array_source_30(Idx)
89265  , p_source_31 => l_array_source_31(Idx)
89266  , p_source_32 => l_array_source_32(Idx)
89267  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
89268  , p_source_34 => l_array_source_34(Idx)
89269  , p_source_35 => l_array_source_35(Idx)
89270  , p_source_35_meaning => l_array_source_35_meaning(Idx)
89271  , p_source_36 => l_array_source_36(Idx)
89272  );
89273 If(l_balance_type_code = 'A') THEN
89274   l_actual_gain_loss_ref := l_gain_or_loss_ref;
89275 END IF;
89276 
89277 --
89278 
89279 
89280 --
89281 AcctLineType_104 (
89282  p_application_id  => p_application_id
89283  ,p_event_id     => l_event_id
89284  ,p_calculate_acctd_flag => l_calculate_acctd_flag
89285  ,p_calculate_g_l_flag => l_calculate_g_l_flag
89286  ,p_actual_flag => l_actual_flag
89287  ,p_balance_type_code => l_balance_type_code
89288  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
89289  
89290  , p_source_4 => l_array_source_4(Idx)
89291  , p_source_5 => l_array_source_5(Idx)
89292  , p_source_7 => l_array_source_7(Idx)
89293  , p_source_8 => l_array_source_8(Idx)
89294  , p_source_23 => l_array_source_23(Idx)
89295  , p_source_24 => l_array_source_24(Idx)
89296  , p_source_25 => l_array_source_25(Idx)
89297  , p_source_26 => l_array_source_26(Idx)
89298  , p_source_27 => l_array_source_27(Idx)
89299  , p_source_28 => l_array_source_28(Idx)
89300  , p_source_29 => l_array_source_29(Idx)
89301  , p_source_30 => l_array_source_30(Idx)
89302  , p_source_31 => l_array_source_31(Idx)
89303  , p_source_32 => l_array_source_32(Idx)
89304  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
89305  , p_source_34 => l_array_source_34(Idx)
89306  , p_source_35 => l_array_source_35(Idx)
89307  , p_source_35_meaning => l_array_source_35_meaning(Idx)
89308  , p_source_36 => l_array_source_36(Idx)
89309  );
89310 If(l_balance_type_code = 'A') THEN
89311   l_actual_gain_loss_ref := l_gain_or_loss_ref;
89312 END IF;
89313 
89314 --
89315 
89316 
89317 --
89318 AcctLineType_113 (
89319  p_application_id  => p_application_id
89320  ,p_event_id     => l_event_id
89321  ,p_calculate_acctd_flag => l_calculate_acctd_flag
89322  ,p_calculate_g_l_flag => l_calculate_g_l_flag
89323  ,p_actual_flag => l_actual_flag
89324  ,p_balance_type_code => l_balance_type_code
89325  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
89326  
89327  , p_source_4 => l_array_source_4(Idx)
89328  , p_source_5 => l_array_source_5(Idx)
89329  , p_source_6 => l_array_source_6(Idx)
89330  , p_source_7 => l_array_source_7(Idx)
89331  , p_source_23 => l_array_source_23(Idx)
89332  , p_source_24 => l_array_source_24(Idx)
89333  , p_source_25 => l_array_source_25(Idx)
89334  , p_source_26 => l_array_source_26(Idx)
89335  , p_source_27 => l_array_source_27(Idx)
89336  , p_source_28 => l_array_source_28(Idx)
89337  , p_source_29 => l_array_source_29(Idx)
89338  , p_source_30 => l_array_source_30(Idx)
89339  , p_source_31 => l_array_source_31(Idx)
89340  , p_source_32 => l_array_source_32(Idx)
89341  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
89342  , p_source_34 => l_array_source_34(Idx)
89343  , p_source_35 => l_array_source_35(Idx)
89344  , p_source_35_meaning => l_array_source_35_meaning(Idx)
89345  , p_source_36 => l_array_source_36(Idx)
89346  );
89347 If(l_balance_type_code = 'A') THEN
89348   l_actual_gain_loss_ref := l_gain_or_loss_ref;
89349 END IF;
89350 
89351 --
89352 
89353       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
89354       -- or secondary ledger that has different currency with primary
89358 
89355       -- or alc that is calculated by sla
89356       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
89357             (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'))
89359 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
89360 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
89361           AND (l_actual_flag = 'A')) THEN
89362         XLA_AE_LINES_PKG.CreateGainOrLossLines(
89363           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
89364          ,p_application_id   => p_application_id
89365          ,p_amb_context_code => 'DEFAULT'
89366          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
89367          ,p_event_class_code => C_EVENT_CLASS_CODE
89368          ,p_event_type_code  => C_EVENT_TYPE_CODE
89369          
89370          ,p_gain_ccid        => -1
89371          ,p_loss_ccid        => -1
89372 
89373          ,p_actual_flag      => l_actual_flag
89374          ,p_enc_flag         => null
89375          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
89376          ,p_enc_g_l_ref      => null
89377          );
89378       END IF;
89379    END IF;
89380 END IF;
89381 
89382    ELSE
89383       --
89384       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
89385       --
89386       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89387          trace
89388             (p_msg      => 'Trancaction revesal option is Y'
89389             ,p_level    => C_LEVEL_STATEMENT
89390             ,p_module   => l_log_module);
89391       END IF;
89392    END IF;
89393 
89394 END LOOP;
89395 l_result := XLA_AE_LINES_PKG.InsertLines ;
89396 end loop;
89397 close line_cur;
89398 
89399 
89400 --
89401 -- insert headers into xla_ae_headers_gt table
89402 --
89403 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
89404 
89405 -- insert into errors table here.
89406 
89407 END LOOP;
89408 
89409 --
89410 -- 4865292
89411 --
89412 -- Compare g_hdr_extract_count with event count in
89413 -- CreateHeadersAndLines.
89414 --
89415 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
89416 
89417 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89418    trace (p_msg     => '# rows extracted from header extract objects '
89419                     || ' (running total): '
89420                     || g_hdr_extract_count
89421          ,p_level   => C_LEVEL_STATEMENT
89422          ,p_module  => l_log_module);
89423 END IF;
89424 
89425 CLOSE header_cur;
89426 --
89427 
89428 --
89429 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89430    trace
89431       (p_msg      => 'END of EventClass_158'
89432       ,p_level    => C_LEVEL_PROCEDURE
89433       ,p_module   => l_log_module);
89434 END IF;
89435 --
89436 RETURN l_result;
89437 EXCEPTION
89438 WHEN xla_exceptions_pkg.application_exception THEN
89439    
89440 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
89441 
89442    
89443 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
89444 
89445    RAISE;
89446 WHEN OTHERS THEN
89447    xla_exceptions_pkg.raise_message
89448       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_158');
89449 END EventClass_158;
89450 --
89451 
89452 ---------------------------------------
89453 --
89454 -- PRIVATE PROCEDURE
89455 --         insert_sources_159
89456 --
89457 ----------------------------------------
89458 --
89459 PROCEDURE insert_sources_159(
89460                                 p_target_ledger_id       IN NUMBER
89461                               , p_language               IN VARCHAR2
89462                               , p_sla_ledger_id          IN NUMBER
89463                               , p_pad_start_date         IN DATE
89464                               , p_pad_end_date           IN DATE
89465                          )
89466 IS
89467 
89468 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
89469 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS_ADJ';
89470 p_apps_owner                   VARCHAR2(30);
89471 l_log_module                   VARCHAR2(240);
89472 BEGIN
89473 IF g_log_enabled THEN
89474       l_log_module := C_DEFAULT_MODULE||'.insert_sources_159';
89475 END IF;
89476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89477 
89478       trace
89479          (p_msg      => 'BEGIN of insert_sources_159'
89480          ,p_level    => C_LEVEL_PROCEDURE
89481          ,p_module   => l_log_module);
89482 
89483 END IF;
89484 
89485 -- select APPS owner
89486 SELECT oracle_username
89487   INTO p_apps_owner
89488   FROM fnd_oracle_userid
89489  WHERE read_only_flag = 'U'
89490 ;
89491 
89492 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89493       trace
89494          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
89495                         ' - p_language = '||p_language||
89496                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
89497                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
89498                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
89499                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
89500          ,p_level    => C_LEVEL_STATEMENT
89501          ,p_module   => l_log_module);
89502 END IF;
89503 
89504 
89505 --
89506 INSERT INTO xla_diag_sources --hdr2
89507 (
89508         event_id
89509       , ledger_id
89510       , sla_ledger_id
89511       , description_language
89512       , object_name
89516       , source_type_code
89513       , object_type_code
89514       , line_number
89515       , source_application_id
89517       , source_code
89518       , source_value
89519       , source_meaning
89520       , created_by
89521       , creation_date
89522       , last_update_date
89523       , last_updated_by
89524       , last_update_login
89525       , program_update_date
89526       , program_application_id
89527       , program_id
89528       , request_id
89529 )
89530 SELECT
89531         event_id
89532       , p_target_ledger_id
89533       , p_sla_ledger_id
89534       , p_language
89535       , object_name
89536       , object_type_code
89537       , line_number
89538       , source_application_id
89539       , source_type_code
89540       , source_code
89541       , SUBSTR(source_value ,1,1996)
89542       , SUBSTR(source_meaning ,1,200)
89543       , xla_environment_pkg.g_Usr_Id
89544       , TRUNC(SYSDATE)
89545       , TRUNC(SYSDATE)
89546       , xla_environment_pkg.g_Usr_Id
89547       , xla_environment_pkg.g_Login_Id
89548       , TRUNC(SYSDATE)
89549       , xla_environment_pkg.g_Prog_Appl_Id
89550       , xla_environment_pkg.g_Prog_Id
89551       , xla_environment_pkg.g_Req_Id
89552   FROM (
89553        SELECT xet.event_id                  event_id
89554             , 0                          line_number
89555             , CASE r
89556                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
89557                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
89558                 
89559                ELSE null
89560               END                           object_name
89561             , CASE r
89562                 WHEN 1 THEN 'HEADER' 
89563                 WHEN 2 THEN 'HEADER' 
89564                 
89565                 ELSE null
89566               END                           object_type_code
89567             , CASE r
89568                 WHEN 1 THEN '275' 
89569                 WHEN 2 THEN '275' 
89570                 
89571                 ELSE null
89572               END                           source_application_id
89573             , 'S'             source_type_code
89574             , CASE r
89575                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
89576                 WHEN 2 THEN 'GL_DATE' 
89577                 
89578                 ELSE null
89579               END                           source_code
89580             , CASE r
89581                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
89582                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
89583                 
89584                 ELSE null
89585               END                           source_value
89586             , null              source_meaning
89587          FROM xla_events_gt     xet  
89588       , PA_XLA_EXP_HEADER_V  h2
89589              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
89590          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
89591            AND xet.event_class_code = C_EVENT_CLASS_CODE
89592               AND h2.event_id = xet.event_id
89593 
89594 )
89595 ;
89596 --
89597 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89598 
89599       trace
89600          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
89601          ,p_level    => C_LEVEL_STATEMENT
89602          ,p_module   => l_log_module);
89603 
89604 END IF;
89605 --
89606 
89607 
89608 
89609 --
89610 INSERT INTO xla_diag_sources  --line2
89611 (
89612         event_id
89613       , ledger_id
89614       , sla_ledger_id
89615       , description_language
89616       , object_name
89617       , object_type_code
89618       , line_number
89619       , source_application_id
89620       , source_type_code
89621       , source_code
89622       , source_value
89623       , source_meaning
89624       , created_by
89625       , creation_date
89626       , last_update_date
89627       , last_updated_by
89628       , last_update_login
89629       , program_update_date
89630       , program_application_id
89631       , program_id
89632       , request_id
89633 )
89634 SELECT  event_id
89635       , p_target_ledger_id
89636       , p_sla_ledger_id
89637       , p_language
89638       , object_name
89639       , object_type_code
89640       , line_number
89641       , source_application_id
89642       , source_type_code
89643       , source_code
89644       , SUBSTR(source_value,1,1996)
89645       , SUBSTR(source_meaning ,1,200)
89646       , xla_environment_pkg.g_Usr_Id
89647       , TRUNC(SYSDATE)
89648       , TRUNC(SYSDATE)
89649       , xla_environment_pkg.g_Usr_Id
89650       , xla_environment_pkg.g_Login_Id
89651       , TRUNC(SYSDATE)
89652       , xla_environment_pkg.g_Prog_Appl_Id
89653       , xla_environment_pkg.g_Prog_Id
89654       , xla_environment_pkg.g_Req_Id
89655   FROM (
89656        SELECT xet.event_id                  event_id
89657             , l1.line_number                 line_number
89658             , CASE r
89659                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
89660                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
89661                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
89662                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
89663                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
89664                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
89665                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
89666                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
89667                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
89668                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
89669                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
89670                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
89674                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
89671                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
89672                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
89673                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
89675                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
89676                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
89677                 
89678                ELSE null
89679               END                           object_name
89680             , CASE r
89681                 WHEN 1 THEN 'LINE' 
89682                 WHEN 2 THEN 'LINE' 
89683                 WHEN 3 THEN 'LINE' 
89684                 WHEN 4 THEN 'LINE' 
89685                 WHEN 5 THEN 'LINE' 
89686                 WHEN 6 THEN 'LINE' 
89687                 WHEN 7 THEN 'LINE' 
89688                 WHEN 8 THEN 'LINE' 
89689                 WHEN 9 THEN 'LINE' 
89690                 WHEN 10 THEN 'LINE' 
89691                 WHEN 11 THEN 'LINE' 
89692                 WHEN 12 THEN 'LINE' 
89693                 WHEN 13 THEN 'LINE' 
89694                 WHEN 14 THEN 'LINE' 
89695                 WHEN 15 THEN 'LINE' 
89696                 WHEN 16 THEN 'LINE' 
89697                 WHEN 17 THEN 'LINE' 
89698                 WHEN 18 THEN 'LINE' 
89699                 
89700                 ELSE null
89701               END                           object_type_code
89702             , CASE r
89703                 WHEN 1 THEN '275' 
89704                 WHEN 2 THEN '275' 
89705                 WHEN 3 THEN '275' 
89706                 WHEN 4 THEN '275' 
89707                 WHEN 5 THEN '275' 
89708                 WHEN 6 THEN '275' 
89709                 WHEN 7 THEN '275' 
89710                 WHEN 8 THEN '275' 
89711                 WHEN 9 THEN '275' 
89712                 WHEN 10 THEN '275' 
89713                 WHEN 11 THEN '275' 
89714                 WHEN 12 THEN '275' 
89715                 WHEN 13 THEN '275' 
89716                 WHEN 14 THEN '275' 
89717                 WHEN 15 THEN '275' 
89718                 WHEN 16 THEN '275' 
89719                 WHEN 17 THEN '275' 
89720                 WHEN 18 THEN '275' 
89721                 
89722                 ELSE null
89723               END                           source_application_id
89724             , 'S'             source_type_code
89725             , CASE r
89726                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
89727                 WHEN 2 THEN 'DESTINATION_CCID' 
89728                 WHEN 3 THEN 'ADJ_DESTINATION_CCID' 
89729                 WHEN 4 THEN 'SOURCE_CCID' 
89730                 WHEN 5 THEN 'ADJ_SOURCE_CCID' 
89731                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
89732                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
89733                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
89734                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
89735                 WHEN 10 THEN 'EXCHANGE_RATE' 
89736                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
89737                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
89738                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
89739                 WHEN 14 THEN 'LINE_NUMBER' 
89740                 WHEN 15 THEN 'LINE_TYPE' 
89741                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
89742                 WHEN 17 THEN 'ENTERED_AMOUNT' 
89743                 WHEN 18 THEN 'ACCT_AMOUNT' 
89744                 
89745                 ELSE null
89746               END                           source_code
89747             , CASE r
89748                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
89749                 WHEN 2 THEN TO_CHAR(l1.DESTINATION_CCID)
89750                 WHEN 3 THEN TO_CHAR(l1.ADJ_DESTINATION_CCID)
89751                 WHEN 4 THEN TO_CHAR(l1.SOURCE_CCID)
89752                 WHEN 5 THEN TO_CHAR(l1.ADJ_SOURCE_CCID)
89753                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
89754                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
89755                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
89756                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
89757                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
89758                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
89759                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
89760                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
89761                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
89762                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
89763                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
89764                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
89765                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
89766                 
89767                 ELSE null
89768               END                           source_value
89769             , CASE r
89770                 WHEN 1 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
89771                           103371
89772                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
89773                          ,'ALLOW_OVERRIDE_CCID_FLAG'
89774                          ,'S'
89775                          ,275)
89776                 WHEN 15 THEN fvl35.meaning
89777                 
89778                 ELSE null
89779               END               source_meaning
89780          FROM  xla_events_gt     xet  
89781         , PA_XLA_CCDL_LINES_V  l1
89782   , fnd_lookup_values    fvl35
89783             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
89784         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
89785           AND xet.event_class_code = C_EVENT_CLASS_CODE
89786             AND l1.event_id          = xet.event_id
89787    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
89788   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
89789   AND fvl35.view_application_id(+) = 275
89790   AND fvl35.language(+)            = USERENV('LANG')
89791   
89792 )
89793 ;
89794 --
89795 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
89796 
89800          ,p_module   => l_log_module);
89797       trace
89798          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
89799          ,p_level    => C_LEVEL_STATEMENT
89801 
89802 END IF;
89803 
89804 
89805 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
89806       trace
89807          (p_msg      => 'END of insert_sources_159'
89808          ,p_level    => C_LEVEL_PROCEDURE
89809          ,p_module   => l_log_module);
89810 END IF;
89811 EXCEPTION
89812   WHEN xla_exceptions_pkg.application_exception THEN
89813       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
89814             trace
89815                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
89816                ,p_level    => C_LEVEL_EXCEPTION
89817                ,p_module   => l_log_module);
89818       END IF;
89819       RAISE;
89820   WHEN OTHERS THEN
89821       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
89822             trace
89823                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
89824                ,p_level    => C_LEVEL_EXCEPTION
89825                ,p_module   => l_log_module);
89826        END IF;
89827        xla_exceptions_pkg.raise_message
89828            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_159');
89829 END insert_sources_159;
89830 --
89831 
89832 ---------------------------------------
89833 --
89834 -- PRIVATE FUNCTION
89835 --         EventClass_159
89836 --
89837 ----------------------------------------
89838 --
89839 FUNCTION EventClass_159
89840        (p_application_id         IN NUMBER
89841        ,p_base_ledger_id         IN NUMBER
89842        ,p_target_ledger_id       IN NUMBER
89843        ,p_language               IN VARCHAR2
89844        ,p_currency_code          IN VARCHAR2
89845        ,p_sla_ledger_id          IN NUMBER
89846        ,p_pad_start_date         IN DATE
89847        ,p_pad_end_date           IN DATE
89848        ,p_primary_ledger_id      IN NUMBER)
89849 RETURN BOOLEAN IS
89850 --
89851 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ADJ_ALL';
89852 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS_ADJ';
89853 
89854 l_calculate_acctd_flag   VARCHAR2(1) :='N';
89855 l_calculate_g_l_flag     VARCHAR2(1) :='N';
89856 --
89857 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89858 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89859 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
89860 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
89861 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89862 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
89863 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
89864 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89865 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
89866 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
89867 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89868 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89869 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89870 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
89871 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
89872 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
89873 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
89874 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
89875 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
89876 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
89877 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
89878 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
89879 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
89880 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
89881 
89882 l_event_id                             NUMBER;
89883 l_previous_event_id                    NUMBER;
89884 l_first_event_id                       NUMBER;
89885 l_last_event_id                        NUMBER;
89886 
89887 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
89888 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
89889 --
89890 --
89891 l_result                    BOOLEAN := TRUE;
89892 l_rows                      NUMBER  := 1000;
89893 l_event_type_name           VARCHAR2(80) := 'All';
89894 l_event_class_name          VARCHAR2(80) := 'Provider and Receiver Reclass Adjustment';
89895 l_description               VARCHAR2(4000);
89896 l_transaction_reversal      NUMBER;
89897 l_ae_header_id              NUMBER;
89898 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
89899 l_log_module                VARCHAR2(240);
89900 --
89901 l_acct_reversal_source      VARCHAR2(30);
89902 l_trx_reversal_source       VARCHAR2(30);
89903 
89904 l_continue_with_lines       BOOLEAN := TRUE;
89905 --
89906 l_acc_rev_gl_date_source    DATE;                      -- 4262811
89907 --
89908 type t_array_event_id is table of number index by binary_integer;
89909 
89910 l_rec_array_event                    t_rec_array_event;
89911 l_null_rec_array_event               t_rec_array_event;
89912 l_array_ae_header_id                 xla_number_array_type;
89913 l_actual_flag                        VARCHAR2(1) := NULL;
89914 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
89915 l_balance_type_code                  VARCHAR2(1) :=NULL;
89916 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
89917 
89918 --
89922 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
89919 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
89920 --
89921 
89923 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
89924 
89925 TYPE t_array_source_5 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
89926 TYPE t_array_source_12 IS TABLE OF PA_XLA_CCDL_LINES_V.DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
89927 TYPE t_array_source_13 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
89928 TYPE t_array_source_14 IS TABLE OF PA_XLA_CCDL_LINES_V.SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
89929 TYPE t_array_source_15 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
89930 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
89931 TYPE t_array_source_24 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
89932 TYPE t_array_source_26 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
89933 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
89934 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
89935 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
89936 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
89937 TYPE t_array_source_32 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
89938 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
89939 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
89940 TYPE t_array_source_36 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
89941 TYPE t_array_source_42 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
89942 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
89943 
89944 l_array_source_33              t_array_source_33;
89945 l_array_source_75              t_array_source_75;
89946 
89947 l_array_source_5      t_array_source_5;
89948 l_array_source_12      t_array_source_12;
89949 l_array_source_13      t_array_source_13;
89950 l_array_source_14      t_array_source_14;
89951 l_array_source_15      t_array_source_15;
89952 l_array_source_23      t_array_source_23;
89953 l_array_source_24      t_array_source_24;
89954 l_array_source_26      t_array_source_26;
89955 l_array_source_28      t_array_source_28;
89956 l_array_source_29      t_array_source_29;
89957 l_array_source_30      t_array_source_30;
89958 l_array_source_31      t_array_source_31;
89959 l_array_source_32      t_array_source_32;
89960 l_array_source_34      t_array_source_34;
89961 l_array_source_35      t_array_source_35;
89962 l_array_source_35_meaning      t_array_lookup_meaning;
89963 l_array_source_36      t_array_source_36;
89964 l_array_source_42      t_array_source_42;
89965 l_array_source_43      t_array_source_43;
89966 
89967 --
89968 CURSOR header_cur
89969 IS
89970 SELECT /*+ leading(xet) cardinality(xet,1) */
89971 -- Event Class Code: PRVDR_RECVR_RECLASS_ADJ
89972     xet.entity_id
89973    ,xet.legal_entity_id
89974    ,xet.entity_code
89975    ,xet.transaction_number
89976    ,xet.event_id
89977    ,xet.event_class_code
89978    ,xet.event_type_code
89979    ,xet.event_number
89980    ,xet.event_date
89981    ,xet.transaction_date
89982    ,xet.reference_num_1
89983    ,xet.reference_num_2
89984    ,xet.reference_num_3
89985    ,xet.reference_num_4
89986    ,xet.reference_char_1
89987    ,xet.reference_char_2
89988    ,xet.reference_char_3
89989    ,xet.reference_char_4
89990    ,xet.reference_date_1
89991    ,xet.reference_date_2
89992    ,xet.reference_date_3
89993    ,xet.reference_date_4
89994    ,xet.event_created_by
89995    ,xet.budgetary_control_flag 
89996   , h2.EXPENDITURE_ITEM_ID    source_33
89997   , h2.GL_DATE    source_75
89998   FROM xla_events_gt     xet 
89999   , PA_XLA_EXP_HEADER_V  h2
90000  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
90001    and xet.event_class_code = C_EVENT_CLASS_CODE
90002    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
90003 
90004  ORDER BY event_id
90005 ;
90006 
90007 
90008 --
90009 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
90010 IS
90011 SELECT  /*+ leading(xet) cardinality(xet,1) */
90012 -- Event Class Code: PRVDR_RECVR_RECLASS_ADJ
90013     xet.entity_id
90014    ,xet.legal_entity_id
90015    ,xet.entity_code
90016    ,xet.transaction_number
90017    ,xet.event_id
90018    ,xet.event_class_code
90019    ,xet.event_type_code
90020    ,xet.event_number
90021    ,xet.event_date
90022    ,xet.transaction_date
90023    ,xet.reference_num_1
90024    ,xet.reference_num_2
90025    ,xet.reference_num_3
90026    ,xet.reference_num_4
90027    ,xet.reference_char_1
90028    ,xet.reference_char_2
90029    ,xet.reference_char_3
90030    ,xet.reference_char_4
90031    ,xet.reference_date_1
90032    ,xet.reference_date_2
90033    ,xet.reference_date_3
90034    ,xet.reference_date_4
90035    ,xet.event_created_by
90036    ,xet.budgetary_control_flag
90037  , l1.LINE_NUMBER  
90038   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
90039   , l1.DESTINATION_CCID    source_12
90040   , l1.ADJ_DESTINATION_CCID    source_13
90041   , l1.SOURCE_CCID    source_14
90042   , l1.ADJ_SOURCE_CCID    source_15
90043   , l1.REVERSING_LINE_FLAG    source_23
90044   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
90045   , l1.ENTERED_CURRENCY_CODE    source_26
90046   , l1.EXCHANGE_RATE_DATE    source_28
90050   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
90047   , l1.EXCHANGE_RATE    source_29
90048   , l1.EXCHANGE_RATE_TYPE    source_30
90049   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
90051   , l1.LINE_NUMBER    source_34
90052   , l1.LINE_TYPE    source_35
90053   , fvl35.meaning   source_35_meaning
90054   , l1.LINE_NUM_REVERSED    source_36
90055   , l1.ENTERED_AMOUNT    source_42
90056   , l1.ACCT_AMOUNT    source_43
90057   FROM xla_events_gt     xet 
90058   , PA_XLA_CCDL_LINES_V  l1
90059   , fnd_lookup_values    fvl35
90060  WHERE xet.event_id between x_first_event_id and x_last_event_id
90061    and xet.event_date between p_pad_start_date and p_pad_end_date
90062    and xet.event_class_code = C_EVENT_CLASS_CODE
90063    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
90064    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
90065   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
90066   AND fvl35.view_application_id(+) = 275
90067   AND fvl35.language(+)            = USERENV('LANG')
90068   ;
90069 
90070 --
90071 BEGIN
90072 IF g_log_enabled THEN
90073    l_log_module := C_DEFAULT_MODULE||'.EventClass_159';
90074 END IF;
90075 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90076    trace
90077       (p_msg      => 'BEGIN of EventClass_159'
90078       ,p_level    => C_LEVEL_PROCEDURE
90079       ,p_module   => l_log_module);
90080 END IF;
90081 
90082 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90083    trace
90084       (p_msg      => 'p_application_id = '||p_application_id||
90085                      ' - p_base_ledger_id = '||p_base_ledger_id||
90086                      ' - p_target_ledger_id  = '||p_target_ledger_id||
90087                      ' - p_language = '||p_language||
90088                      ' - p_currency_code = '||p_currency_code||
90089                      ' - p_sla_ledger_id = '||p_sla_ledger_id
90090       ,p_level    => C_LEVEL_STATEMENT
90091       ,p_module   => l_log_module);
90092 END IF;
90093 --
90094 -- initialze arrays
90095 --
90096 g_array_event.DELETE;
90097 l_rec_array_event := l_null_rec_array_event;
90098 --
90099 --------------------------------------
90100 -- 4262811 Initialze MPA Line Number
90101 --------------------------------------
90102 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
90103 
90104 --
90105 
90106 --
90107 OPEN header_cur;
90108 --
90109 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90110    trace
90111    (p_msg      => 'SQL - FETCH header_cur'
90112    ,p_level    => C_LEVEL_STATEMENT
90113    ,p_module   => l_log_module);
90114 END IF;
90115 --
90116 LOOP
90117 FETCH header_cur BULK COLLECT INTO
90118         l_array_entity_id
90119       , l_array_legal_entity_id
90120       , l_array_entity_code
90121       , l_array_transaction_num
90122       , l_array_event_id
90123       , l_array_class_code
90124       , l_array_event_type
90125       , l_array_event_number
90126       , l_array_event_date
90127       , l_array_transaction_date
90128       , l_array_reference_num_1
90129       , l_array_reference_num_2
90130       , l_array_reference_num_3
90131       , l_array_reference_num_4
90132       , l_array_reference_char_1
90133       , l_array_reference_char_2
90134       , l_array_reference_char_3
90135       , l_array_reference_char_4
90136       , l_array_reference_date_1
90137       , l_array_reference_date_2
90138       , l_array_reference_date_3
90139       , l_array_reference_date_4
90140       , l_array_event_created_by
90141       , l_array_budgetary_control_flag 
90142       , l_array_source_33
90143       , l_array_source_75
90144       LIMIT l_rows;
90145 --
90146 IF (C_LEVEL_EVENT >= g_log_level) THEN
90147    trace
90148    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
90149    ,p_level    => C_LEVEL_EVENT
90150    ,p_module   => l_log_module);
90151 END IF;
90152 --
90153 EXIT WHEN l_array_entity_id.COUNT = 0;
90154 
90155 -- initialize arrays
90156 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
90157 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
90158 
90159 --
90160 -- Bug 4458708
90161 --
90162 XLA_AE_LINES_PKG.g_LineNumber := 0;
90163 
90164 
90165 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
90166 g_last_hdr_idx := l_array_event_id.LAST;
90167 --
90168 -- loop for the headers. Each iteration is for each header extract row
90169 -- fetched in header cursor
90170 --
90171 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
90172 
90173 --
90174 -- set event info as cache for other routines to refer event attributes
90175 --
90176 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
90177    (p_application_id           => p_application_id
90178    ,p_primary_ledger_id        => p_primary_ledger_id
90179    ,p_base_ledger_id           => p_base_ledger_id
90180    ,p_target_ledger_id         => p_target_ledger_id
90181    ,p_entity_id                => l_array_entity_id(hdr_idx)
90182    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
90183    ,p_entity_code              => l_array_entity_code(hdr_idx)
90184    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
90185    ,p_event_id                 => l_array_event_id(hdr_idx)
90186    ,p_event_class_code         => l_array_class_code(hdr_idx)
90187    ,p_event_type_code          => l_array_event_type(hdr_idx)
90188    ,p_event_number             => l_array_event_number(hdr_idx)
90189    ,p_event_date               => l_array_event_date(hdr_idx)
90190    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
90191    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
90192    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
90196    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
90193    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
90194    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
90195    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
90197    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
90198    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
90199    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
90200    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
90201    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
90202    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
90203    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
90204    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
90205 
90206 --
90207 -- set the status of entry to C_VALID (0)
90208 --
90209 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
90210 
90211 --
90212 -- initialize a row for ae header
90213 --
90214 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
90215 
90216 l_event_id := l_array_event_id(hdr_idx);
90217 
90218 --
90219 -- storing the hdr_idx for event. May be used by line cursor.
90220 --
90221 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
90222 
90223 --
90224 -- store sources from header extract. This can be improved to
90225 -- store only those sources from header extract that may be used in lines
90226 --
90227 
90228 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
90229 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
90230 
90231 --
90232 -- initilaize the status of ae headers for diffrent balance types
90233 -- the status is initialised to C_NOT_CREATED (2)
90234 --
90235 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
90236 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
90237 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
90238 
90239 --
90240 -- call api to validate and store accounting attributes for header
90241 --
90242 
90243 ------------------------------------------------------------
90244 -- Accrual Reversal : to get date for Standard Source (NONE)
90245 ------------------------------------------------------------
90246 l_acc_rev_gl_date_source := NULL;
90247 
90248      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
90249       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
90250 
90251 
90252 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
90253 
90254 XLA_AE_HEADER_PKG.SetJeCategoryName;
90255 
90256 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
90257 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
90258 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
90259 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
90260 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
90261 
90262 
90263 -- No header level analytical criteria
90264 
90265 --
90266 --accounting attribute enhancement, bug 3612931
90267 --
90268 l_trx_reversal_source := SUBSTR(NULL, 1,30);
90269 
90270 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
90271    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
90272 
90273    xla_accounting_err_pkg.build_message
90274       (p_appli_s_name            => 'XLA'
90275       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
90276       ,p_token_1                 => 'ACCT_ATTR_NAME'
90277       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
90278       ,p_token_2                 => 'PRODUCT_NAME'
90279       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
90280       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
90281       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
90282       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
90283 
90284 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
90285    --
90286    -- following sets the accounting attributes needed to reverse
90287    -- accounting for a distributeion
90288    --
90289    xla_ae_lines_pkg.SetTrxReversalAttrs
90290       (p_event_id              => l_event_id
90291       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
90292       ,p_trx_reversal_source   => l_trx_reversal_source);
90293 
90294 END IF;
90295 
90296 
90297 ----------------------------------------------------------------
90298 -- 4262811 -  update the header statuses to invalid in need be
90299 ----------------------------------------------------------------
90300 --
90301 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
90302 
90303 
90304   -----------------------------------------------
90305   -- No accrual reversal for the event class/type
90306   -----------------------------------------------
90307 ----------------------------------------------------------------
90308 
90309 --
90310 -- this ends the header loop iteration for one bulk fetch
90311 --
90312 END LOOP;
90313 
90314 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
90315 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
90316 
90317 --
90318 -- insert dummy rows into lines gt table that were created due to
90319 -- transaction reversals
90320 --
90324 
90321 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
90322    l_result := XLA_AE_LINES_PKG.InsertLines;
90323 END IF;
90325 --
90326 -- reset the temp_line_num for each set of events fetched from header
90327 -- cursor rather than doing it for each new event in line cursor
90328 -- Bug 3939231
90329 --
90330 xla_ae_lines_pkg.g_temp_line_num := 0;
90331 
90332 
90333 
90334 --
90335 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
90336 --
90337 --
90338 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90339 
90340       trace
90341          (p_msg      => 'SQL - FETCH line_cur'
90342          ,p_level    => C_LEVEL_STATEMENT
90343          ,p_module   => l_log_module);
90344 
90345 END IF;
90346 --
90347 --
90348 LOOP
90349   --
90350   FETCH line_cur BULK COLLECT INTO
90351         l_array_entity_id
90352       , l_array_legal_entity_id
90353       , l_array_entity_code
90354       , l_array_transaction_num
90355       , l_array_event_id
90356       , l_array_class_code
90357       , l_array_event_type
90358       , l_array_event_number
90359       , l_array_event_date
90360       , l_array_transaction_date
90361       , l_array_reference_num_1
90362       , l_array_reference_num_2
90363       , l_array_reference_num_3
90364       , l_array_reference_num_4
90365       , l_array_reference_char_1
90366       , l_array_reference_char_2
90367       , l_array_reference_char_3
90368       , l_array_reference_char_4
90369       , l_array_reference_date_1
90370       , l_array_reference_date_2
90371       , l_array_reference_date_3
90372       , l_array_reference_date_4
90373       , l_array_event_created_by
90374       , l_array_budgetary_control_flag
90375       , l_array_extract_line_num 
90376       , l_array_source_5
90377       , l_array_source_12
90378       , l_array_source_13
90379       , l_array_source_14
90380       , l_array_source_15
90381       , l_array_source_23
90382       , l_array_source_24
90383       , l_array_source_26
90384       , l_array_source_28
90385       , l_array_source_29
90386       , l_array_source_30
90387       , l_array_source_31
90388       , l_array_source_32
90389       , l_array_source_34
90390       , l_array_source_35
90391       , l_array_source_35_meaning
90392       , l_array_source_36
90393       , l_array_source_42
90394       , l_array_source_43
90395       LIMIT l_rows;
90396 
90397   --
90398   IF (C_LEVEL_EVENT >= g_log_level) THEN
90399             trace
90400                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
90401                ,p_level    => C_LEVEL_EVENT
90402                ,p_module   => l_log_module);
90403   END IF;
90404   --
90405   EXIT WHEN l_array_entity_id.count = 0;
90406 
90407   XLA_AE_LINES_PKG.g_rec_lines := null;
90408 
90409 --
90410 -- Bug 4458708
90411 --
90412 XLA_AE_LINES_PKG.g_LineNumber := 0;
90413 --
90414 --
90415 
90416 FOR Idx IN 1..l_array_event_id.count LOOP
90417    --
90418    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
90419    --
90420    l_event_id := l_array_event_id(idx);  -- 5648433
90421 
90422    --
90423    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
90424    --
90425 
90426    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
90427              (g_array_event(l_event_id).array_value_num('header_index'))
90428          ,'N'
90429          ) <> 'Y'
90430    THEN
90431       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90432          trace
90433             (p_msg      => 'Trancaction revesal option is not Y '
90434             ,p_level    => C_LEVEL_STATEMENT
90435             ,p_module   => l_log_module);
90436       END IF;
90437 
90438 --
90439 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
90440 --
90441 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
90442 --
90443 -- set event info as cache for other routines to refer event attributes
90444 --
90445 
90446 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
90447    l_previous_event_id := l_event_id;
90448 
90449    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
90450       (p_application_id           => p_application_id
90451       ,p_primary_ledger_id        => p_primary_ledger_id
90452       ,p_base_ledger_id           => p_base_ledger_id
90453       ,p_target_ledger_id         => p_target_ledger_id
90454       ,p_entity_id                => l_array_entity_id(Idx)
90455       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
90456       ,p_entity_code              => l_array_entity_code(Idx)
90457       ,p_transaction_num          => l_array_transaction_num(Idx)
90458       ,p_event_id                 => l_array_event_id(Idx)
90459       ,p_event_class_code         => l_array_class_code(Idx)
90460       ,p_event_type_code          => l_array_event_type(Idx)
90461       ,p_event_number             => l_array_event_number(Idx)
90462       ,p_event_date               => l_array_event_date(Idx)
90463       ,p_transaction_date         => l_array_transaction_date(Idx)
90464       ,p_reference_num_1          => l_array_reference_num_1(Idx)
90465       ,p_reference_num_2          => l_array_reference_num_2(Idx)
90466       ,p_reference_num_3          => l_array_reference_num_3(Idx)
90467       ,p_reference_num_4          => l_array_reference_num_4(Idx)
90468       ,p_reference_char_1         => l_array_reference_char_1(Idx)
90469       ,p_reference_char_2         => l_array_reference_char_2(Idx)
90470       ,p_reference_char_3         => l_array_reference_char_3(Idx)
90471       ,p_reference_char_4         => l_array_reference_char_4(Idx)
90475       ,p_reference_date_4         => l_array_reference_date_4(Idx)
90472       ,p_reference_date_1         => l_array_reference_date_1(Idx)
90473       ,p_reference_date_2         => l_array_reference_date_2(Idx)
90474       ,p_reference_date_3         => l_array_reference_date_3(Idx)
90476       ,p_event_created_by         => l_array_event_created_by(Idx)
90477       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
90478        --
90479 END IF;
90480 
90481 
90482 
90483 --
90484 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
90485 
90486 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
90487 
90488 IF l_continue_with_lines THEN
90489    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
90490       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
90491 
90492       xla_accounting_err_pkg.build_message
90493          (p_appli_s_name            => 'XLA'
90494          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
90495          ,p_token_1                 => 'LINE_NUMBER'
90496          ,p_value_1                 => l_array_extract_line_num(Idx)
90497          ,p_token_2                 => 'PRODUCT_NAME'
90498          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
90499          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
90500          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
90501          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
90502 
90503    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
90504       --
90505       -- following sets the accounting attributes needed to reverse
90506       -- accounting for a distributeion
90507       --
90508 
90509       --
90510       -- 5217187
90511       --
90512       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
90513       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
90514                                        g_array_event(l_event_id).array_value_num('header_index'));
90515       --
90516       --
90517 
90518       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
90519       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
90520       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
90521       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
90522       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
90523       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_14(Idx));
90524       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
90525       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_42(Idx);
90526       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
90527       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
90528       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
90529       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
90530       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
90531       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
90532       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
90533       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
90534       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
90535       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
90536       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
90537       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
90538       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
90539       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_12(Idx));
90540       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
90541       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_42(Idx);
90542       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
90543       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
90544       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
90545       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
90546       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
90547       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
90548       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
90549       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
90550       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
90551       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
90552       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
90553       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
90554       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
90555       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
90556       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
90557       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
90558       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
90559       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
90560       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
90561       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
90562       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
90563       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
90564       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
90568       xla_ae_lines_pkg.SetAcctReversalAttrs
90565       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
90566 
90567 
90569          (p_event_id             => l_event_id
90570          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
90571          ,p_calculate_acctd_flag => l_calculate_acctd_flag
90572          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
90573    END IF;
90574 
90575    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
90576        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
90577 
90578 --
90579 AcctLineType_123 (
90580  p_application_id  => p_application_id
90581  ,p_event_id     => l_event_id
90582  ,p_calculate_acctd_flag => l_calculate_acctd_flag
90583  ,p_calculate_g_l_flag => l_calculate_g_l_flag
90584  ,p_actual_flag => l_actual_flag
90585  ,p_balance_type_code => l_balance_type_code
90586  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
90587  
90588  , p_source_5 => l_array_source_5(Idx)
90589  , p_source_12 => l_array_source_12(Idx)
90590  , p_source_13 => l_array_source_13(Idx)
90591  , p_source_14 => l_array_source_14(Idx)
90592  , p_source_23 => l_array_source_23(Idx)
90593  , p_source_24 => l_array_source_24(Idx)
90594  , p_source_26 => l_array_source_26(Idx)
90595  , p_source_28 => l_array_source_28(Idx)
90596  , p_source_29 => l_array_source_29(Idx)
90597  , p_source_30 => l_array_source_30(Idx)
90598  , p_source_31 => l_array_source_31(Idx)
90599  , p_source_32 => l_array_source_32(Idx)
90600  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
90601  , p_source_34 => l_array_source_34(Idx)
90602  , p_source_35 => l_array_source_35(Idx)
90603  , p_source_35_meaning => l_array_source_35_meaning(Idx)
90604  , p_source_36 => l_array_source_36(Idx)
90605  , p_source_42 => l_array_source_42(Idx)
90606  , p_source_43 => l_array_source_43(Idx)
90607  );
90608 If(l_balance_type_code = 'A') THEN
90609   l_actual_gain_loss_ref := l_gain_or_loss_ref;
90610 END IF;
90611 
90612 --
90613 
90614 
90615 --
90616 AcctLineType_125 (
90617  p_application_id  => p_application_id
90618  ,p_event_id     => l_event_id
90619  ,p_calculate_acctd_flag => l_calculate_acctd_flag
90620  ,p_calculate_g_l_flag => l_calculate_g_l_flag
90621  ,p_actual_flag => l_actual_flag
90622  ,p_balance_type_code => l_balance_type_code
90623  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
90624  
90625  , p_source_5 => l_array_source_5(Idx)
90626  , p_source_12 => l_array_source_12(Idx)
90627  , p_source_14 => l_array_source_14(Idx)
90628  , p_source_15 => l_array_source_15(Idx)
90629  , p_source_23 => l_array_source_23(Idx)
90630  , p_source_24 => l_array_source_24(Idx)
90631  , p_source_26 => l_array_source_26(Idx)
90632  , p_source_28 => l_array_source_28(Idx)
90633  , p_source_29 => l_array_source_29(Idx)
90634  , p_source_30 => l_array_source_30(Idx)
90635  , p_source_31 => l_array_source_31(Idx)
90636  , p_source_32 => l_array_source_32(Idx)
90637  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
90638  , p_source_34 => l_array_source_34(Idx)
90639  , p_source_35 => l_array_source_35(Idx)
90640  , p_source_35_meaning => l_array_source_35_meaning(Idx)
90641  , p_source_36 => l_array_source_36(Idx)
90642  , p_source_42 => l_array_source_42(Idx)
90643  , p_source_43 => l_array_source_43(Idx)
90644  );
90645 If(l_balance_type_code = 'A') THEN
90646   l_actual_gain_loss_ref := l_gain_or_loss_ref;
90647 END IF;
90648 
90649 --
90650 
90651       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
90652       -- or secondary ledger that has different currency with primary
90653       -- or alc that is calculated by sla
90654       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
90655             (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'))
90656 
90657 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
90658 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
90659           AND (l_actual_flag = 'A')) THEN
90660         XLA_AE_LINES_PKG.CreateGainOrLossLines(
90661           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
90662          ,p_application_id   => p_application_id
90663          ,p_amb_context_code => 'DEFAULT'
90664          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
90665          ,p_event_class_code => C_EVENT_CLASS_CODE
90666          ,p_event_type_code  => C_EVENT_TYPE_CODE
90667          
90668          ,p_gain_ccid        => -1
90669          ,p_loss_ccid        => -1
90670 
90671          ,p_actual_flag      => l_actual_flag
90672          ,p_enc_flag         => null
90673          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
90674          ,p_enc_g_l_ref      => null
90675          );
90676       END IF;
90677    END IF;
90678 END IF;
90679 
90680    ELSE
90681       --
90682       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
90683       --
90684       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90685          trace
90686             (p_msg      => 'Trancaction revesal option is Y'
90687             ,p_level    => C_LEVEL_STATEMENT
90688             ,p_module   => l_log_module);
90689       END IF;
90690    END IF;
90691 
90692 END LOOP;
90693 l_result := XLA_AE_LINES_PKG.InsertLines ;
90694 end loop;
90695 close line_cur;
90696 
90697 
90698 --
90699 -- insert headers into xla_ae_headers_gt table
90700 --
90701 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
90702 
90703 -- insert into errors table here.
90704 
90705 END LOOP;
90706 
90707 --
90708 -- 4865292
90709 --
90713 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
90710 -- Compare g_hdr_extract_count with event count in
90711 -- CreateHeadersAndLines.
90712 --
90714 
90715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90716    trace (p_msg     => '# rows extracted from header extract objects '
90717                     || ' (running total): '
90718                     || g_hdr_extract_count
90719          ,p_level   => C_LEVEL_STATEMENT
90720          ,p_module  => l_log_module);
90721 END IF;
90722 
90723 CLOSE header_cur;
90724 --
90725 
90726 --
90727 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90728    trace
90729       (p_msg      => 'END of EventClass_159'
90730       ,p_level    => C_LEVEL_PROCEDURE
90731       ,p_module   => l_log_module);
90732 END IF;
90733 --
90734 RETURN l_result;
90735 EXCEPTION
90736 WHEN xla_exceptions_pkg.application_exception THEN
90737    
90738 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
90739 
90740    
90741 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
90742 
90743    RAISE;
90744 WHEN OTHERS THEN
90745    xla_exceptions_pkg.raise_message
90746       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_159');
90747 END EventClass_159;
90748 --
90749 
90750 ---------------------------------------
90751 --
90752 -- PRIVATE PROCEDURE
90753 --         insert_sources_160
90754 --
90755 ----------------------------------------
90756 --
90757 PROCEDURE insert_sources_160(
90758                                 p_target_ledger_id       IN NUMBER
90759                               , p_language               IN VARCHAR2
90760                               , p_sla_ledger_id          IN NUMBER
90761                               , p_pad_start_date         IN DATE
90762                               , p_pad_end_date           IN DATE
90763                          )
90764 IS
90765 
90766 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ALL';
90767 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS';
90768 p_apps_owner                   VARCHAR2(30);
90769 l_log_module                   VARCHAR2(240);
90770 BEGIN
90771 IF g_log_enabled THEN
90772       l_log_module := C_DEFAULT_MODULE||'.insert_sources_160';
90773 END IF;
90774 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
90775 
90776       trace
90777          (p_msg      => 'BEGIN of insert_sources_160'
90778          ,p_level    => C_LEVEL_PROCEDURE
90779          ,p_module   => l_log_module);
90780 
90781 END IF;
90782 
90783 -- select APPS owner
90784 SELECT oracle_username
90785   INTO p_apps_owner
90786   FROM fnd_oracle_userid
90787  WHERE read_only_flag = 'U'
90788 ;
90789 
90790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90791       trace
90792          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
90793                         ' - p_language = '||p_language||
90794                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
90795                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
90796                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
90797                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
90798          ,p_level    => C_LEVEL_STATEMENT
90799          ,p_module   => l_log_module);
90800 END IF;
90801 
90802 
90803 --
90804 INSERT INTO xla_diag_sources --hdr2
90805 (
90806         event_id
90807       , ledger_id
90808       , sla_ledger_id
90809       , description_language
90810       , object_name
90811       , object_type_code
90812       , line_number
90813       , source_application_id
90814       , source_type_code
90815       , source_code
90816       , source_value
90817       , source_meaning
90818       , created_by
90819       , creation_date
90820       , last_update_date
90821       , last_updated_by
90822       , last_update_login
90823       , program_update_date
90824       , program_application_id
90825       , program_id
90826       , request_id
90827 )
90828 SELECT
90829         event_id
90830       , p_target_ledger_id
90831       , p_sla_ledger_id
90832       , p_language
90833       , object_name
90834       , object_type_code
90835       , line_number
90836       , source_application_id
90837       , source_type_code
90838       , source_code
90839       , SUBSTR(source_value ,1,1996)
90840       , SUBSTR(source_meaning ,1,200)
90841       , xla_environment_pkg.g_Usr_Id
90842       , TRUNC(SYSDATE)
90843       , TRUNC(SYSDATE)
90844       , xla_environment_pkg.g_Usr_Id
90845       , xla_environment_pkg.g_Login_Id
90846       , TRUNC(SYSDATE)
90847       , xla_environment_pkg.g_Prog_Appl_Id
90848       , xla_environment_pkg.g_Prog_Id
90849       , xla_environment_pkg.g_Req_Id
90850   FROM (
90851        SELECT xet.event_id                  event_id
90852             , 0                          line_number
90853             , CASE r
90854                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
90855                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
90856                 
90857                ELSE null
90858               END                           object_name
90859             , CASE r
90860                 WHEN 1 THEN 'HEADER' 
90861                 WHEN 2 THEN 'HEADER' 
90862                 
90863                 ELSE null
90864               END                           object_type_code
90865             , CASE r
90866                 WHEN 1 THEN '275' 
90867                 WHEN 2 THEN '275' 
90868                 
90869                 ELSE null
90870               END                           source_application_id
90871             , 'S'             source_type_code
90872             , CASE r
90876                 ELSE null
90873                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
90874                 WHEN 2 THEN 'GL_DATE' 
90875                 
90877               END                           source_code
90878             , CASE r
90879                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
90880                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
90881                 
90882                 ELSE null
90883               END                           source_value
90884             , null              source_meaning
90885          FROM xla_events_gt     xet  
90886       , PA_XLA_EXP_HEADER_V  h2
90887              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
90888          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
90889            AND xet.event_class_code = C_EVENT_CLASS_CODE
90890               AND h2.event_id = xet.event_id
90891 
90892 )
90893 ;
90894 --
90895 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
90896 
90897       trace
90898          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
90899          ,p_level    => C_LEVEL_STATEMENT
90900          ,p_module   => l_log_module);
90901 
90902 END IF;
90903 --
90904 
90905 
90906 
90907 --
90908 INSERT INTO xla_diag_sources  --line2
90909 (
90910         event_id
90911       , ledger_id
90912       , sla_ledger_id
90913       , description_language
90914       , object_name
90915       , object_type_code
90916       , line_number
90917       , source_application_id
90918       , source_type_code
90919       , source_code
90920       , source_value
90921       , source_meaning
90922       , created_by
90923       , creation_date
90924       , last_update_date
90925       , last_updated_by
90926       , last_update_login
90927       , program_update_date
90928       , program_application_id
90929       , program_id
90930       , request_id
90931 )
90932 SELECT  event_id
90933       , p_target_ledger_id
90934       , p_sla_ledger_id
90935       , p_language
90936       , object_name
90937       , object_type_code
90938       , line_number
90939       , source_application_id
90940       , source_type_code
90941       , source_code
90942       , SUBSTR(source_value,1,1996)
90943       , SUBSTR(source_meaning ,1,200)
90944       , xla_environment_pkg.g_Usr_Id
90945       , TRUNC(SYSDATE)
90946       , TRUNC(SYSDATE)
90947       , xla_environment_pkg.g_Usr_Id
90948       , xla_environment_pkg.g_Login_Id
90949       , TRUNC(SYSDATE)
90950       , xla_environment_pkg.g_Prog_Appl_Id
90951       , xla_environment_pkg.g_Prog_Id
90952       , xla_environment_pkg.g_Req_Id
90953   FROM (
90954        SELECT xet.event_id                  event_id
90955             , l1.line_number                 line_number
90956             , CASE r
90957                WHEN 1 THEN 'PA_XLA_CCDL_LINES_V' 
90958                 WHEN 2 THEN 'PA_XLA_CCDL_LINES_V' 
90959                 WHEN 3 THEN 'PA_XLA_CCDL_LINES_V' 
90960                 WHEN 4 THEN 'PA_XLA_CCDL_LINES_V' 
90961                 WHEN 5 THEN 'PA_XLA_CCDL_LINES_V' 
90962                 WHEN 6 THEN 'PA_XLA_CCDL_LINES_V' 
90963                 WHEN 7 THEN 'PA_XLA_CCDL_LINES_V' 
90964                 WHEN 8 THEN 'PA_XLA_CCDL_LINES_V' 
90965                 WHEN 9 THEN 'PA_XLA_CCDL_LINES_V' 
90966                 WHEN 10 THEN 'PA_XLA_CCDL_LINES_V' 
90967                 WHEN 11 THEN 'PA_XLA_CCDL_LINES_V' 
90968                 WHEN 12 THEN 'PA_XLA_CCDL_LINES_V' 
90969                 WHEN 13 THEN 'PA_XLA_CCDL_LINES_V' 
90970                 WHEN 14 THEN 'PA_XLA_CCDL_LINES_V' 
90971                 WHEN 15 THEN 'PA_XLA_CCDL_LINES_V' 
90972                 WHEN 16 THEN 'PA_XLA_CCDL_LINES_V' 
90973                 WHEN 17 THEN 'PA_XLA_CCDL_LINES_V' 
90974                 WHEN 18 THEN 'PA_XLA_CCDL_LINES_V' 
90975                 
90976                ELSE null
90977               END                           object_name
90978             , CASE r
90979                 WHEN 1 THEN 'LINE' 
90980                 WHEN 2 THEN 'LINE' 
90981                 WHEN 3 THEN 'LINE' 
90982                 WHEN 4 THEN 'LINE' 
90983                 WHEN 5 THEN 'LINE' 
90984                 WHEN 6 THEN 'LINE' 
90985                 WHEN 7 THEN 'LINE' 
90986                 WHEN 8 THEN 'LINE' 
90987                 WHEN 9 THEN 'LINE' 
90988                 WHEN 10 THEN 'LINE' 
90989                 WHEN 11 THEN 'LINE' 
90990                 WHEN 12 THEN 'LINE' 
90991                 WHEN 13 THEN 'LINE' 
90992                 WHEN 14 THEN 'LINE' 
90993                 WHEN 15 THEN 'LINE' 
90994                 WHEN 16 THEN 'LINE' 
90995                 WHEN 17 THEN 'LINE' 
90996                 WHEN 18 THEN 'LINE' 
90997                 
90998                 ELSE null
90999               END                           object_type_code
91000             , CASE r
91001                 WHEN 1 THEN '275' 
91002                 WHEN 2 THEN '275' 
91003                 WHEN 3 THEN '275' 
91004                 WHEN 4 THEN '275' 
91005                 WHEN 5 THEN '275' 
91006                 WHEN 6 THEN '275' 
91007                 WHEN 7 THEN '275' 
91008                 WHEN 8 THEN '275' 
91009                 WHEN 9 THEN '275' 
91010                 WHEN 10 THEN '275' 
91011                 WHEN 11 THEN '275' 
91012                 WHEN 12 THEN '275' 
91013                 WHEN 13 THEN '275' 
91014                 WHEN 14 THEN '275' 
91015                 WHEN 15 THEN '275' 
91016                 WHEN 16 THEN '275' 
91017                 WHEN 17 THEN '275' 
91018                 WHEN 18 THEN '275' 
91019                 
91020                 ELSE null
91021               END                           source_application_id
91025                 WHEN 2 THEN 'DESTINATION_CCID' 
91022             , 'S'             source_type_code
91023             , CASE r
91024                 WHEN 1 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
91026                 WHEN 3 THEN 'ADJ_DESTINATION_CCID' 
91027                 WHEN 4 THEN 'SOURCE_CCID' 
91028                 WHEN 5 THEN 'ADJ_SOURCE_CCID' 
91029                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
91030                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
91031                 WHEN 8 THEN 'ENTERED_CURRENCY_CODE' 
91032                 WHEN 9 THEN 'EXCHANGE_RATE_DATE' 
91033                 WHEN 10 THEN 'EXCHANGE_RATE' 
91034                 WHEN 11 THEN 'EXCHANGE_RATE_TYPE' 
91035                 WHEN 12 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
91036                 WHEN 13 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
91037                 WHEN 14 THEN 'LINE_NUMBER' 
91038                 WHEN 15 THEN 'LINE_TYPE' 
91039                 WHEN 16 THEN 'LINE_NUM_REVERSED' 
91040                 WHEN 17 THEN 'ENTERED_AMOUNT' 
91041                 WHEN 18 THEN 'ACCT_AMOUNT' 
91042                 
91043                 ELSE null
91044               END                           source_code
91045             , CASE r
91046                 WHEN 1 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
91047                 WHEN 2 THEN TO_CHAR(l1.DESTINATION_CCID)
91048                 WHEN 3 THEN TO_CHAR(l1.ADJ_DESTINATION_CCID)
91049                 WHEN 4 THEN TO_CHAR(l1.SOURCE_CCID)
91050                 WHEN 5 THEN TO_CHAR(l1.ADJ_SOURCE_CCID)
91051                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
91052                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
91053                 WHEN 8 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
91054                 WHEN 9 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
91055                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE)
91056                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
91057                 WHEN 12 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
91058                 WHEN 13 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
91059                 WHEN 14 THEN TO_CHAR(l1.LINE_NUMBER)
91060                 WHEN 15 THEN TO_CHAR(l1.LINE_TYPE)
91061                 WHEN 16 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
91062                 WHEN 17 THEN TO_CHAR(l1.ENTERED_AMOUNT)
91063                 WHEN 18 THEN TO_CHAR(l1.ACCT_AMOUNT)
91064                 
91065                 ELSE null
91066               END                           source_value
91067             , CASE r
91068                 WHEN 1 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
91069                           103371
91070                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
91071                          ,'ALLOW_OVERRIDE_CCID_FLAG'
91072                          ,'S'
91073                          ,275)
91074                 WHEN 15 THEN fvl35.meaning
91075                 
91076                 ELSE null
91077               END               source_meaning
91078          FROM  xla_events_gt     xet  
91079         , PA_XLA_CCDL_LINES_V  l1
91080   , fnd_lookup_values    fvl35
91081             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
91082         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
91083           AND xet.event_class_code = C_EVENT_CLASS_CODE
91084             AND l1.event_id          = xet.event_id
91085    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
91086   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
91087   AND fvl35.view_application_id(+) = 275
91088   AND fvl35.language(+)            = USERENV('LANG')
91089   
91090 )
91091 ;
91092 --
91093 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
91094 
91095       trace
91096          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
91097          ,p_level    => C_LEVEL_STATEMENT
91098          ,p_module   => l_log_module);
91099 
91100 END IF;
91101 
91102 
91103 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91104       trace
91105          (p_msg      => 'END of insert_sources_160'
91106          ,p_level    => C_LEVEL_PROCEDURE
91107          ,p_module   => l_log_module);
91108 END IF;
91109 EXCEPTION
91110   WHEN xla_exceptions_pkg.application_exception THEN
91111       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
91112             trace
91113                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
91114                ,p_level    => C_LEVEL_EXCEPTION
91115                ,p_module   => l_log_module);
91116       END IF;
91117       RAISE;
91118   WHEN OTHERS THEN
91119       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
91120             trace
91121                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
91122                ,p_level    => C_LEVEL_EXCEPTION
91123                ,p_module   => l_log_module);
91124        END IF;
91125        xla_exceptions_pkg.raise_message
91126            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_160');
91127 END insert_sources_160;
91128 --
91129 
91130 ---------------------------------------
91131 --
91132 -- PRIVATE FUNCTION
91133 --         EventClass_160
91134 --
91135 ----------------------------------------
91136 --
91137 FUNCTION EventClass_160
91138        (p_application_id         IN NUMBER
91139        ,p_base_ledger_id         IN NUMBER
91140        ,p_target_ledger_id       IN NUMBER
91141        ,p_language               IN VARCHAR2
91142        ,p_currency_code          IN VARCHAR2
91143        ,p_sla_ledger_id          IN NUMBER
91144        ,p_pad_start_date         IN DATE
91145        ,p_pad_end_date           IN DATE
91146        ,p_primary_ledger_id      IN NUMBER)
91147 RETURN BOOLEAN IS
91148 --
91149 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'PRVDR_RECVR_RECLASS_ALL';
91150 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'PRVDR_RECVR_RECLASS';
91151 
91152 l_calculate_acctd_flag   VARCHAR2(1) :='N';
91156 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91153 l_calculate_g_l_flag     VARCHAR2(1) :='N';
91154 --
91155 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91157 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
91158 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
91159 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91160 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
91161 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
91162 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91163 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
91164 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
91165 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91166 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91167 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91168 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
91169 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
91170 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
91171 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
91172 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
91173 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
91174 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
91175 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
91176 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
91177 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
91178 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
91179 
91180 l_event_id                             NUMBER;
91181 l_previous_event_id                    NUMBER;
91182 l_first_event_id                       NUMBER;
91183 l_last_event_id                        NUMBER;
91184 
91185 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
91186 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
91187 --
91188 --
91189 l_result                    BOOLEAN := TRUE;
91190 l_rows                      NUMBER  := 1000;
91191 l_event_type_name           VARCHAR2(80) := 'All';
91192 l_event_class_name          VARCHAR2(80) := 'Provider and Receiver Reclass';
91193 l_description               VARCHAR2(4000);
91194 l_transaction_reversal      NUMBER;
91195 l_ae_header_id              NUMBER;
91196 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
91197 l_log_module                VARCHAR2(240);
91198 --
91199 l_acct_reversal_source      VARCHAR2(30);
91200 l_trx_reversal_source       VARCHAR2(30);
91201 
91202 l_continue_with_lines       BOOLEAN := TRUE;
91203 --
91204 l_acc_rev_gl_date_source    DATE;                      -- 4262811
91205 --
91206 type t_array_event_id is table of number index by binary_integer;
91207 
91208 l_rec_array_event                    t_rec_array_event;
91209 l_null_rec_array_event               t_rec_array_event;
91210 l_array_ae_header_id                 xla_number_array_type;
91211 l_actual_flag                        VARCHAR2(1) := NULL;
91212 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
91213 l_balance_type_code                  VARCHAR2(1) :=NULL;
91214 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
91215 
91216 --
91217 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
91218 --
91219 
91220 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
91221 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
91222 
91223 TYPE t_array_source_5 IS TABLE OF PA_XLA_CCDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
91224 TYPE t_array_source_12 IS TABLE OF PA_XLA_CCDL_LINES_V.DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
91225 TYPE t_array_source_13 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_DESTINATION_CCID%TYPE INDEX BY BINARY_INTEGER;
91226 TYPE t_array_source_14 IS TABLE OF PA_XLA_CCDL_LINES_V.SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
91227 TYPE t_array_source_15 IS TABLE OF PA_XLA_CCDL_LINES_V.ADJ_SOURCE_CCID%TYPE INDEX BY BINARY_INTEGER;
91228 TYPE t_array_source_23 IS TABLE OF PA_XLA_CCDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
91229 TYPE t_array_source_24 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
91230 TYPE t_array_source_26 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
91231 TYPE t_array_source_28 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
91232 TYPE t_array_source_29 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
91233 TYPE t_array_source_30 IS TABLE OF PA_XLA_CCDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
91234 TYPE t_array_source_31 IS TABLE OF PA_XLA_CCDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
91235 TYPE t_array_source_32 IS TABLE OF PA_XLA_CCDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
91236 TYPE t_array_source_34 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
91237 TYPE t_array_source_35 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
91238 TYPE t_array_source_36 IS TABLE OF PA_XLA_CCDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
91239 TYPE t_array_source_42 IS TABLE OF PA_XLA_CCDL_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
91240 TYPE t_array_source_43 IS TABLE OF PA_XLA_CCDL_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
91241 
91242 l_array_source_33              t_array_source_33;
91243 l_array_source_75              t_array_source_75;
91244 
91245 l_array_source_5      t_array_source_5;
91246 l_array_source_12      t_array_source_12;
91247 l_array_source_13      t_array_source_13;
91251 l_array_source_24      t_array_source_24;
91248 l_array_source_14      t_array_source_14;
91249 l_array_source_15      t_array_source_15;
91250 l_array_source_23      t_array_source_23;
91252 l_array_source_26      t_array_source_26;
91253 l_array_source_28      t_array_source_28;
91254 l_array_source_29      t_array_source_29;
91255 l_array_source_30      t_array_source_30;
91256 l_array_source_31      t_array_source_31;
91257 l_array_source_32      t_array_source_32;
91258 l_array_source_34      t_array_source_34;
91259 l_array_source_35      t_array_source_35;
91260 l_array_source_35_meaning      t_array_lookup_meaning;
91261 l_array_source_36      t_array_source_36;
91262 l_array_source_42      t_array_source_42;
91263 l_array_source_43      t_array_source_43;
91264 
91265 --
91266 CURSOR header_cur
91267 IS
91268 SELECT /*+ leading(xet) cardinality(xet,1) */
91269 -- Event Class Code: PRVDR_RECVR_RECLASS
91270     xet.entity_id
91271    ,xet.legal_entity_id
91272    ,xet.entity_code
91273    ,xet.transaction_number
91274    ,xet.event_id
91275    ,xet.event_class_code
91276    ,xet.event_type_code
91277    ,xet.event_number
91278    ,xet.event_date
91279    ,xet.transaction_date
91280    ,xet.reference_num_1
91281    ,xet.reference_num_2
91282    ,xet.reference_num_3
91283    ,xet.reference_num_4
91284    ,xet.reference_char_1
91285    ,xet.reference_char_2
91286    ,xet.reference_char_3
91287    ,xet.reference_char_4
91288    ,xet.reference_date_1
91289    ,xet.reference_date_2
91290    ,xet.reference_date_3
91291    ,xet.reference_date_4
91292    ,xet.event_created_by
91293    ,xet.budgetary_control_flag 
91294   , h2.EXPENDITURE_ITEM_ID    source_33
91295   , h2.GL_DATE    source_75
91296   FROM xla_events_gt     xet 
91297   , PA_XLA_EXP_HEADER_V  h2
91298  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
91299    and xet.event_class_code = C_EVENT_CLASS_CODE
91300    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
91301 
91302  ORDER BY event_id
91303 ;
91304 
91305 
91306 --
91307 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
91308 IS
91309 SELECT  /*+ leading(xet) cardinality(xet,1) */
91310 -- Event Class Code: PRVDR_RECVR_RECLASS
91311     xet.entity_id
91312    ,xet.legal_entity_id
91313    ,xet.entity_code
91314    ,xet.transaction_number
91315    ,xet.event_id
91316    ,xet.event_class_code
91317    ,xet.event_type_code
91318    ,xet.event_number
91319    ,xet.event_date
91320    ,xet.transaction_date
91321    ,xet.reference_num_1
91322    ,xet.reference_num_2
91323    ,xet.reference_num_3
91324    ,xet.reference_num_4
91325    ,xet.reference_char_1
91326    ,xet.reference_char_2
91327    ,xet.reference_char_3
91328    ,xet.reference_char_4
91329    ,xet.reference_date_1
91330    ,xet.reference_date_2
91331    ,xet.reference_date_3
91332    ,xet.reference_date_4
91333    ,xet.event_created_by
91334    ,xet.budgetary_control_flag
91335  , l1.LINE_NUMBER  
91336   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
91337   , l1.DESTINATION_CCID    source_12
91338   , l1.ADJ_DESTINATION_CCID    source_13
91339   , l1.SOURCE_CCID    source_14
91340   , l1.ADJ_SOURCE_CCID    source_15
91341   , l1.REVERSING_LINE_FLAG    source_23
91342   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
91343   , l1.ENTERED_CURRENCY_CODE    source_26
91344   , l1.EXCHANGE_RATE_DATE    source_28
91345   , l1.EXCHANGE_RATE    source_29
91346   , l1.EXCHANGE_RATE_TYPE    source_30
91347   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
91348   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
91349   , l1.LINE_NUMBER    source_34
91350   , l1.LINE_TYPE    source_35
91351   , fvl35.meaning   source_35_meaning
91352   , l1.LINE_NUM_REVERSED    source_36
91353   , l1.ENTERED_AMOUNT    source_42
91354   , l1.ACCT_AMOUNT    source_43
91355   FROM xla_events_gt     xet 
91356   , PA_XLA_CCDL_LINES_V  l1
91357   , fnd_lookup_values    fvl35
91358  WHERE xet.event_id between x_first_event_id and x_last_event_id
91359    and xet.event_date between p_pad_start_date and p_pad_end_date
91360    and xet.event_class_code = C_EVENT_CLASS_CODE
91361    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
91362    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
91363   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
91364   AND fvl35.view_application_id(+) = 275
91365   AND fvl35.language(+)            = USERENV('LANG')
91366   ;
91367 
91368 --
91369 BEGIN
91370 IF g_log_enabled THEN
91371    l_log_module := C_DEFAULT_MODULE||'.EventClass_160';
91372 END IF;
91373 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
91374    trace
91375       (p_msg      => 'BEGIN of EventClass_160'
91376       ,p_level    => C_LEVEL_PROCEDURE
91377       ,p_module   => l_log_module);
91378 END IF;
91379 
91380 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
91381    trace
91382       (p_msg      => 'p_application_id = '||p_application_id||
91383                      ' - p_base_ledger_id = '||p_base_ledger_id||
91384                      ' - p_target_ledger_id  = '||p_target_ledger_id||
91385                      ' - p_language = '||p_language||
91386                      ' - p_currency_code = '||p_currency_code||
91387                      ' - p_sla_ledger_id = '||p_sla_ledger_id
91388       ,p_level    => C_LEVEL_STATEMENT
91389       ,p_module   => l_log_module);
91390 END IF;
91391 --
91392 -- initialze arrays
91393 --
91394 g_array_event.DELETE;
91395 l_rec_array_event := l_null_rec_array_event;
91396 --
91397 --------------------------------------
91398 -- 4262811 Initialze MPA Line Number
91399 --------------------------------------
91400 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
91401 
91402 --
91403 
91407 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
91404 --
91405 OPEN header_cur;
91406 --
91408    trace
91409    (p_msg      => 'SQL - FETCH header_cur'
91410    ,p_level    => C_LEVEL_STATEMENT
91411    ,p_module   => l_log_module);
91412 END IF;
91413 --
91414 LOOP
91415 FETCH header_cur BULK COLLECT INTO
91416         l_array_entity_id
91417       , l_array_legal_entity_id
91418       , l_array_entity_code
91419       , l_array_transaction_num
91420       , l_array_event_id
91421       , l_array_class_code
91422       , l_array_event_type
91423       , l_array_event_number
91424       , l_array_event_date
91425       , l_array_transaction_date
91426       , l_array_reference_num_1
91427       , l_array_reference_num_2
91428       , l_array_reference_num_3
91429       , l_array_reference_num_4
91430       , l_array_reference_char_1
91431       , l_array_reference_char_2
91432       , l_array_reference_char_3
91433       , l_array_reference_char_4
91434       , l_array_reference_date_1
91435       , l_array_reference_date_2
91436       , l_array_reference_date_3
91437       , l_array_reference_date_4
91438       , l_array_event_created_by
91439       , l_array_budgetary_control_flag 
91440       , l_array_source_33
91441       , l_array_source_75
91442       LIMIT l_rows;
91443 --
91444 IF (C_LEVEL_EVENT >= g_log_level) THEN
91445    trace
91446    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
91447    ,p_level    => C_LEVEL_EVENT
91448    ,p_module   => l_log_module);
91449 END IF;
91450 --
91451 EXIT WHEN l_array_entity_id.COUNT = 0;
91452 
91453 -- initialize arrays
91454 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
91455 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
91456 
91457 --
91458 -- Bug 4458708
91459 --
91460 XLA_AE_LINES_PKG.g_LineNumber := 0;
91461 
91462 
91463 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
91464 g_last_hdr_idx := l_array_event_id.LAST;
91465 --
91466 -- loop for the headers. Each iteration is for each header extract row
91467 -- fetched in header cursor
91468 --
91469 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
91470 
91471 --
91472 -- set event info as cache for other routines to refer event attributes
91473 --
91474 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
91475    (p_application_id           => p_application_id
91476    ,p_primary_ledger_id        => p_primary_ledger_id
91477    ,p_base_ledger_id           => p_base_ledger_id
91478    ,p_target_ledger_id         => p_target_ledger_id
91479    ,p_entity_id                => l_array_entity_id(hdr_idx)
91480    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
91481    ,p_entity_code              => l_array_entity_code(hdr_idx)
91482    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
91483    ,p_event_id                 => l_array_event_id(hdr_idx)
91484    ,p_event_class_code         => l_array_class_code(hdr_idx)
91485    ,p_event_type_code          => l_array_event_type(hdr_idx)
91486    ,p_event_number             => l_array_event_number(hdr_idx)
91487    ,p_event_date               => l_array_event_date(hdr_idx)
91488    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
91489    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
91490    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
91491    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
91492    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
91493    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
91494    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
91495    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
91496    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
91497    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
91498    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
91499    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
91500    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
91501    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
91502    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
91503 
91504 --
91505 -- set the status of entry to C_VALID (0)
91506 --
91507 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
91508 
91509 --
91510 -- initialize a row for ae header
91511 --
91512 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
91513 
91514 l_event_id := l_array_event_id(hdr_idx);
91515 
91516 --
91517 -- storing the hdr_idx for event. May be used by line cursor.
91518 --
91519 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
91520 
91521 --
91522 -- store sources from header extract. This can be improved to
91523 -- store only those sources from header extract that may be used in lines
91524 --
91525 
91526 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
91527 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
91528 
91529 --
91530 -- initilaize the status of ae headers for diffrent balance types
91531 -- the status is initialised to C_NOT_CREATED (2)
91532 --
91533 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
91534 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
91535 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
91536 
91537 --
91538 -- call api to validate and store accounting attributes for header
91539 --
91540 
91541 ------------------------------------------------------------
91545 
91542 -- Accrual Reversal : to get date for Standard Source (NONE)
91543 ------------------------------------------------------------
91544 l_acc_rev_gl_date_source := NULL;
91546      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
91547       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
91548 
91549 
91550 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
91551 
91552 XLA_AE_HEADER_PKG.SetJeCategoryName;
91553 
91554 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
91555 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
91556 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
91557 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
91558 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
91559 
91560 
91561 -- No header level analytical criteria
91562 
91563 --
91564 --accounting attribute enhancement, bug 3612931
91565 --
91566 l_trx_reversal_source := SUBSTR(NULL, 1,30);
91567 
91568 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
91569    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
91570 
91571    xla_accounting_err_pkg.build_message
91572       (p_appli_s_name            => 'XLA'
91573       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
91574       ,p_token_1                 => 'ACCT_ATTR_NAME'
91575       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
91576       ,p_token_2                 => 'PRODUCT_NAME'
91577       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
91578       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
91579       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
91580       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
91581 
91582 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
91583    --
91584    -- following sets the accounting attributes needed to reverse
91585    -- accounting for a distributeion
91586    --
91587    xla_ae_lines_pkg.SetTrxReversalAttrs
91588       (p_event_id              => l_event_id
91589       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
91590       ,p_trx_reversal_source   => l_trx_reversal_source);
91591 
91592 END IF;
91593 
91594 
91595 ----------------------------------------------------------------
91596 -- 4262811 -  update the header statuses to invalid in need be
91597 ----------------------------------------------------------------
91598 --
91599 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
91600 
91601 
91602   -----------------------------------------------
91603   -- No accrual reversal for the event class/type
91604   -----------------------------------------------
91605 ----------------------------------------------------------------
91606 
91607 --
91608 -- this ends the header loop iteration for one bulk fetch
91609 --
91610 END LOOP;
91611 
91612 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
91613 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
91614 
91615 --
91616 -- insert dummy rows into lines gt table that were created due to
91617 -- transaction reversals
91618 --
91619 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
91620    l_result := XLA_AE_LINES_PKG.InsertLines;
91621 END IF;
91622 
91623 --
91624 -- reset the temp_line_num for each set of events fetched from header
91625 -- cursor rather than doing it for each new event in line cursor
91626 -- Bug 3939231
91627 --
91628 xla_ae_lines_pkg.g_temp_line_num := 0;
91629 
91630 
91631 
91632 --
91633 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
91634 --
91635 --
91636 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
91637 
91638       trace
91639          (p_msg      => 'SQL - FETCH line_cur'
91640          ,p_level    => C_LEVEL_STATEMENT
91641          ,p_module   => l_log_module);
91642 
91643 END IF;
91644 --
91645 --
91646 LOOP
91647   --
91648   FETCH line_cur BULK COLLECT INTO
91649         l_array_entity_id
91650       , l_array_legal_entity_id
91651       , l_array_entity_code
91652       , l_array_transaction_num
91653       , l_array_event_id
91654       , l_array_class_code
91655       , l_array_event_type
91656       , l_array_event_number
91657       , l_array_event_date
91658       , l_array_transaction_date
91659       , l_array_reference_num_1
91660       , l_array_reference_num_2
91661       , l_array_reference_num_3
91662       , l_array_reference_num_4
91663       , l_array_reference_char_1
91664       , l_array_reference_char_2
91665       , l_array_reference_char_3
91666       , l_array_reference_char_4
91667       , l_array_reference_date_1
91668       , l_array_reference_date_2
91669       , l_array_reference_date_3
91670       , l_array_reference_date_4
91671       , l_array_event_created_by
91672       , l_array_budgetary_control_flag
91673       , l_array_extract_line_num 
91674       , l_array_source_5
91675       , l_array_source_12
91676       , l_array_source_13
91677       , l_array_source_14
91678       , l_array_source_15
91679       , l_array_source_23
91680       , l_array_source_24
91681       , l_array_source_26
91682       , l_array_source_28
91683       , l_array_source_29
91684       , l_array_source_30
91685       , l_array_source_31
91686       , l_array_source_32
91687       , l_array_source_34
91688       , l_array_source_35
91692       , l_array_source_43
91689       , l_array_source_35_meaning
91690       , l_array_source_36
91691       , l_array_source_42
91693       LIMIT l_rows;
91694 
91695   --
91696   IF (C_LEVEL_EVENT >= g_log_level) THEN
91697             trace
91698                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
91699                ,p_level    => C_LEVEL_EVENT
91700                ,p_module   => l_log_module);
91701   END IF;
91702   --
91703   EXIT WHEN l_array_entity_id.count = 0;
91704 
91705   XLA_AE_LINES_PKG.g_rec_lines := null;
91706 
91707 --
91708 -- Bug 4458708
91709 --
91710 XLA_AE_LINES_PKG.g_LineNumber := 0;
91711 --
91712 --
91713 
91714 FOR Idx IN 1..l_array_event_id.count LOOP
91715    --
91716    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
91717    --
91718    l_event_id := l_array_event_id(idx);  -- 5648433
91719 
91720    --
91721    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
91722    --
91723 
91724    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
91725              (g_array_event(l_event_id).array_value_num('header_index'))
91726          ,'N'
91727          ) <> 'Y'
91728    THEN
91729       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
91730          trace
91731             (p_msg      => 'Trancaction revesal option is not Y '
91732             ,p_level    => C_LEVEL_STATEMENT
91733             ,p_module   => l_log_module);
91734       END IF;
91735 
91736 --
91737 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
91738 --
91739 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
91740 --
91741 -- set event info as cache for other routines to refer event attributes
91742 --
91743 
91744 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
91745    l_previous_event_id := l_event_id;
91746 
91747    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
91748       (p_application_id           => p_application_id
91749       ,p_primary_ledger_id        => p_primary_ledger_id
91750       ,p_base_ledger_id           => p_base_ledger_id
91751       ,p_target_ledger_id         => p_target_ledger_id
91752       ,p_entity_id                => l_array_entity_id(Idx)
91753       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
91754       ,p_entity_code              => l_array_entity_code(Idx)
91755       ,p_transaction_num          => l_array_transaction_num(Idx)
91756       ,p_event_id                 => l_array_event_id(Idx)
91757       ,p_event_class_code         => l_array_class_code(Idx)
91758       ,p_event_type_code          => l_array_event_type(Idx)
91759       ,p_event_number             => l_array_event_number(Idx)
91760       ,p_event_date               => l_array_event_date(Idx)
91761       ,p_transaction_date         => l_array_transaction_date(Idx)
91762       ,p_reference_num_1          => l_array_reference_num_1(Idx)
91763       ,p_reference_num_2          => l_array_reference_num_2(Idx)
91764       ,p_reference_num_3          => l_array_reference_num_3(Idx)
91765       ,p_reference_num_4          => l_array_reference_num_4(Idx)
91766       ,p_reference_char_1         => l_array_reference_char_1(Idx)
91767       ,p_reference_char_2         => l_array_reference_char_2(Idx)
91768       ,p_reference_char_3         => l_array_reference_char_3(Idx)
91769       ,p_reference_char_4         => l_array_reference_char_4(Idx)
91770       ,p_reference_date_1         => l_array_reference_date_1(Idx)
91771       ,p_reference_date_2         => l_array_reference_date_2(Idx)
91772       ,p_reference_date_3         => l_array_reference_date_3(Idx)
91773       ,p_reference_date_4         => l_array_reference_date_4(Idx)
91774       ,p_event_created_by         => l_array_event_created_by(Idx)
91775       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
91776        --
91777 END IF;
91778 
91779 
91780 
91781 --
91782 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
91783 
91784 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
91785 
91786 IF l_continue_with_lines THEN
91787    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
91788       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
91789 
91790       xla_accounting_err_pkg.build_message
91791          (p_appli_s_name            => 'XLA'
91792          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
91793          ,p_token_1                 => 'LINE_NUMBER'
91794          ,p_value_1                 => l_array_extract_line_num(Idx)
91795          ,p_token_2                 => 'PRODUCT_NAME'
91796          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
91797          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
91798          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
91799          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
91800 
91801    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
91802       --
91803       -- following sets the accounting attributes needed to reverse
91804       -- accounting for a distributeion
91805       --
91806 
91807       --
91808       -- 5217187
91809       --
91810       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
91811       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
91812                                        g_array_event(l_event_id).array_value_num('header_index'));
91813       --
91814       --
91815 
91816       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
91817       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
91821       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_14(Idx));
91818       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
91819       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
91820       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
91822       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
91823       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_42(Idx);
91824       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
91825       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
91826       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
91827       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_43(Idx);
91828       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
91829       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
91830       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
91831       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
91832       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
91833       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
91834       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
91835       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
91836       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
91837       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_12(Idx));
91838       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
91839       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_42(Idx);
91840       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
91841       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
91842       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
91843       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_43(Idx);
91844       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
91845       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
91846       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
91847       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
91848       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
91849       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
91850       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
91851       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
91852       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
91853       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
91854       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
91855       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
91856       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
91857       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
91858       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
91859       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
91860       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
91861       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
91862       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
91863       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
91864 
91865 
91866       xla_ae_lines_pkg.SetAcctReversalAttrs
91867          (p_event_id             => l_event_id
91868          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
91869          ,p_calculate_acctd_flag => l_calculate_acctd_flag
91870          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
91871    END IF;
91872 
91873    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
91874        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
91875 
91876 --
91877 AcctLineType_122 (
91878  p_application_id  => p_application_id
91879  ,p_event_id     => l_event_id
91880  ,p_calculate_acctd_flag => l_calculate_acctd_flag
91881  ,p_calculate_g_l_flag => l_calculate_g_l_flag
91882  ,p_actual_flag => l_actual_flag
91883  ,p_balance_type_code => l_balance_type_code
91884  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
91885  
91886  , p_source_5 => l_array_source_5(Idx)
91887  , p_source_12 => l_array_source_12(Idx)
91888  , p_source_13 => l_array_source_13(Idx)
91889  , p_source_14 => l_array_source_14(Idx)
91890  , p_source_23 => l_array_source_23(Idx)
91891  , p_source_24 => l_array_source_24(Idx)
91892  , p_source_26 => l_array_source_26(Idx)
91893  , p_source_28 => l_array_source_28(Idx)
91894  , p_source_29 => l_array_source_29(Idx)
91895  , p_source_30 => l_array_source_30(Idx)
91896  , p_source_31 => l_array_source_31(Idx)
91897  , p_source_32 => l_array_source_32(Idx)
91898  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
91899  , p_source_34 => l_array_source_34(Idx)
91900  , p_source_35 => l_array_source_35(Idx)
91901  , p_source_35_meaning => l_array_source_35_meaning(Idx)
91902  , p_source_36 => l_array_source_36(Idx)
91903  , p_source_42 => l_array_source_42(Idx)
91904  , p_source_43 => l_array_source_43(Idx)
91905  );
91906 If(l_balance_type_code = 'A') THEN
91907   l_actual_gain_loss_ref := l_gain_or_loss_ref;
91908 END IF;
91909 
91910 --
91911 
91912 
91913 --
91914 AcctLineType_124 (
91915  p_application_id  => p_application_id
91916  ,p_event_id     => l_event_id
91917  ,p_calculate_acctd_flag => l_calculate_acctd_flag
91918  ,p_calculate_g_l_flag => l_calculate_g_l_flag
91919  ,p_actual_flag => l_actual_flag
91920  ,p_balance_type_code => l_balance_type_code
91924  , p_source_12 => l_array_source_12(Idx)
91921  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
91922  
91923  , p_source_5 => l_array_source_5(Idx)
91925  , p_source_14 => l_array_source_14(Idx)
91926  , p_source_15 => l_array_source_15(Idx)
91927  , p_source_23 => l_array_source_23(Idx)
91928  , p_source_24 => l_array_source_24(Idx)
91929  , p_source_26 => l_array_source_26(Idx)
91930  , p_source_28 => l_array_source_28(Idx)
91931  , p_source_29 => l_array_source_29(Idx)
91932  , p_source_30 => l_array_source_30(Idx)
91933  , p_source_31 => l_array_source_31(Idx)
91934  , p_source_32 => l_array_source_32(Idx)
91935  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
91936  , p_source_34 => l_array_source_34(Idx)
91937  , p_source_35 => l_array_source_35(Idx)
91938  , p_source_35_meaning => l_array_source_35_meaning(Idx)
91939  , p_source_36 => l_array_source_36(Idx)
91940  , p_source_42 => l_array_source_42(Idx)
91941  , p_source_43 => l_array_source_43(Idx)
91942  );
91943 If(l_balance_type_code = 'A') THEN
91944   l_actual_gain_loss_ref := l_gain_or_loss_ref;
91945 END IF;
91946 
91947 --
91948 
91949       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
91950       -- or secondary ledger that has different currency with primary
91951       -- or alc that is calculated by sla
91952       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
91953             (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'))
91954 
91955 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
91956 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
91957           AND (l_actual_flag = 'A')) THEN
91958         XLA_AE_LINES_PKG.CreateGainOrLossLines(
91959           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
91960          ,p_application_id   => p_application_id
91961          ,p_amb_context_code => 'DEFAULT'
91962          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
91963          ,p_event_class_code => C_EVENT_CLASS_CODE
91964          ,p_event_type_code  => C_EVENT_TYPE_CODE
91965          
91966          ,p_gain_ccid        => -1
91967          ,p_loss_ccid        => -1
91968 
91969          ,p_actual_flag      => l_actual_flag
91970          ,p_enc_flag         => null
91971          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
91972          ,p_enc_g_l_ref      => null
91973          );
91974       END IF;
91975    END IF;
91976 END IF;
91977 
91978    ELSE
91979       --
91980       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
91981       --
91982       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
91983          trace
91984             (p_msg      => 'Trancaction revesal option is Y'
91985             ,p_level    => C_LEVEL_STATEMENT
91986             ,p_module   => l_log_module);
91987       END IF;
91988    END IF;
91989 
91990 END LOOP;
91991 l_result := XLA_AE_LINES_PKG.InsertLines ;
91992 end loop;
91993 close line_cur;
91994 
91995 
91996 --
91997 -- insert headers into xla_ae_headers_gt table
91998 --
91999 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
92000 
92001 -- insert into errors table here.
92002 
92003 END LOOP;
92004 
92005 --
92006 -- 4865292
92007 --
92008 -- Compare g_hdr_extract_count with event count in
92009 -- CreateHeadersAndLines.
92010 --
92011 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
92012 
92013 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
92014    trace (p_msg     => '# rows extracted from header extract objects '
92015                     || ' (running total): '
92016                     || g_hdr_extract_count
92017          ,p_level   => C_LEVEL_STATEMENT
92018          ,p_module  => l_log_module);
92019 END IF;
92020 
92021 CLOSE header_cur;
92022 --
92023 
92024 --
92025 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92026    trace
92027       (p_msg      => 'END of EventClass_160'
92028       ,p_level    => C_LEVEL_PROCEDURE
92029       ,p_module   => l_log_module);
92030 END IF;
92031 --
92032 RETURN l_result;
92033 EXCEPTION
92034 WHEN xla_exceptions_pkg.application_exception THEN
92035    
92036 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
92037 
92038    
92039 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
92040 
92041    RAISE;
92042 WHEN OTHERS THEN
92043    xla_exceptions_pkg.raise_message
92044       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_160');
92045 END EventClass_160;
92046 --
92047 
92048 ---------------------------------------
92049 --
92050 -- PRIVATE PROCEDURE
92051 --         insert_sources_161
92052 --
92053 ----------------------------------------
92054 --
92055 PROCEDURE insert_sources_161(
92056                                 p_target_ledger_id       IN NUMBER
92057                               , p_language               IN VARCHAR2
92058                               , p_sla_ledger_id          IN NUMBER
92059                               , p_pad_start_date         IN DATE
92060                               , p_pad_end_date           IN DATE
92061                          )
92062 IS
92063 
92064 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ADJ_ALL';
92065 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REVENUE_ADJ';
92066 p_apps_owner                   VARCHAR2(30);
92067 l_log_module                   VARCHAR2(240);
92068 BEGIN
92069 IF g_log_enabled THEN
92070       l_log_module := C_DEFAULT_MODULE||'.insert_sources_161';
92071 END IF;
92075          (p_msg      => 'BEGIN of insert_sources_161'
92072 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92073 
92074       trace
92076          ,p_level    => C_LEVEL_PROCEDURE
92077          ,p_module   => l_log_module);
92078 
92079 END IF;
92080 
92081 -- select APPS owner
92082 SELECT oracle_username
92083   INTO p_apps_owner
92084   FROM fnd_oracle_userid
92085  WHERE read_only_flag = 'U'
92086 ;
92087 
92088 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
92089       trace
92090          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
92091                         ' - p_language = '||p_language||
92092                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
92093                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
92094                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
92095                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
92096          ,p_level    => C_LEVEL_STATEMENT
92097          ,p_module   => l_log_module);
92098 END IF;
92099 
92100 
92101 --
92102 INSERT INTO xla_diag_sources --hdr2
92103 (
92104         event_id
92105       , ledger_id
92106       , sla_ledger_id
92107       , description_language
92108       , object_name
92109       , object_type_code
92110       , line_number
92111       , source_application_id
92112       , source_type_code
92113       , source_code
92114       , source_value
92115       , source_meaning
92116       , created_by
92117       , creation_date
92118       , last_update_date
92119       , last_updated_by
92120       , last_update_login
92121       , program_update_date
92122       , program_application_id
92123       , program_id
92124       , request_id
92125 )
92126 SELECT
92127         event_id
92128       , p_target_ledger_id
92129       , p_sla_ledger_id
92130       , p_language
92131       , object_name
92132       , object_type_code
92133       , line_number
92134       , source_application_id
92135       , source_type_code
92136       , source_code
92137       , SUBSTR(source_value ,1,1996)
92138       , SUBSTR(source_meaning ,1,200)
92139       , xla_environment_pkg.g_Usr_Id
92140       , TRUNC(SYSDATE)
92141       , TRUNC(SYSDATE)
92142       , xla_environment_pkg.g_Usr_Id
92143       , xla_environment_pkg.g_Login_Id
92144       , TRUNC(SYSDATE)
92145       , xla_environment_pkg.g_Prog_Appl_Id
92146       , xla_environment_pkg.g_Prog_Id
92147       , xla_environment_pkg.g_Req_Id
92148   FROM (
92149        SELECT xet.event_id                  event_id
92150             , 0                          line_number
92151             , CASE r
92152                WHEN 1 THEN 'PA_XLA_REVENUE_HEADERS_V' 
92153                 WHEN 2 THEN 'PA_XLA_REVENUE_HEADERS_V' 
92154                 WHEN 3 THEN 'PA_XLA_REVENUE_HEADERS_V' 
92155                 WHEN 4 THEN 'PA_XLA_REVENUE_HEADERS_V' 
92156                 WHEN 5 THEN 'PA_XLA_REVENUE_HEADERS_V' 
92157                 
92158                ELSE null
92159               END                           object_name
92160             , CASE r
92161                 WHEN 1 THEN 'HEADER' 
92162                 WHEN 2 THEN 'HEADER' 
92163                 WHEN 3 THEN 'HEADER' 
92164                 WHEN 4 THEN 'HEADER' 
92165                 WHEN 5 THEN 'HEADER' 
92166                 
92167                 ELSE null
92168               END                           object_type_code
92169             , CASE r
92170                 WHEN 1 THEN '275' 
92171                 WHEN 2 THEN '275' 
92172                 WHEN 3 THEN '275' 
92173                 WHEN 4 THEN '275' 
92174                 WHEN 5 THEN '275' 
92175                 
92176                 ELSE null
92177               END                           source_application_id
92178             , 'S'             source_type_code
92179             , CASE r
92180                 WHEN 1 THEN 'CREDITING_REVENUE_FLAG' 
92181                 WHEN 2 THEN 'EVENT_ID' 
92182                 WHEN 3 THEN 'GL_DATE' 
92183                 WHEN 4 THEN 'UER_CCID' 
92184                 WHEN 5 THEN 'UBR_CCID' 
92185                 
92186                 ELSE null
92187               END                           source_code
92188             , CASE r
92189                 WHEN 1 THEN TO_CHAR(h2.CREDITING_REVENUE_FLAG)
92190                 WHEN 2 THEN TO_CHAR(h2.EVENT_ID)
92191                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
92192                 WHEN 4 THEN TO_CHAR(h2.UER_CCID)
92193                 WHEN 5 THEN TO_CHAR(h2.UBR_CCID)
92194                 
92195                 ELSE null
92196               END                           source_value
92197             , CASE r
92198                 WHEN 1 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
92199                           103371
92200                          ,TO_CHAR(h2.CREDITING_REVENUE_FLAG)
92201                          ,'CREDITING_REVENUE_FLAG'
92202                          ,'S'
92203                          ,275)
92204                 
92205                 ELSE null
92206               END               source_meaning
92207          FROM xla_events_gt     xet  
92208       , PA_XLA_REVENUE_HEADERS_V  h2
92209              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
92210          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
92211            AND xet.event_class_code = C_EVENT_CLASS_CODE
92212               AND h2.event_id = xet.event_id
92213 
92214 )
92215 ;
92216 --
92217 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
92218 
92219       trace
92220          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
92221          ,p_level    => C_LEVEL_STATEMENT
92222          ,p_module   => l_log_module);
92223 
92227 
92224 END IF;
92225 --
92226 
92228 
92229 --
92230 INSERT INTO xla_diag_sources  --line2
92231 (
92232         event_id
92233       , ledger_id
92234       , sla_ledger_id
92235       , description_language
92236       , object_name
92237       , object_type_code
92238       , line_number
92239       , source_application_id
92240       , source_type_code
92241       , source_code
92242       , source_value
92243       , source_meaning
92244       , created_by
92245       , creation_date
92246       , last_update_date
92247       , last_updated_by
92248       , last_update_login
92249       , program_update_date
92250       , program_application_id
92251       , program_id
92252       , request_id
92253 )
92254 SELECT  event_id
92255       , p_target_ledger_id
92256       , p_sla_ledger_id
92257       , p_language
92258       , object_name
92259       , object_type_code
92260       , line_number
92261       , source_application_id
92262       , source_type_code
92263       , source_code
92264       , SUBSTR(source_value,1,1996)
92265       , SUBSTR(source_meaning ,1,200)
92266       , xla_environment_pkg.g_Usr_Id
92267       , TRUNC(SYSDATE)
92268       , TRUNC(SYSDATE)
92269       , xla_environment_pkg.g_Usr_Id
92270       , xla_environment_pkg.g_Login_Id
92271       , TRUNC(SYSDATE)
92272       , xla_environment_pkg.g_Prog_Appl_Id
92273       , xla_environment_pkg.g_Prog_Id
92274       , xla_environment_pkg.g_Req_Id
92275   FROM (
92276        SELECT xet.event_id                  event_id
92277             , l3.line_number                 line_number
92278             , CASE r
92279                WHEN 1 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92280                 WHEN 2 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92281                 WHEN 3 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92282                 WHEN 4 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92283                 WHEN 5 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92284                 WHEN 6 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92285                 WHEN 7 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92286                 WHEN 8 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92287                 WHEN 9 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92288                 WHEN 10 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92289                 WHEN 11 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92290                 WHEN 12 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92291                 WHEN 13 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92292                 WHEN 14 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92293                 WHEN 15 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92294                 WHEN 16 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92295                 WHEN 17 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92296                 WHEN 18 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92297                 WHEN 19 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92298                 WHEN 20 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92299                 WHEN 21 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92300                 WHEN 22 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92301                 WHEN 23 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92302                 WHEN 24 THEN 'PA_XLA_REVENUE_LINES_ADJ_V' 
92303                 WHEN 25 THEN 'PA_XLA_EVENT_TYPE_REF_V' 
92304                 
92305                ELSE null
92306               END                           object_name
92307             , CASE r
92308                 WHEN 1 THEN 'LINE' 
92309                 WHEN 2 THEN 'LINE' 
92310                 WHEN 3 THEN 'LINE' 
92311                 WHEN 4 THEN 'LINE' 
92312                 WHEN 5 THEN 'LINE' 
92313                 WHEN 6 THEN 'LINE' 
92314                 WHEN 7 THEN 'LINE' 
92315                 WHEN 8 THEN 'LINE' 
92316                 WHEN 9 THEN 'LINE' 
92317                 WHEN 10 THEN 'LINE' 
92318                 WHEN 11 THEN 'LINE' 
92319                 WHEN 12 THEN 'LINE' 
92320                 WHEN 13 THEN 'LINE' 
92321                 WHEN 14 THEN 'LINE' 
92322                 WHEN 15 THEN 'LINE' 
92323                 WHEN 16 THEN 'LINE' 
92324                 WHEN 17 THEN 'LINE' 
92325                 WHEN 18 THEN 'LINE' 
92326                 WHEN 19 THEN 'LINE' 
92327                 WHEN 20 THEN 'LINE' 
92328                 WHEN 21 THEN 'LINE' 
92329                 WHEN 22 THEN 'LINE' 
92330                 WHEN 23 THEN 'LINE' 
92331                 WHEN 24 THEN 'LINE' 
92332                 WHEN 25 THEN 'LINE' 
92333                 
92334                 ELSE null
92335               END                           object_type_code
92336             , CASE r
92337                 WHEN 1 THEN '275' 
92338                 WHEN 2 THEN '275' 
92339                 WHEN 3 THEN '275' 
92340                 WHEN 4 THEN '275' 
92341                 WHEN 5 THEN '275' 
92342                 WHEN 6 THEN '275' 
92343                 WHEN 7 THEN '275' 
92344                 WHEN 8 THEN '275' 
92345                 WHEN 9 THEN '275' 
92346                 WHEN 10 THEN '275' 
92347                 WHEN 11 THEN '275' 
92348                 WHEN 12 THEN '275' 
92349                 WHEN 13 THEN '275' 
92350                 WHEN 14 THEN '275' 
92351                 WHEN 15 THEN '275' 
92352                 WHEN 16 THEN '275' 
92353                 WHEN 17 THEN '275' 
92354                 WHEN 18 THEN '275' 
92355                 WHEN 19 THEN '275' 
92356                 WHEN 20 THEN '275' 
92357                 WHEN 21 THEN '275' 
92358                 WHEN 22 THEN '275' 
92359                 WHEN 23 THEN '275' 
92360                 WHEN 24 THEN '275' 
92361                 WHEN 25 THEN '275' 
92362                 
92363                 ELSE null
92364               END                           source_application_id
92365             , 'S'             source_type_code
92366             , CASE r
92370                 WHEN 4 THEN 'PDR_UER_CCID' 
92367                 WHEN 1 THEN 'PERDL_CODE_COMBINATION_ID' 
92368                 WHEN 2 THEN 'PRDL_CODE_COMBINATION_ID' 
92369                 WHEN 3 THEN 'PDR_UBR_CCID' 
92371                 WHEN 5 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
92372                 WHEN 6 THEN 'ENTERED_CURRENCY_CODE' 
92373                 WHEN 7 THEN 'EXCHANGE_RATE_DATE' 
92374                 WHEN 8 THEN 'EXCHANGE_RATE' 
92375                 WHEN 9 THEN 'EXCHANGE_RATE_TYPE' 
92376                 WHEN 10 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
92377                 WHEN 11 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
92378                 WHEN 12 THEN 'ENTERED_AMOUNT' 
92379                 WHEN 13 THEN 'ACCT_AMOUNT' 
92380                 WHEN 14 THEN 'REVENUE_DISTRIBUTION_TYPE' 
92381                 WHEN 15 THEN 'REVENUE_FIRST_DIST_ID' 
92382                 WHEN 16 THEN 'REVENUE_SECOND_DIST_ID' 
92383                 WHEN 17 THEN 'ACTUAL_UPG_CR_CCID' 
92384                 WHEN 18 THEN 'ACTUAL_UPG_DR_CCID' 
92385                 WHEN 19 THEN 'APPLICATION_ID' 
92386                 WHEN 20 THEN 'REVENUE_ENTITY_CODE' 
92387                 WHEN 21 THEN 'CR_REVENUE_FIRST_DIST_ID' 
92388                 WHEN 22 THEN 'PROJECT_ID' 
92389                 WHEN 23 THEN 'CR_REVENUE_SECOND_DIST_ID' 
92390                 WHEN 24 THEN 'PDR_DRAFT_REV_NUM_CREDITED' 
92391                 WHEN 25 THEN 'REV_EVENT_TYPE_CLASSIFICATION' 
92392                 
92393                 ELSE null
92394               END                           source_code
92395             , CASE r
92396                 WHEN 1 THEN TO_CHAR(l3.PERDL_CODE_COMBINATION_ID)
92397                 WHEN 2 THEN TO_CHAR(l3.PRDL_CODE_COMBINATION_ID)
92398                 WHEN 3 THEN TO_CHAR(l3.PDR_UBR_CCID)
92399                 WHEN 4 THEN TO_CHAR(l3.PDR_UER_CCID)
92400                 WHEN 5 THEN TO_CHAR(l3.ACTUAL_UPG_CR_ACCT_CLASS)
92401                 WHEN 6 THEN TO_CHAR(l3.ENTERED_CURRENCY_CODE)
92402                 WHEN 7 THEN TO_CHAR(l3.EXCHANGE_RATE_DATE)
92403                 WHEN 8 THEN TO_CHAR(l3.EXCHANGE_RATE)
92404                 WHEN 9 THEN TO_CHAR(l3.EXCHANGE_RATE_TYPE)
92405                 WHEN 10 THEN TO_CHAR(l3.ACTUAL_UPG_DR_ACCT_CLASS)
92406                 WHEN 11 THEN TO_CHAR(l3.USE_ACT_UPG_ATTRIB_FLAG)
92407                 WHEN 12 THEN TO_CHAR(l3.ENTERED_AMOUNT)
92408                 WHEN 13 THEN TO_CHAR(l3.ACCT_AMOUNT)
92409                 WHEN 14 THEN TO_CHAR(l3.REVENUE_DISTRIBUTION_TYPE)
92410                 WHEN 15 THEN TO_CHAR(l3.REVENUE_FIRST_DIST_ID)
92411                 WHEN 16 THEN TO_CHAR(l3.REVENUE_SECOND_DIST_ID)
92412                 WHEN 17 THEN TO_CHAR(l3.ACTUAL_UPG_CR_CCID)
92413                 WHEN 18 THEN TO_CHAR(l3.ACTUAL_UPG_DR_CCID)
92414                 WHEN 19 THEN TO_CHAR(l3.APPLICATION_ID)
92415                 WHEN 20 THEN TO_CHAR(l3.REVENUE_ENTITY_CODE)
92416                 WHEN 21 THEN TO_CHAR(l3.CR_REVENUE_FIRST_DIST_ID)
92417                 WHEN 22 THEN TO_CHAR(l3.PROJECT_ID)
92418                 WHEN 23 THEN TO_CHAR(l3.CR_REVENUE_SECOND_DIST_ID)
92419                 WHEN 24 THEN TO_CHAR(l3.PDR_DRAFT_REV_NUM_CREDITED)
92420                 WHEN 25 THEN TO_CHAR(l1.REV_EVENT_TYPE_CLASSIFICATION)
92421                 
92422                 ELSE null
92423               END                           source_value
92424             , CASE r
92425                 WHEN 25 THEN fvl72.meaning
92426                 
92427                 ELSE null
92428               END               source_meaning
92429          FROM  xla_events_gt     xet  
92430         , PA_XLA_EVENT_TYPE_REF_V  l1
92431         , PA_XLA_REVENUE_LINES_ADJ_V  l3
92432   , fnd_lookup_values    fvl72
92433             , (select rownum r from all_objects where rownum <= 25 and owner = p_apps_owner)
92434         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
92435           AND xet.event_class_code = C_EVENT_CLASS_CODE
92436             AND l3.event_id          = xet.event_id
92437  AND l1.rev_event_type (+) =l3.rev_event_type   AND fvl72.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
92438   AND fvl72.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
92439   AND fvl72.view_application_id(+) = 275
92440   AND fvl72.language(+)            = USERENV('LANG')
92441   
92442 )
92443 ;
92444 --
92445 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
92446 
92447       trace
92448          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
92449          ,p_level    => C_LEVEL_STATEMENT
92450          ,p_module   => l_log_module);
92451 
92452 END IF;
92453 
92454 
92455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92456       trace
92457          (p_msg      => 'END of insert_sources_161'
92458          ,p_level    => C_LEVEL_PROCEDURE
92459          ,p_module   => l_log_module);
92460 END IF;
92461 EXCEPTION
92462   WHEN xla_exceptions_pkg.application_exception THEN
92463       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
92464             trace
92465                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
92466                ,p_level    => C_LEVEL_EXCEPTION
92467                ,p_module   => l_log_module);
92468       END IF;
92469       RAISE;
92470   WHEN OTHERS THEN
92471       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
92472             trace
92473                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
92474                ,p_level    => C_LEVEL_EXCEPTION
92475                ,p_module   => l_log_module);
92476        END IF;
92477        xla_exceptions_pkg.raise_message
92478            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_161');
92479 END insert_sources_161;
92480 --
92481 
92482 ---------------------------------------
92483 --
92484 -- PRIVATE FUNCTION
92485 --         EventClass_161
92486 --
92487 ----------------------------------------
92488 --
92489 FUNCTION EventClass_161
92490        (p_application_id         IN NUMBER
92494        ,p_currency_code          IN VARCHAR2
92491        ,p_base_ledger_id         IN NUMBER
92492        ,p_target_ledger_id       IN NUMBER
92493        ,p_language               IN VARCHAR2
92495        ,p_sla_ledger_id          IN NUMBER
92496        ,p_pad_start_date         IN DATE
92497        ,p_pad_end_date           IN DATE
92498        ,p_primary_ledger_id      IN NUMBER)
92499 RETURN BOOLEAN IS
92500 --
92501 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ADJ_ALL';
92502 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REVENUE_ADJ';
92503 
92504 l_calculate_acctd_flag   VARCHAR2(1) :='N';
92505 l_calculate_g_l_flag     VARCHAR2(1) :='N';
92506 --
92507 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92508 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92509 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
92510 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
92511 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92512 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
92513 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
92514 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92515 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
92516 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
92517 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92518 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92519 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92520 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
92521 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
92522 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
92523 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
92524 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
92525 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
92526 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
92527 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
92528 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
92529 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
92530 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
92531 
92532 l_event_id                             NUMBER;
92533 l_previous_event_id                    NUMBER;
92534 l_first_event_id                       NUMBER;
92535 l_last_event_id                        NUMBER;
92536 
92537 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
92538 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
92539 --
92540 --
92541 l_result                    BOOLEAN := TRUE;
92542 l_rows                      NUMBER  := 1000;
92543 l_event_type_name           VARCHAR2(80) := 'All';
92544 l_event_class_name          VARCHAR2(80) := 'Revenue Adjustment';
92545 l_description               VARCHAR2(4000);
92546 l_transaction_reversal      NUMBER;
92547 l_ae_header_id              NUMBER;
92548 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
92549 l_log_module                VARCHAR2(240);
92550 --
92551 l_acct_reversal_source      VARCHAR2(30);
92552 l_trx_reversal_source       VARCHAR2(30);
92553 
92554 l_continue_with_lines       BOOLEAN := TRUE;
92555 --
92556 l_acc_rev_gl_date_source    DATE;                      -- 4262811
92557 --
92558 type t_array_event_id is table of number index by binary_integer;
92559 
92560 l_rec_array_event                    t_rec_array_event;
92561 l_null_rec_array_event               t_rec_array_event;
92562 l_array_ae_header_id                 xla_number_array_type;
92563 l_actual_flag                        VARCHAR2(1) := NULL;
92564 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
92565 l_balance_type_code                  VARCHAR2(1) :=NULL;
92566 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
92567 
92568 --
92569 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
92570 --
92571 
92572 TYPE t_array_source_48 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.CREDITING_REVENUE_FLAG%TYPE INDEX BY BINARY_INTEGER;
92573 TYPE t_array_source_51 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.EVENT_ID%TYPE INDEX BY BINARY_INTEGER;
92574 TYPE t_array_source_75 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
92575 TYPE t_array_source_77 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UER_CCID%TYPE INDEX BY BINARY_INTEGER;
92576 TYPE t_array_source_78 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
92577 
92578 TYPE t_array_source_1 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PERDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
92579 TYPE t_array_source_19 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PRDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
92580 TYPE t_array_source_20 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
92581 TYPE t_array_source_21 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_UER_CCID%TYPE INDEX BY BINARY_INTEGER;
92582 TYPE t_array_source_24 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
92583 TYPE t_array_source_26 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
92584 TYPE t_array_source_28 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
92585 TYPE t_array_source_29 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
92586 TYPE t_array_source_30 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
92587 TYPE t_array_source_31 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
92591 TYPE t_array_source_46 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
92588 TYPE t_array_source_32 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
92589 TYPE t_array_source_42 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
92590 TYPE t_array_source_43 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
92592 TYPE t_array_source_49 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
92593 TYPE t_array_source_50 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
92594 TYPE t_array_source_64 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_CR_CCID%TYPE INDEX BY BINARY_INTEGER;
92595 TYPE t_array_source_65 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.ACTUAL_UPG_DR_CCID%TYPE INDEX BY BINARY_INTEGER;
92596 TYPE t_array_source_66 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
92597 TYPE t_array_source_67 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.REVENUE_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
92598 TYPE t_array_source_68 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.CR_REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
92599 TYPE t_array_source_69 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PROJECT_ID%TYPE INDEX BY BINARY_INTEGER;
92600 TYPE t_array_source_70 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.CR_REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
92601 TYPE t_array_source_71 IS TABLE OF PA_XLA_REVENUE_LINES_ADJ_V.PDR_DRAFT_REV_NUM_CREDITED%TYPE INDEX BY BINARY_INTEGER;
92602 TYPE t_array_source_72 IS TABLE OF PA_XLA_EVENT_TYPE_REF_V.REV_EVENT_TYPE_CLASSIFICATION%TYPE INDEX BY BINARY_INTEGER;
92603 
92604 l_array_source_48              t_array_source_48;
92605 l_array_source_51              t_array_source_51;
92606 l_array_source_75              t_array_source_75;
92607 l_array_source_77              t_array_source_77;
92608 l_array_source_78              t_array_source_78;
92609 
92610 l_array_source_1      t_array_source_1;
92611 l_array_source_19      t_array_source_19;
92612 l_array_source_20      t_array_source_20;
92613 l_array_source_21      t_array_source_21;
92614 l_array_source_24      t_array_source_24;
92615 l_array_source_26      t_array_source_26;
92616 l_array_source_28      t_array_source_28;
92617 l_array_source_29      t_array_source_29;
92618 l_array_source_30      t_array_source_30;
92619 l_array_source_31      t_array_source_31;
92620 l_array_source_32      t_array_source_32;
92621 l_array_source_42      t_array_source_42;
92622 l_array_source_43      t_array_source_43;
92623 l_array_source_46      t_array_source_46;
92624 l_array_source_49      t_array_source_49;
92625 l_array_source_50      t_array_source_50;
92626 l_array_source_64      t_array_source_64;
92627 l_array_source_65      t_array_source_65;
92628 l_array_source_66      t_array_source_66;
92629 l_array_source_67      t_array_source_67;
92630 l_array_source_68      t_array_source_68;
92631 l_array_source_69      t_array_source_69;
92632 l_array_source_70      t_array_source_70;
92633 l_array_source_71      t_array_source_71;
92634 l_array_source_72      t_array_source_72;
92635 l_array_source_72_meaning      t_array_lookup_meaning;
92636 
92637 --
92638 CURSOR header_cur
92639 IS
92640 SELECT /*+ leading(xet) cardinality(xet,1) */
92641 -- Event Class Code: REVENUE_ADJ
92642     xet.entity_id
92643    ,xet.legal_entity_id
92644    ,xet.entity_code
92645    ,xet.transaction_number
92646    ,xet.event_id
92647    ,xet.event_class_code
92648    ,xet.event_type_code
92649    ,xet.event_number
92650    ,xet.event_date
92651    ,xet.transaction_date
92652    ,xet.reference_num_1
92653    ,xet.reference_num_2
92654    ,xet.reference_num_3
92655    ,xet.reference_num_4
92656    ,xet.reference_char_1
92657    ,xet.reference_char_2
92658    ,xet.reference_char_3
92659    ,xet.reference_char_4
92660    ,xet.reference_date_1
92661    ,xet.reference_date_2
92662    ,xet.reference_date_3
92663    ,xet.reference_date_4
92664    ,xet.event_created_by
92665    ,xet.budgetary_control_flag 
92666   , h2.CREDITING_REVENUE_FLAG    source_48
92667   , h2.EVENT_ID    source_51
92668   , h2.GL_DATE    source_75
92669   , h2.UER_CCID    source_77
92670   , h2.UBR_CCID    source_78
92671   FROM xla_events_gt     xet 
92672   , PA_XLA_REVENUE_HEADERS_V  h2
92673  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
92674    and xet.event_class_code = C_EVENT_CLASS_CODE
92675    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
92676 
92677  ORDER BY event_id
92678 ;
92679 
92680 
92681 --
92682 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
92683 IS
92684 SELECT  /*+ leading(xet) cardinality(xet,1) */
92685 -- Event Class Code: REVENUE_ADJ
92686     xet.entity_id
92687    ,xet.legal_entity_id
92688    ,xet.entity_code
92689    ,xet.transaction_number
92690    ,xet.event_id
92691    ,xet.event_class_code
92692    ,xet.event_type_code
92693    ,xet.event_number
92694    ,xet.event_date
92695    ,xet.transaction_date
92696    ,xet.reference_num_1
92697    ,xet.reference_num_2
92698    ,xet.reference_num_3
92699    ,xet.reference_num_4
92700    ,xet.reference_char_1
92701    ,xet.reference_char_2
92702    ,xet.reference_char_3
92703    ,xet.reference_char_4
92704    ,xet.reference_date_1
92705    ,xet.reference_date_2
92706    ,xet.reference_date_3
92707    ,xet.reference_date_4
92708    ,xet.event_created_by
92709    ,xet.budgetary_control_flag
92710  , l3.LINE_NUMBER  
92711   , l3.PERDL_CODE_COMBINATION_ID    source_1
92712   , l3.PRDL_CODE_COMBINATION_ID    source_19
92713   , l3.PDR_UBR_CCID    source_20
92714   , l3.PDR_UER_CCID    source_21
92715   , l3.ACTUAL_UPG_CR_ACCT_CLASS    source_24
92716   , l3.ENTERED_CURRENCY_CODE    source_26
92717   , l3.EXCHANGE_RATE_DATE    source_28
92721   , l3.USE_ACT_UPG_ATTRIB_FLAG    source_32
92718   , l3.EXCHANGE_RATE    source_29
92719   , l3.EXCHANGE_RATE_TYPE    source_30
92720   , l3.ACTUAL_UPG_DR_ACCT_CLASS    source_31
92722   , l3.ENTERED_AMOUNT    source_42
92723   , l3.ACCT_AMOUNT    source_43
92724   , l3.REVENUE_DISTRIBUTION_TYPE    source_46
92725   , l3.REVENUE_FIRST_DIST_ID    source_49
92726   , l3.REVENUE_SECOND_DIST_ID    source_50
92727   , l3.ACTUAL_UPG_CR_CCID    source_64
92728   , l3.ACTUAL_UPG_DR_CCID    source_65
92729   , l3.APPLICATION_ID    source_66
92730   , l3.REVENUE_ENTITY_CODE    source_67
92731   , l3.CR_REVENUE_FIRST_DIST_ID    source_68
92732   , l3.PROJECT_ID    source_69
92733   , l3.CR_REVENUE_SECOND_DIST_ID    source_70
92734   , l3.PDR_DRAFT_REV_NUM_CREDITED    source_71
92735   , l1.REV_EVENT_TYPE_CLASSIFICATION    source_72
92736   , fvl72.meaning   source_72_meaning
92737   FROM xla_events_gt     xet 
92738   , PA_XLA_EVENT_TYPE_REF_V  l1
92739   , PA_XLA_REVENUE_LINES_ADJ_V  l3
92740   , fnd_lookup_values    fvl72
92741  WHERE xet.event_id between x_first_event_id and x_last_event_id
92742    and xet.event_date between p_pad_start_date and p_pad_end_date
92743    and xet.event_class_code = C_EVENT_CLASS_CODE
92744    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
92745  AND l1.REV_EVENT_TYPE (+) =l3.REV_EVENT_TYPE   AND fvl72.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
92746   AND fvl72.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
92747   AND fvl72.view_application_id(+) = 275
92748   AND fvl72.language(+)            = USERENV('LANG')
92749   ;
92750 
92751 --
92752 BEGIN
92753 IF g_log_enabled THEN
92754    l_log_module := C_DEFAULT_MODULE||'.EventClass_161';
92755 END IF;
92756 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
92757    trace
92758       (p_msg      => 'BEGIN of EventClass_161'
92759       ,p_level    => C_LEVEL_PROCEDURE
92760       ,p_module   => l_log_module);
92761 END IF;
92762 
92763 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
92764    trace
92765       (p_msg      => 'p_application_id = '||p_application_id||
92766                      ' - p_base_ledger_id = '||p_base_ledger_id||
92767                      ' - p_target_ledger_id  = '||p_target_ledger_id||
92768                      ' - p_language = '||p_language||
92769                      ' - p_currency_code = '||p_currency_code||
92770                      ' - p_sla_ledger_id = '||p_sla_ledger_id
92771       ,p_level    => C_LEVEL_STATEMENT
92772       ,p_module   => l_log_module);
92773 END IF;
92774 --
92775 -- initialze arrays
92776 --
92777 g_array_event.DELETE;
92778 l_rec_array_event := l_null_rec_array_event;
92779 --
92780 --------------------------------------
92781 -- 4262811 Initialze MPA Line Number
92782 --------------------------------------
92783 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
92784 
92785 --
92786 
92787 --
92788 OPEN header_cur;
92789 --
92790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
92791    trace
92792    (p_msg      => 'SQL - FETCH header_cur'
92793    ,p_level    => C_LEVEL_STATEMENT
92794    ,p_module   => l_log_module);
92795 END IF;
92796 --
92797 LOOP
92798 FETCH header_cur BULK COLLECT INTO
92799         l_array_entity_id
92800       , l_array_legal_entity_id
92801       , l_array_entity_code
92802       , l_array_transaction_num
92803       , l_array_event_id
92804       , l_array_class_code
92805       , l_array_event_type
92806       , l_array_event_number
92807       , l_array_event_date
92808       , l_array_transaction_date
92809       , l_array_reference_num_1
92810       , l_array_reference_num_2
92811       , l_array_reference_num_3
92812       , l_array_reference_num_4
92813       , l_array_reference_char_1
92814       , l_array_reference_char_2
92815       , l_array_reference_char_3
92816       , l_array_reference_char_4
92817       , l_array_reference_date_1
92818       , l_array_reference_date_2
92819       , l_array_reference_date_3
92820       , l_array_reference_date_4
92821       , l_array_event_created_by
92822       , l_array_budgetary_control_flag 
92823       , l_array_source_48
92824       , l_array_source_51
92825       , l_array_source_75
92826       , l_array_source_77
92827       , l_array_source_78
92828       LIMIT l_rows;
92829 --
92830 IF (C_LEVEL_EVENT >= g_log_level) THEN
92831    trace
92832    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
92833    ,p_level    => C_LEVEL_EVENT
92834    ,p_module   => l_log_module);
92835 END IF;
92836 --
92837 EXIT WHEN l_array_entity_id.COUNT = 0;
92838 
92839 -- initialize arrays
92840 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
92841 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
92842 
92843 --
92844 -- Bug 4458708
92845 --
92846 XLA_AE_LINES_PKG.g_LineNumber := 0;
92847 
92848 
92849 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
92850 g_last_hdr_idx := l_array_event_id.LAST;
92851 --
92852 -- loop for the headers. Each iteration is for each header extract row
92853 -- fetched in header cursor
92854 --
92855 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
92856 
92857 --
92858 -- set event info as cache for other routines to refer event attributes
92859 --
92860 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
92861    (p_application_id           => p_application_id
92862    ,p_primary_ledger_id        => p_primary_ledger_id
92863    ,p_base_ledger_id           => p_base_ledger_id
92864    ,p_target_ledger_id         => p_target_ledger_id
92865    ,p_entity_id                => l_array_entity_id(hdr_idx)
92866    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
92870    ,p_event_class_code         => l_array_class_code(hdr_idx)
92867    ,p_entity_code              => l_array_entity_code(hdr_idx)
92868    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
92869    ,p_event_id                 => l_array_event_id(hdr_idx)
92871    ,p_event_type_code          => l_array_event_type(hdr_idx)
92872    ,p_event_number             => l_array_event_number(hdr_idx)
92873    ,p_event_date               => l_array_event_date(hdr_idx)
92874    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
92875    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
92876    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
92877    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
92878    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
92879    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
92880    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
92881    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
92882    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
92883    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
92884    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
92885    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
92886    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
92887    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
92888    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
92889 
92890 --
92891 -- set the status of entry to C_VALID (0)
92892 --
92893 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
92894 
92895 --
92896 -- initialize a row for ae header
92897 --
92898 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
92899 
92900 l_event_id := l_array_event_id(hdr_idx);
92901 
92902 --
92903 -- storing the hdr_idx for event. May be used by line cursor.
92904 --
92905 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
92906 
92907 --
92908 -- store sources from header extract. This can be improved to
92909 -- store only those sources from header extract that may be used in lines
92910 --
92911 
92912 g_array_event(l_event_id).array_value_char('source_48') := l_array_source_48(hdr_idx);
92913 g_array_event(l_event_id).array_value_num('source_51') := l_array_source_51(hdr_idx);
92914 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
92915 g_array_event(l_event_id).array_value_num('source_77') := l_array_source_77(hdr_idx);
92916 g_array_event(l_event_id).array_value_num('source_78') := l_array_source_78(hdr_idx);
92917 
92918 --
92919 -- initilaize the status of ae headers for diffrent balance types
92920 -- the status is initialised to C_NOT_CREATED (2)
92921 --
92922 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
92923 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
92924 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
92925 
92926 --
92927 -- call api to validate and store accounting attributes for header
92928 --
92929 
92930 ------------------------------------------------------------
92931 -- Accrual Reversal : to get date for Standard Source (NONE)
92932 ------------------------------------------------------------
92933 l_acc_rev_gl_date_source := NULL;
92934 
92935      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
92936       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
92937 
92938 
92939 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
92940 
92941 XLA_AE_HEADER_PKG.SetJeCategoryName;
92942 
92943 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
92944 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
92945 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
92946 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
92947 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
92948 
92949 
92950 -- No header level analytical criteria
92951 
92952 --
92953 --accounting attribute enhancement, bug 3612931
92954 --
92955 l_trx_reversal_source := SUBSTR(NULL, 1,30);
92956 
92957 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
92958    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
92959 
92960    xla_accounting_err_pkg.build_message
92961       (p_appli_s_name            => 'XLA'
92962       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
92963       ,p_token_1                 => 'ACCT_ATTR_NAME'
92964       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
92965       ,p_token_2                 => 'PRODUCT_NAME'
92966       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
92967       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
92968       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
92969       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
92970 
92971 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
92972    --
92973    -- following sets the accounting attributes needed to reverse
92974    -- accounting for a distributeion
92975    --
92976    xla_ae_lines_pkg.SetTrxReversalAttrs
92977       (p_event_id              => l_event_id
92978       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
92979       ,p_trx_reversal_source   => l_trx_reversal_source);
92980 
92981 END IF;
92982 
92983 
92984 ----------------------------------------------------------------
92988 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
92985 -- 4262811 -  update the header statuses to invalid in need be
92986 ----------------------------------------------------------------
92987 --
92989 
92990 
92991   -----------------------------------------------
92992   -- No accrual reversal for the event class/type
92993   -----------------------------------------------
92994 ----------------------------------------------------------------
92995 
92996 --
92997 -- this ends the header loop iteration for one bulk fetch
92998 --
92999 END LOOP;
93000 
93001 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
93002 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
93003 
93004 --
93005 -- insert dummy rows into lines gt table that were created due to
93006 -- transaction reversals
93007 --
93008 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
93009    l_result := XLA_AE_LINES_PKG.InsertLines;
93010 END IF;
93011 
93012 --
93013 -- reset the temp_line_num for each set of events fetched from header
93014 -- cursor rather than doing it for each new event in line cursor
93015 -- Bug 3939231
93016 --
93017 xla_ae_lines_pkg.g_temp_line_num := 0;
93018 
93019 
93020 
93021 --
93022 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
93023 --
93024 --
93025 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
93026 
93027       trace
93028          (p_msg      => 'SQL - FETCH line_cur'
93029          ,p_level    => C_LEVEL_STATEMENT
93030          ,p_module   => l_log_module);
93031 
93032 END IF;
93033 --
93034 --
93035 LOOP
93036   --
93037   FETCH line_cur BULK COLLECT INTO
93038         l_array_entity_id
93039       , l_array_legal_entity_id
93040       , l_array_entity_code
93041       , l_array_transaction_num
93042       , l_array_event_id
93043       , l_array_class_code
93044       , l_array_event_type
93045       , l_array_event_number
93046       , l_array_event_date
93047       , l_array_transaction_date
93048       , l_array_reference_num_1
93049       , l_array_reference_num_2
93050       , l_array_reference_num_3
93051       , l_array_reference_num_4
93052       , l_array_reference_char_1
93053       , l_array_reference_char_2
93054       , l_array_reference_char_3
93055       , l_array_reference_char_4
93056       , l_array_reference_date_1
93057       , l_array_reference_date_2
93058       , l_array_reference_date_3
93059       , l_array_reference_date_4
93060       , l_array_event_created_by
93061       , l_array_budgetary_control_flag
93062       , l_array_extract_line_num 
93063       , l_array_source_1
93064       , l_array_source_19
93065       , l_array_source_20
93066       , l_array_source_21
93067       , l_array_source_24
93068       , l_array_source_26
93069       , l_array_source_28
93070       , l_array_source_29
93071       , l_array_source_30
93072       , l_array_source_31
93073       , l_array_source_32
93074       , l_array_source_42
93075       , l_array_source_43
93076       , l_array_source_46
93077       , l_array_source_49
93078       , l_array_source_50
93079       , l_array_source_64
93080       , l_array_source_65
93081       , l_array_source_66
93082       , l_array_source_67
93083       , l_array_source_68
93084       , l_array_source_69
93085       , l_array_source_70
93086       , l_array_source_71
93087       , l_array_source_72
93088       , l_array_source_72_meaning
93089       LIMIT l_rows;
93090 
93091   --
93092   IF (C_LEVEL_EVENT >= g_log_level) THEN
93093             trace
93094                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
93095                ,p_level    => C_LEVEL_EVENT
93096                ,p_module   => l_log_module);
93097   END IF;
93098   --
93099   EXIT WHEN l_array_entity_id.count = 0;
93100 
93101   XLA_AE_LINES_PKG.g_rec_lines := null;
93102 
93103 --
93104 -- Bug 4458708
93105 --
93106 XLA_AE_LINES_PKG.g_LineNumber := 0;
93107 --
93108 --
93109 
93110 FOR Idx IN 1..l_array_event_id.count LOOP
93111    --
93112    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
93113    --
93114    l_event_id := l_array_event_id(idx);  -- 5648433
93115 
93116    --
93117    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
93118    --
93119 
93120    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
93121              (g_array_event(l_event_id).array_value_num('header_index'))
93122          ,'N'
93123          ) <> 'Y'
93124    THEN
93125       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
93126          trace
93127             (p_msg      => 'Trancaction revesal option is not Y '
93128             ,p_level    => C_LEVEL_STATEMENT
93129             ,p_module   => l_log_module);
93130       END IF;
93131 
93132 --
93133 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
93134 --
93135 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
93136 --
93137 -- set event info as cache for other routines to refer event attributes
93138 --
93139 
93140 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
93141    l_previous_event_id := l_event_id;
93142 
93143    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
93144       (p_application_id           => p_application_id
93145       ,p_primary_ledger_id        => p_primary_ledger_id
93146       ,p_base_ledger_id           => p_base_ledger_id
93147       ,p_target_ledger_id         => p_target_ledger_id
93148       ,p_entity_id                => l_array_entity_id(Idx)
93152       ,p_event_id                 => l_array_event_id(Idx)
93149       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
93150       ,p_entity_code              => l_array_entity_code(Idx)
93151       ,p_transaction_num          => l_array_transaction_num(Idx)
93153       ,p_event_class_code         => l_array_class_code(Idx)
93154       ,p_event_type_code          => l_array_event_type(Idx)
93155       ,p_event_number             => l_array_event_number(Idx)
93156       ,p_event_date               => l_array_event_date(Idx)
93157       ,p_transaction_date         => l_array_transaction_date(Idx)
93158       ,p_reference_num_1          => l_array_reference_num_1(Idx)
93159       ,p_reference_num_2          => l_array_reference_num_2(Idx)
93160       ,p_reference_num_3          => l_array_reference_num_3(Idx)
93161       ,p_reference_num_4          => l_array_reference_num_4(Idx)
93162       ,p_reference_char_1         => l_array_reference_char_1(Idx)
93163       ,p_reference_char_2         => l_array_reference_char_2(Idx)
93164       ,p_reference_char_3         => l_array_reference_char_3(Idx)
93165       ,p_reference_char_4         => l_array_reference_char_4(Idx)
93166       ,p_reference_date_1         => l_array_reference_date_1(Idx)
93167       ,p_reference_date_2         => l_array_reference_date_2(Idx)
93168       ,p_reference_date_3         => l_array_reference_date_3(Idx)
93169       ,p_reference_date_4         => l_array_reference_date_4(Idx)
93170       ,p_event_created_by         => l_array_event_created_by(Idx)
93171       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
93172        --
93173 END IF;
93174 
93175 
93176 
93177 --
93178 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
93179 
93180 l_acct_reversal_source := SUBSTR(NULL, 1,30);
93181 
93182 IF l_continue_with_lines THEN
93183    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
93184       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
93185 
93186       xla_accounting_err_pkg.build_message
93187          (p_appli_s_name            => 'XLA'
93188          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
93189          ,p_token_1                 => 'LINE_NUMBER'
93190          ,p_value_1                 => l_array_extract_line_num(Idx)
93191          ,p_token_2                 => 'PRODUCT_NAME'
93192          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
93193          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
93194          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
93195          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
93196 
93197    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
93198       --
93199       -- following sets the accounting attributes needed to reverse
93200       -- accounting for a distributeion
93201       --
93202 
93203       --
93204       -- 5217187
93205       --
93206       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
93207       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
93208                                        g_array_event(l_event_id).array_value_num('header_index'));
93209       --
93210       --
93211 
93212       -- No reversal code generated
93213 
93214       xla_ae_lines_pkg.SetAcctReversalAttrs
93215          (p_event_id             => l_event_id
93216          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
93217          ,p_calculate_acctd_flag => l_calculate_acctd_flag
93218          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
93219    END IF;
93220 
93221    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
93222        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
93223 
93224 --
93225 AcctLineType_44 (
93226  p_application_id  => p_application_id
93227  ,p_event_id     => l_event_id
93228  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93229  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93230  ,p_actual_flag => l_actual_flag
93231  ,p_balance_type_code => l_balance_type_code
93232  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93233  
93234  , p_source_19 => l_array_source_19(Idx)
93235  , p_source_24 => l_array_source_24(Idx)
93236  , p_source_26 => l_array_source_26(Idx)
93237  , p_source_28 => l_array_source_28(Idx)
93238  , p_source_29 => l_array_source_29(Idx)
93239  , p_source_30 => l_array_source_30(Idx)
93240  , p_source_31 => l_array_source_31(Idx)
93241  , p_source_32 => l_array_source_32(Idx)
93242  , p_source_42 => l_array_source_42(Idx)
93243  , p_source_43 => l_array_source_43(Idx)
93244  , p_source_46 => l_array_source_46(Idx)
93245  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93246  , p_source_49 => l_array_source_49(Idx)
93247  , p_source_50 => l_array_source_50(Idx)
93248  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93249  , p_source_64 => l_array_source_64(Idx)
93250  , p_source_65 => l_array_source_65(Idx)
93251  , p_source_66 => l_array_source_66(Idx)
93252  , p_source_67 => l_array_source_67(Idx)
93253  , p_source_68 => l_array_source_68(Idx)
93254  , p_source_69 => l_array_source_69(Idx)
93255  , p_source_70 => l_array_source_70(Idx)
93256  , p_source_71 => l_array_source_71(Idx)
93257  );
93258 If(l_balance_type_code = 'A') THEN
93259   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93260 END IF;
93261 
93262 --
93263 
93264 
93265 --
93266 AcctLineType_48 (
93267  p_application_id  => p_application_id
93268  ,p_event_id     => l_event_id
93269  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93270  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93271  ,p_actual_flag => l_actual_flag
93272  ,p_balance_type_code => l_balance_type_code
93273  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93274  
93278  , p_source_29 => l_array_source_29(Idx)
93275  , p_source_24 => l_array_source_24(Idx)
93276  , p_source_26 => l_array_source_26(Idx)
93277  , p_source_28 => l_array_source_28(Idx)
93279  , p_source_30 => l_array_source_30(Idx)
93280  , p_source_31 => l_array_source_31(Idx)
93281  , p_source_32 => l_array_source_32(Idx)
93282  , p_source_42 => l_array_source_42(Idx)
93283  , p_source_43 => l_array_source_43(Idx)
93284  , p_source_46 => l_array_source_46(Idx)
93285  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93286  , p_source_49 => l_array_source_49(Idx)
93287  , p_source_50 => l_array_source_50(Idx)
93288  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93289  , p_source_64 => l_array_source_64(Idx)
93290  , p_source_65 => l_array_source_65(Idx)
93291  , p_source_66 => l_array_source_66(Idx)
93292  , p_source_67 => l_array_source_67(Idx)
93293  , p_source_68 => l_array_source_68(Idx)
93294  , p_source_69 => l_array_source_69(Idx)
93295  , p_source_70 => l_array_source_70(Idx)
93296  , p_source_71 => l_array_source_71(Idx)
93297  , p_source_72 => l_array_source_72(Idx)
93298  , p_source_72_meaning => l_array_source_72_meaning(Idx)
93299  );
93300 If(l_balance_type_code = 'A') THEN
93301   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93302 END IF;
93303 
93304 --
93305 
93306 
93307 --
93308 AcctLineType_49 (
93309  p_application_id  => p_application_id
93310  ,p_event_id     => l_event_id
93311  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93312  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93313  ,p_actual_flag => l_actual_flag
93314  ,p_balance_type_code => l_balance_type_code
93315  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93316  
93317  , p_source_1 => l_array_source_1(Idx)
93318  , p_source_24 => l_array_source_24(Idx)
93319  , p_source_26 => l_array_source_26(Idx)
93320  , p_source_28 => l_array_source_28(Idx)
93321  , p_source_29 => l_array_source_29(Idx)
93322  , p_source_30 => l_array_source_30(Idx)
93323  , p_source_31 => l_array_source_31(Idx)
93324  , p_source_32 => l_array_source_32(Idx)
93325  , p_source_42 => l_array_source_42(Idx)
93326  , p_source_43 => l_array_source_43(Idx)
93327  , p_source_46 => l_array_source_46(Idx)
93328  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93329  , p_source_49 => l_array_source_49(Idx)
93330  , p_source_50 => l_array_source_50(Idx)
93331  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93332  , p_source_64 => l_array_source_64(Idx)
93333  , p_source_65 => l_array_source_65(Idx)
93334  , p_source_66 => l_array_source_66(Idx)
93335  , p_source_67 => l_array_source_67(Idx)
93336  , p_source_68 => l_array_source_68(Idx)
93337  , p_source_69 => l_array_source_69(Idx)
93338  , p_source_70 => l_array_source_70(Idx)
93339  , p_source_71 => l_array_source_71(Idx)
93340  , p_source_72 => l_array_source_72(Idx)
93341  , p_source_72_meaning => l_array_source_72_meaning(Idx)
93342  );
93343 If(l_balance_type_code = 'A') THEN
93344   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93345 END IF;
93346 
93347 --
93348 
93349 
93350 --
93351 AcctLineType_52 (
93352  p_application_id  => p_application_id
93353  ,p_event_id     => l_event_id
93354  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93355  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93356  ,p_actual_flag => l_actual_flag
93357  ,p_balance_type_code => l_balance_type_code
93358  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93359  
93360  , p_source_24 => l_array_source_24(Idx)
93361  , p_source_26 => l_array_source_26(Idx)
93362  , p_source_28 => l_array_source_28(Idx)
93363  , p_source_29 => l_array_source_29(Idx)
93364  , p_source_30 => l_array_source_30(Idx)
93365  , p_source_31 => l_array_source_31(Idx)
93366  , p_source_32 => l_array_source_32(Idx)
93367  , p_source_42 => l_array_source_42(Idx)
93368  , p_source_43 => l_array_source_43(Idx)
93369  , p_source_46 => l_array_source_46(Idx)
93370  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93371  , p_source_49 => l_array_source_49(Idx)
93372  , p_source_50 => l_array_source_50(Idx)
93373  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93374  , p_source_64 => l_array_source_64(Idx)
93375  , p_source_65 => l_array_source_65(Idx)
93376  , p_source_66 => l_array_source_66(Idx)
93377  , p_source_67 => l_array_source_67(Idx)
93378  , p_source_68 => l_array_source_68(Idx)
93379  , p_source_69 => l_array_source_69(Idx)
93380  , p_source_70 => l_array_source_70(Idx)
93381  , p_source_71 => l_array_source_71(Idx)
93382  , p_source_72 => l_array_source_72(Idx)
93383  , p_source_72_meaning => l_array_source_72_meaning(Idx)
93384  );
93385 If(l_balance_type_code = 'A') THEN
93386   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93387 END IF;
93388 
93389 --
93390 
93391 
93392 --
93393 AcctLineType_53 (
93394  p_application_id  => p_application_id
93395  ,p_event_id     => l_event_id
93396  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93397  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93398  ,p_actual_flag => l_actual_flag
93399  ,p_balance_type_code => l_balance_type_code
93400  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93401  
93402  , p_source_1 => l_array_source_1(Idx)
93403  , p_source_24 => l_array_source_24(Idx)
93404  , p_source_26 => l_array_source_26(Idx)
93405  , p_source_28 => l_array_source_28(Idx)
93406  , p_source_29 => l_array_source_29(Idx)
93407  , p_source_30 => l_array_source_30(Idx)
93408  , p_source_31 => l_array_source_31(Idx)
93409  , p_source_32 => l_array_source_32(Idx)
93410  , p_source_42 => l_array_source_42(Idx)
93411  , p_source_43 => l_array_source_43(Idx)
93412  , p_source_46 => l_array_source_46(Idx)
93413  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93414  , p_source_49 => l_array_source_49(Idx)
93418  , p_source_65 => l_array_source_65(Idx)
93415  , p_source_50 => l_array_source_50(Idx)
93416  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93417  , p_source_64 => l_array_source_64(Idx)
93419  , p_source_66 => l_array_source_66(Idx)
93420  , p_source_67 => l_array_source_67(Idx)
93421  , p_source_68 => l_array_source_68(Idx)
93422  , p_source_69 => l_array_source_69(Idx)
93423  , p_source_70 => l_array_source_70(Idx)
93424  , p_source_71 => l_array_source_71(Idx)
93425  , p_source_72 => l_array_source_72(Idx)
93426  , p_source_72_meaning => l_array_source_72_meaning(Idx)
93427  );
93428 If(l_balance_type_code = 'A') THEN
93429   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93430 END IF;
93431 
93432 --
93433 
93434 
93435 --
93436 AcctLineType_115 (
93437  p_application_id  => p_application_id
93438  ,p_event_id     => l_event_id
93439  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93440  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93441  ,p_actual_flag => l_actual_flag
93442  ,p_balance_type_code => l_balance_type_code
93443  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93444  
93445  , p_source_24 => l_array_source_24(Idx)
93446  , p_source_26 => l_array_source_26(Idx)
93447  , p_source_28 => l_array_source_28(Idx)
93448  , p_source_29 => l_array_source_29(Idx)
93449  , p_source_30 => l_array_source_30(Idx)
93450  , p_source_31 => l_array_source_31(Idx)
93451  , p_source_32 => l_array_source_32(Idx)
93452  , p_source_42 => l_array_source_42(Idx)
93453  , p_source_43 => l_array_source_43(Idx)
93454  , p_source_46 => l_array_source_46(Idx)
93455  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93456  , p_source_49 => l_array_source_49(Idx)
93457  , p_source_50 => l_array_source_50(Idx)
93458  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93459  , p_source_64 => l_array_source_64(Idx)
93460  , p_source_65 => l_array_source_65(Idx)
93461  , p_source_66 => l_array_source_66(Idx)
93462  , p_source_67 => l_array_source_67(Idx)
93463  , p_source_68 => l_array_source_68(Idx)
93464  , p_source_69 => l_array_source_69(Idx)
93465  , p_source_70 => l_array_source_70(Idx)
93466  , p_source_71 => l_array_source_71(Idx)
93467  );
93468 If(l_balance_type_code = 'A') THEN
93469   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93470 END IF;
93471 
93472 --
93473 
93474 
93475 --
93476 AcctLineType_117 (
93477  p_application_id  => p_application_id
93478  ,p_event_id     => l_event_id
93479  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93480  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93481  ,p_actual_flag => l_actual_flag
93482  ,p_balance_type_code => l_balance_type_code
93483  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93484  
93485  , p_source_24 => l_array_source_24(Idx)
93486  , p_source_26 => l_array_source_26(Idx)
93487  , p_source_28 => l_array_source_28(Idx)
93488  , p_source_29 => l_array_source_29(Idx)
93489  , p_source_30 => l_array_source_30(Idx)
93490  , p_source_31 => l_array_source_31(Idx)
93491  , p_source_32 => l_array_source_32(Idx)
93492  , p_source_42 => l_array_source_42(Idx)
93493  , p_source_43 => l_array_source_43(Idx)
93494  , p_source_46 => l_array_source_46(Idx)
93495  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93496  , p_source_49 => l_array_source_49(Idx)
93497  , p_source_50 => l_array_source_50(Idx)
93498  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93499  , p_source_64 => l_array_source_64(Idx)
93500  , p_source_65 => l_array_source_65(Idx)
93501  , p_source_66 => l_array_source_66(Idx)
93502  , p_source_67 => l_array_source_67(Idx)
93503  , p_source_68 => l_array_source_68(Idx)
93504  , p_source_69 => l_array_source_69(Idx)
93505  , p_source_70 => l_array_source_70(Idx)
93506  , p_source_71 => l_array_source_71(Idx)
93507  );
93508 If(l_balance_type_code = 'A') THEN
93509   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93510 END IF;
93511 
93512 --
93513 
93514 
93515 --
93516 AcctLineType_126 (
93517  p_application_id  => p_application_id
93518  ,p_event_id     => l_event_id
93519  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93520  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93521  ,p_actual_flag => l_actual_flag
93522  ,p_balance_type_code => l_balance_type_code
93523  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93524  
93525  , p_source_24 => l_array_source_24(Idx)
93526  , p_source_26 => l_array_source_26(Idx)
93527  , p_source_28 => l_array_source_28(Idx)
93528  , p_source_29 => l_array_source_29(Idx)
93529  , p_source_30 => l_array_source_30(Idx)
93530  , p_source_31 => l_array_source_31(Idx)
93531  , p_source_32 => l_array_source_32(Idx)
93532  , p_source_42 => l_array_source_42(Idx)
93533  , p_source_43 => l_array_source_43(Idx)
93534  , p_source_46 => l_array_source_46(Idx)
93535  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93536  , p_source_49 => l_array_source_49(Idx)
93537  , p_source_50 => l_array_source_50(Idx)
93538  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93539  , p_source_64 => l_array_source_64(Idx)
93540  , p_source_65 => l_array_source_65(Idx)
93541  , p_source_66 => l_array_source_66(Idx)
93542  , p_source_67 => l_array_source_67(Idx)
93543  , p_source_68 => l_array_source_68(Idx)
93544  , p_source_69 => l_array_source_69(Idx)
93545  , p_source_70 => l_array_source_70(Idx)
93546  , p_source_71 => l_array_source_71(Idx)
93547  );
93548 If(l_balance_type_code = 'A') THEN
93549   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93550 END IF;
93551 
93552 --
93553 
93554 
93555 --
93556 AcctLineType_136 (
93557  p_application_id  => p_application_id
93558  ,p_event_id     => l_event_id
93559  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93563  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93560  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93561  ,p_actual_flag => l_actual_flag
93562  ,p_balance_type_code => l_balance_type_code
93564  
93565  , p_source_20 => l_array_source_20(Idx)
93566  , p_source_24 => l_array_source_24(Idx)
93567  , p_source_26 => l_array_source_26(Idx)
93568  , p_source_28 => l_array_source_28(Idx)
93569  , p_source_29 => l_array_source_29(Idx)
93570  , p_source_30 => l_array_source_30(Idx)
93571  , p_source_31 => l_array_source_31(Idx)
93572  , p_source_32 => l_array_source_32(Idx)
93573  , p_source_42 => l_array_source_42(Idx)
93574  , p_source_43 => l_array_source_43(Idx)
93575  , p_source_46 => l_array_source_46(Idx)
93576  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93577  , p_source_49 => l_array_source_49(Idx)
93578  , p_source_50 => l_array_source_50(Idx)
93579  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93580  , p_source_64 => l_array_source_64(Idx)
93581  , p_source_65 => l_array_source_65(Idx)
93582  , p_source_66 => l_array_source_66(Idx)
93583  , p_source_67 => l_array_source_67(Idx)
93584  , p_source_68 => l_array_source_68(Idx)
93585  , p_source_69 => l_array_source_69(Idx)
93586  , p_source_70 => l_array_source_70(Idx)
93587  , p_source_71 => l_array_source_71(Idx)
93588  );
93589 If(l_balance_type_code = 'A') THEN
93590   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93591 END IF;
93592 
93593 --
93594 
93595 
93596 --
93597 AcctLineType_137 (
93598  p_application_id  => p_application_id
93599  ,p_event_id     => l_event_id
93600  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93601  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93602  ,p_actual_flag => l_actual_flag
93603  ,p_balance_type_code => l_balance_type_code
93604  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93605  
93606  , p_source_20 => l_array_source_20(Idx)
93607  , p_source_24 => l_array_source_24(Idx)
93608  , p_source_26 => l_array_source_26(Idx)
93609  , p_source_28 => l_array_source_28(Idx)
93610  , p_source_29 => l_array_source_29(Idx)
93611  , p_source_30 => l_array_source_30(Idx)
93612  , p_source_31 => l_array_source_31(Idx)
93613  , p_source_32 => l_array_source_32(Idx)
93614  , p_source_42 => l_array_source_42(Idx)
93615  , p_source_43 => l_array_source_43(Idx)
93616  , p_source_46 => l_array_source_46(Idx)
93617  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93618  , p_source_49 => l_array_source_49(Idx)
93619  , p_source_50 => l_array_source_50(Idx)
93620  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93621  , p_source_64 => l_array_source_64(Idx)
93622  , p_source_65 => l_array_source_65(Idx)
93623  , p_source_66 => l_array_source_66(Idx)
93624  , p_source_67 => l_array_source_67(Idx)
93625  , p_source_68 => l_array_source_68(Idx)
93626  , p_source_69 => l_array_source_69(Idx)
93627  , p_source_70 => l_array_source_70(Idx)
93628  , p_source_71 => l_array_source_71(Idx)
93629  );
93630 If(l_balance_type_code = 'A') THEN
93631   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93632 END IF;
93633 
93634 --
93635 
93636 
93637 --
93638 AcctLineType_140 (
93639  p_application_id  => p_application_id
93640  ,p_event_id     => l_event_id
93641  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93642  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93643  ,p_actual_flag => l_actual_flag
93644  ,p_balance_type_code => l_balance_type_code
93645  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93646  
93647  , p_source_21 => l_array_source_21(Idx)
93648  , p_source_24 => l_array_source_24(Idx)
93649  , p_source_26 => l_array_source_26(Idx)
93650  , p_source_28 => l_array_source_28(Idx)
93651  , p_source_29 => l_array_source_29(Idx)
93652  , p_source_30 => l_array_source_30(Idx)
93653  , p_source_31 => l_array_source_31(Idx)
93654  , p_source_32 => l_array_source_32(Idx)
93655  , p_source_42 => l_array_source_42(Idx)
93656  , p_source_43 => l_array_source_43(Idx)
93657  , p_source_46 => l_array_source_46(Idx)
93658  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93659  , p_source_49 => l_array_source_49(Idx)
93660  , p_source_50 => l_array_source_50(Idx)
93661  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93662  , p_source_64 => l_array_source_64(Idx)
93663  , p_source_65 => l_array_source_65(Idx)
93664  , p_source_66 => l_array_source_66(Idx)
93665  , p_source_67 => l_array_source_67(Idx)
93666  , p_source_68 => l_array_source_68(Idx)
93667  , p_source_69 => l_array_source_69(Idx)
93668  , p_source_70 => l_array_source_70(Idx)
93669  , p_source_71 => l_array_source_71(Idx)
93670  );
93671 If(l_balance_type_code = 'A') THEN
93672   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93673 END IF;
93674 
93675 --
93676 
93677 
93678 --
93679 AcctLineType_141 (
93680  p_application_id  => p_application_id
93681  ,p_event_id     => l_event_id
93682  ,p_calculate_acctd_flag => l_calculate_acctd_flag
93683  ,p_calculate_g_l_flag => l_calculate_g_l_flag
93684  ,p_actual_flag => l_actual_flag
93685  ,p_balance_type_code => l_balance_type_code
93686  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
93687  
93688  , p_source_21 => l_array_source_21(Idx)
93689  , p_source_24 => l_array_source_24(Idx)
93690  , p_source_26 => l_array_source_26(Idx)
93691  , p_source_28 => l_array_source_28(Idx)
93692  , p_source_29 => l_array_source_29(Idx)
93693  , p_source_30 => l_array_source_30(Idx)
93694  , p_source_31 => l_array_source_31(Idx)
93695  , p_source_32 => l_array_source_32(Idx)
93696  , p_source_42 => l_array_source_42(Idx)
93697  , p_source_43 => l_array_source_43(Idx)
93698  , p_source_46 => l_array_source_46(Idx)
93699  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
93700  , p_source_49 => l_array_source_49(Idx)
93704  , p_source_65 => l_array_source_65(Idx)
93701  , p_source_50 => l_array_source_50(Idx)
93702  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
93703  , p_source_64 => l_array_source_64(Idx)
93705  , p_source_66 => l_array_source_66(Idx)
93706  , p_source_67 => l_array_source_67(Idx)
93707  , p_source_68 => l_array_source_68(Idx)
93708  , p_source_69 => l_array_source_69(Idx)
93709  , p_source_70 => l_array_source_70(Idx)
93710  , p_source_71 => l_array_source_71(Idx)
93711  );
93712 If(l_balance_type_code = 'A') THEN
93713   l_actual_gain_loss_ref := l_gain_or_loss_ref;
93714 END IF;
93715 
93716 --
93717 
93718       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
93719       -- or secondary ledger that has different currency with primary
93720       -- or alc that is calculated by sla
93721       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
93722             (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'))
93723 
93724 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
93725 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
93726           AND (l_actual_flag = 'A')) THEN
93727         XLA_AE_LINES_PKG.CreateGainOrLossLines(
93728           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
93729          ,p_application_id   => p_application_id
93730          ,p_amb_context_code => 'DEFAULT'
93731          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
93732          ,p_event_class_code => C_EVENT_CLASS_CODE
93733          ,p_event_type_code  => C_EVENT_TYPE_CODE
93734          
93735          ,p_gain_ccid        => g_array_event(l_event_id).array_value_num('source_77')
93736          ,p_loss_ccid        => g_array_event(l_event_id).array_value_num('source_78')
93737 
93738          ,p_actual_flag      => l_actual_flag
93739          ,p_enc_flag         => null
93740          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
93741          ,p_enc_g_l_ref      => null
93742          );
93743       END IF;
93744    END IF;
93745 END IF;
93746 
93747    ELSE
93748       --
93749       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
93750       --
93751       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
93752          trace
93753             (p_msg      => 'Trancaction revesal option is Y'
93754             ,p_level    => C_LEVEL_STATEMENT
93755             ,p_module   => l_log_module);
93756       END IF;
93757    END IF;
93758 
93759 END LOOP;
93760 l_result := XLA_AE_LINES_PKG.InsertLines ;
93761 end loop;
93762 close line_cur;
93763 
93764 
93765 --
93766 -- insert headers into xla_ae_headers_gt table
93767 --
93768 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
93769 
93770 -- insert into errors table here.
93771 
93772 END LOOP;
93773 
93774 --
93775 -- 4865292
93776 --
93777 -- Compare g_hdr_extract_count with event count in
93778 -- CreateHeadersAndLines.
93779 --
93780 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
93781 
93782 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
93783    trace (p_msg     => '# rows extracted from header extract objects '
93784                     || ' (running total): '
93785                     || g_hdr_extract_count
93786          ,p_level   => C_LEVEL_STATEMENT
93787          ,p_module  => l_log_module);
93788 END IF;
93789 
93790 CLOSE header_cur;
93791 --
93792 
93793 --
93794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93795    trace
93796       (p_msg      => 'END of EventClass_161'
93797       ,p_level    => C_LEVEL_PROCEDURE
93798       ,p_module   => l_log_module);
93799 END IF;
93800 --
93801 RETURN l_result;
93802 EXCEPTION
93803 WHEN xla_exceptions_pkg.application_exception THEN
93804    
93805 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
93806 
93807    
93808 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
93809 
93810    RAISE;
93811 WHEN OTHERS THEN
93812    xla_exceptions_pkg.raise_message
93813       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_161');
93814 END EventClass_161;
93815 --
93816 
93817 ---------------------------------------
93818 --
93819 -- PRIVATE PROCEDURE
93820 --         insert_sources_162
93821 --
93822 ----------------------------------------
93823 --
93824 PROCEDURE insert_sources_162(
93825                                 p_target_ledger_id       IN NUMBER
93826                               , p_language               IN VARCHAR2
93827                               , p_sla_ledger_id          IN NUMBER
93828                               , p_pad_start_date         IN DATE
93829                               , p_pad_end_date           IN DATE
93830                          )
93831 IS
93832 
93833 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ALL';
93834 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'REVENUE';
93835 p_apps_owner                   VARCHAR2(30);
93836 l_log_module                   VARCHAR2(240);
93837 BEGIN
93838 IF g_log_enabled THEN
93839       l_log_module := C_DEFAULT_MODULE||'.insert_sources_162';
93840 END IF;
93841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
93842 
93843       trace
93844          (p_msg      => 'BEGIN of insert_sources_162'
93845          ,p_level    => C_LEVEL_PROCEDURE
93846          ,p_module   => l_log_module);
93847 
93848 END IF;
93849 
93850 -- select APPS owner
93851 SELECT oracle_username
93852   INTO p_apps_owner
93853   FROM fnd_oracle_userid
93854  WHERE read_only_flag = 'U'
93855 ;
93859          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
93856 
93857 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
93858       trace
93860                         ' - p_language = '||p_language||
93861                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
93862                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
93863                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
93864                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
93865          ,p_level    => C_LEVEL_STATEMENT
93866          ,p_module   => l_log_module);
93867 END IF;
93868 
93869 
93870 --
93871 INSERT INTO xla_diag_sources --hdr2
93872 (
93873         event_id
93874       , ledger_id
93875       , sla_ledger_id
93876       , description_language
93877       , object_name
93878       , object_type_code
93879       , line_number
93880       , source_application_id
93881       , source_type_code
93882       , source_code
93883       , source_value
93884       , source_meaning
93885       , created_by
93886       , creation_date
93887       , last_update_date
93888       , last_updated_by
93889       , last_update_login
93890       , program_update_date
93891       , program_application_id
93892       , program_id
93893       , request_id
93894 )
93895 SELECT
93896         event_id
93897       , p_target_ledger_id
93898       , p_sla_ledger_id
93899       , p_language
93900       , object_name
93901       , object_type_code
93902       , line_number
93903       , source_application_id
93904       , source_type_code
93905       , source_code
93906       , SUBSTR(source_value ,1,1996)
93907       , SUBSTR(source_meaning ,1,200)
93908       , xla_environment_pkg.g_Usr_Id
93909       , TRUNC(SYSDATE)
93910       , TRUNC(SYSDATE)
93911       , xla_environment_pkg.g_Usr_Id
93912       , xla_environment_pkg.g_Login_Id
93913       , TRUNC(SYSDATE)
93914       , xla_environment_pkg.g_Prog_Appl_Id
93915       , xla_environment_pkg.g_Prog_Id
93916       , xla_environment_pkg.g_Req_Id
93917   FROM (
93918        SELECT xet.event_id                  event_id
93919             , 0                          line_number
93920             , CASE r
93921                WHEN 1 THEN 'PA_XLA_REVENUE_HEADERS_V' 
93922                 WHEN 2 THEN 'PA_XLA_REVENUE_HEADERS_V' 
93923                 WHEN 3 THEN 'PA_XLA_REVENUE_HEADERS_V' 
93924                 WHEN 4 THEN 'PA_XLA_REVENUE_HEADERS_V' 
93925                 WHEN 5 THEN 'PA_XLA_REVENUE_HEADERS_V' 
93926                 
93927                ELSE null
93928               END                           object_name
93929             , CASE r
93930                 WHEN 1 THEN 'HEADER' 
93931                 WHEN 2 THEN 'HEADER' 
93932                 WHEN 3 THEN 'HEADER' 
93933                 WHEN 4 THEN 'HEADER' 
93934                 WHEN 5 THEN 'HEADER' 
93935                 
93936                 ELSE null
93937               END                           object_type_code
93938             , CASE r
93939                 WHEN 1 THEN '275' 
93940                 WHEN 2 THEN '275' 
93941                 WHEN 3 THEN '275' 
93942                 WHEN 4 THEN '275' 
93943                 WHEN 5 THEN '275' 
93944                 
93945                 ELSE null
93946               END                           source_application_id
93947             , 'S'             source_type_code
93948             , CASE r
93949                 WHEN 1 THEN 'CREDITING_REVENUE_FLAG' 
93950                 WHEN 2 THEN 'EVENT_ID' 
93951                 WHEN 3 THEN 'GL_DATE' 
93952                 WHEN 4 THEN 'UER_CCID' 
93953                 WHEN 5 THEN 'UBR_CCID' 
93954                 
93955                 ELSE null
93956               END                           source_code
93957             , CASE r
93958                 WHEN 1 THEN TO_CHAR(h2.CREDITING_REVENUE_FLAG)
93959                 WHEN 2 THEN TO_CHAR(h2.EVENT_ID)
93960                 WHEN 3 THEN TO_CHAR(h2.GL_DATE)
93961                 WHEN 4 THEN TO_CHAR(h2.UER_CCID)
93962                 WHEN 5 THEN TO_CHAR(h2.UBR_CCID)
93963                 
93964                 ELSE null
93965               END                           source_value
93966             , CASE r
93967                 WHEN 1 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
93968                           103371
93969                          ,TO_CHAR(h2.CREDITING_REVENUE_FLAG)
93970                          ,'CREDITING_REVENUE_FLAG'
93971                          ,'S'
93972                          ,275)
93973                 
93974                 ELSE null
93975               END               source_meaning
93976          FROM xla_events_gt     xet  
93977       , PA_XLA_REVENUE_HEADERS_V  h2
93978              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
93979          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
93980            AND xet.event_class_code = C_EVENT_CLASS_CODE
93981               AND h2.event_id = xet.event_id
93982 
93983 )
93984 ;
93985 --
93986 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
93987 
93988       trace
93989          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
93990          ,p_level    => C_LEVEL_STATEMENT
93991          ,p_module   => l_log_module);
93992 
93993 END IF;
93994 --
93995 
93996 
93997 
93998 --
93999 INSERT INTO xla_diag_sources  --line2
94000 (
94001         event_id
94002       , ledger_id
94003       , sla_ledger_id
94004       , description_language
94005       , object_name
94006       , object_type_code
94007       , line_number
94008       , source_application_id
94009       , source_type_code
94013       , created_by
94010       , source_code
94011       , source_value
94012       , source_meaning
94014       , creation_date
94015       , last_update_date
94016       , last_updated_by
94017       , last_update_login
94018       , program_update_date
94019       , program_application_id
94020       , program_id
94021       , request_id
94022 )
94023 SELECT  event_id
94024       , p_target_ledger_id
94025       , p_sla_ledger_id
94026       , p_language
94027       , object_name
94028       , object_type_code
94029       , line_number
94030       , source_application_id
94031       , source_type_code
94032       , source_code
94033       , SUBSTR(source_value,1,1996)
94034       , SUBSTR(source_meaning ,1,200)
94035       , xla_environment_pkg.g_Usr_Id
94036       , TRUNC(SYSDATE)
94037       , TRUNC(SYSDATE)
94038       , xla_environment_pkg.g_Usr_Id
94039       , xla_environment_pkg.g_Login_Id
94040       , TRUNC(SYSDATE)
94041       , xla_environment_pkg.g_Prog_Appl_Id
94042       , xla_environment_pkg.g_Prog_Id
94043       , xla_environment_pkg.g_Req_Id
94044   FROM (
94045        SELECT xet.event_id                  event_id
94046             , l3.line_number                 line_number
94047             , CASE r
94048                WHEN 1 THEN 'PA_XLA_REVENUE_LINES_V' 
94049                 WHEN 2 THEN 'PA_XLA_REVENUE_LINES_V' 
94050                 WHEN 3 THEN 'PA_XLA_REVENUE_LINES_V' 
94051                 WHEN 4 THEN 'PA_XLA_REVENUE_LINES_V' 
94052                 WHEN 5 THEN 'PA_XLA_REVENUE_LINES_V' 
94053                 WHEN 6 THEN 'PA_XLA_REVENUE_LINES_V' 
94054                 WHEN 7 THEN 'PA_XLA_REVENUE_LINES_V' 
94055                 WHEN 8 THEN 'PA_XLA_REVENUE_LINES_V' 
94056                 WHEN 9 THEN 'PA_XLA_REVENUE_LINES_V' 
94057                 WHEN 10 THEN 'PA_XLA_REVENUE_LINES_V' 
94058                 WHEN 11 THEN 'PA_XLA_REVENUE_LINES_V' 
94059                 WHEN 12 THEN 'PA_XLA_REVENUE_LINES_V' 
94060                 WHEN 13 THEN 'PA_XLA_REVENUE_LINES_V' 
94061                 WHEN 14 THEN 'PA_XLA_REVENUE_LINES_V' 
94062                 WHEN 15 THEN 'PA_XLA_REVENUE_LINES_V' 
94063                 WHEN 16 THEN 'PA_XLA_REVENUE_LINES_V' 
94064                 WHEN 17 THEN 'PA_XLA_EVENT_TYPE_REF_V' 
94065                 
94066                ELSE null
94067               END                           object_name
94068             , CASE r
94069                 WHEN 1 THEN 'LINE' 
94070                 WHEN 2 THEN 'LINE' 
94071                 WHEN 3 THEN 'LINE' 
94072                 WHEN 4 THEN 'LINE' 
94073                 WHEN 5 THEN 'LINE' 
94074                 WHEN 6 THEN 'LINE' 
94075                 WHEN 7 THEN 'LINE' 
94076                 WHEN 8 THEN 'LINE' 
94077                 WHEN 9 THEN 'LINE' 
94078                 WHEN 10 THEN 'LINE' 
94079                 WHEN 11 THEN 'LINE' 
94080                 WHEN 12 THEN 'LINE' 
94081                 WHEN 13 THEN 'LINE' 
94082                 WHEN 14 THEN 'LINE' 
94083                 WHEN 15 THEN 'LINE' 
94084                 WHEN 16 THEN 'LINE' 
94085                 WHEN 17 THEN 'LINE' 
94086                 
94087                 ELSE null
94088               END                           object_type_code
94089             , CASE r
94090                 WHEN 1 THEN '275' 
94091                 WHEN 2 THEN '275' 
94092                 WHEN 3 THEN '275' 
94093                 WHEN 4 THEN '275' 
94094                 WHEN 5 THEN '275' 
94095                 WHEN 6 THEN '275' 
94096                 WHEN 7 THEN '275' 
94097                 WHEN 8 THEN '275' 
94098                 WHEN 9 THEN '275' 
94099                 WHEN 10 THEN '275' 
94100                 WHEN 11 THEN '275' 
94101                 WHEN 12 THEN '275' 
94102                 WHEN 13 THEN '275' 
94103                 WHEN 14 THEN '275' 
94104                 WHEN 15 THEN '275' 
94105                 WHEN 16 THEN '275' 
94106                 WHEN 17 THEN '275' 
94107                 
94108                 ELSE null
94109               END                           source_application_id
94110             , 'S'             source_type_code
94111             , CASE r
94112                 WHEN 1 THEN 'PERDL_CODE_COMBINATION_ID' 
94113                 WHEN 2 THEN 'PDR_REALIZED_GAINS_CCID' 
94114                 WHEN 3 THEN 'PDR_REALIZED_LOSSES_CCID' 
94115                 WHEN 4 THEN 'PRDL_CODE_COMBINATION_ID' 
94116                 WHEN 5 THEN 'PDR_UBR_CCID' 
94117                 WHEN 6 THEN 'PDR_UER_CCID' 
94118                 WHEN 7 THEN 'ENTERED_CURRENCY_CODE' 
94119                 WHEN 8 THEN 'EXCHANGE_RATE_DATE' 
94120                 WHEN 9 THEN 'EXCHANGE_RATE' 
94121                 WHEN 10 THEN 'EXCHANGE_RATE_TYPE' 
94122                 WHEN 11 THEN 'ENTERED_AMOUNT' 
94123                 WHEN 12 THEN 'ACCT_AMOUNT' 
94124                 WHEN 13 THEN 'REVENUE_DISTRIBUTION_TYPE' 
94125                 WHEN 14 THEN 'SYSTEM_LINKAGE_FUNCTION' 
94126                 WHEN 15 THEN 'REVENUE_FIRST_DIST_ID' 
94127                 WHEN 16 THEN 'REVENUE_SECOND_DIST_ID' 
94128                 WHEN 17 THEN 'REV_EVENT_TYPE_CLASSIFICATION' 
94129                 
94130                 ELSE null
94131               END                           source_code
94132             , CASE r
94133                 WHEN 1 THEN TO_CHAR(l3.PERDL_CODE_COMBINATION_ID)
94134                 WHEN 2 THEN TO_CHAR(l3.PDR_REALIZED_GAINS_CCID)
94135                 WHEN 3 THEN TO_CHAR(l3.PDR_REALIZED_LOSSES_CCID)
94136                 WHEN 4 THEN TO_CHAR(l3.PRDL_CODE_COMBINATION_ID)
94137                 WHEN 5 THEN TO_CHAR(l3.PDR_UBR_CCID)
94138                 WHEN 6 THEN TO_CHAR(l3.PDR_UER_CCID)
94139                 WHEN 7 THEN TO_CHAR(l3.ENTERED_CURRENCY_CODE)
94140                 WHEN 8 THEN TO_CHAR(l3.EXCHANGE_RATE_DATE)
94141                 WHEN 9 THEN TO_CHAR(l3.EXCHANGE_RATE)
94145                 WHEN 13 THEN TO_CHAR(l3.REVENUE_DISTRIBUTION_TYPE)
94142                 WHEN 10 THEN TO_CHAR(l3.EXCHANGE_RATE_TYPE)
94143                 WHEN 11 THEN TO_CHAR(l3.ENTERED_AMOUNT)
94144                 WHEN 12 THEN TO_CHAR(l3.ACCT_AMOUNT)
94146                 WHEN 14 THEN TO_CHAR(l3.SYSTEM_LINKAGE_FUNCTION)
94147                 WHEN 15 THEN TO_CHAR(l3.REVENUE_FIRST_DIST_ID)
94148                 WHEN 16 THEN TO_CHAR(l3.REVENUE_SECOND_DIST_ID)
94149                 WHEN 17 THEN TO_CHAR(l1.REV_EVENT_TYPE_CLASSIFICATION)
94150                 
94151                 ELSE null
94152               END                           source_value
94153             , CASE r
94154                 WHEN 17 THEN fvl72.meaning
94155                 
94156                 ELSE null
94157               END               source_meaning
94158          FROM  xla_events_gt     xet  
94159         , PA_XLA_EVENT_TYPE_REF_V  l1
94160         , PA_XLA_REVENUE_LINES_V  l3
94161   , fnd_lookup_values    fvl72
94162             , (select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
94163         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
94164           AND xet.event_class_code = C_EVENT_CLASS_CODE
94165             AND l3.event_id          = xet.event_id
94166  AND l1.rev_event_type (+) =l3.rev_event_type   AND fvl72.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
94167   AND fvl72.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
94168   AND fvl72.view_application_id(+) = 275
94169   AND fvl72.language(+)            = USERENV('LANG')
94170   
94171 )
94172 ;
94173 --
94174 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
94175 
94176       trace
94177          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
94178          ,p_level    => C_LEVEL_STATEMENT
94179          ,p_module   => l_log_module);
94180 
94181 END IF;
94182 
94183 
94184 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94185       trace
94186          (p_msg      => 'END of insert_sources_162'
94187          ,p_level    => C_LEVEL_PROCEDURE
94188          ,p_module   => l_log_module);
94189 END IF;
94190 EXCEPTION
94191   WHEN xla_exceptions_pkg.application_exception THEN
94192       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
94193             trace
94194                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
94195                ,p_level    => C_LEVEL_EXCEPTION
94196                ,p_module   => l_log_module);
94197       END IF;
94198       RAISE;
94199   WHEN OTHERS THEN
94200       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
94201             trace
94202                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
94203                ,p_level    => C_LEVEL_EXCEPTION
94204                ,p_module   => l_log_module);
94205        END IF;
94206        xla_exceptions_pkg.raise_message
94207            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_162');
94208 END insert_sources_162;
94209 --
94210 
94211 ---------------------------------------
94212 --
94213 -- PRIVATE FUNCTION
94214 --         EventClass_162
94215 --
94216 ----------------------------------------
94217 --
94218 FUNCTION EventClass_162
94219        (p_application_id         IN NUMBER
94220        ,p_base_ledger_id         IN NUMBER
94221        ,p_target_ledger_id       IN NUMBER
94222        ,p_language               IN VARCHAR2
94223        ,p_currency_code          IN VARCHAR2
94224        ,p_sla_ledger_id          IN NUMBER
94225        ,p_pad_start_date         IN DATE
94226        ,p_pad_end_date           IN DATE
94227        ,p_primary_ledger_id      IN NUMBER)
94228 RETURN BOOLEAN IS
94229 --
94230 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'REVENUE_ALL';
94231 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'REVENUE';
94232 
94233 l_calculate_acctd_flag   VARCHAR2(1) :='N';
94234 l_calculate_g_l_flag     VARCHAR2(1) :='N';
94235 --
94236 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94237 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94238 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
94239 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
94240 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94241 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
94242 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
94243 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94244 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
94245 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
94246 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94247 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94248 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94249 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
94250 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
94251 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
94252 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
94253 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
94254 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
94255 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
94256 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
94257 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
94258 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
94259 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
94260 
94261 l_event_id                             NUMBER;
94265 
94262 l_previous_event_id                    NUMBER;
94263 l_first_event_id                       NUMBER;
94264 l_last_event_id                        NUMBER;
94266 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
94267 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
94268 --
94269 --
94270 l_result                    BOOLEAN := TRUE;
94271 l_rows                      NUMBER  := 1000;
94272 l_event_type_name           VARCHAR2(80) := 'All';
94273 l_event_class_name          VARCHAR2(80) := 'Revenue';
94274 l_description               VARCHAR2(4000);
94275 l_transaction_reversal      NUMBER;
94276 l_ae_header_id              NUMBER;
94277 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
94278 l_log_module                VARCHAR2(240);
94279 --
94280 l_acct_reversal_source      VARCHAR2(30);
94281 l_trx_reversal_source       VARCHAR2(30);
94282 
94283 l_continue_with_lines       BOOLEAN := TRUE;
94284 --
94285 l_acc_rev_gl_date_source    DATE;                      -- 4262811
94286 --
94287 type t_array_event_id is table of number index by binary_integer;
94288 
94289 l_rec_array_event                    t_rec_array_event;
94290 l_null_rec_array_event               t_rec_array_event;
94291 l_array_ae_header_id                 xla_number_array_type;
94292 l_actual_flag                        VARCHAR2(1) := NULL;
94293 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
94294 l_balance_type_code                  VARCHAR2(1) :=NULL;
94295 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
94296 
94297 --
94298 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
94299 --
94300 
94301 TYPE t_array_source_48 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.CREDITING_REVENUE_FLAG%TYPE INDEX BY BINARY_INTEGER;
94302 TYPE t_array_source_51 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.EVENT_ID%TYPE INDEX BY BINARY_INTEGER;
94303 TYPE t_array_source_75 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
94304 TYPE t_array_source_77 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UER_CCID%TYPE INDEX BY BINARY_INTEGER;
94305 TYPE t_array_source_78 IS TABLE OF PA_XLA_REVENUE_HEADERS_V.UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
94306 
94307 TYPE t_array_source_1 IS TABLE OF PA_XLA_REVENUE_LINES_V.PERDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
94308 TYPE t_array_source_17 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_REALIZED_GAINS_CCID%TYPE INDEX BY BINARY_INTEGER;
94309 TYPE t_array_source_18 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_REALIZED_LOSSES_CCID%TYPE INDEX BY BINARY_INTEGER;
94310 TYPE t_array_source_19 IS TABLE OF PA_XLA_REVENUE_LINES_V.PRDL_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
94311 TYPE t_array_source_20 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_UBR_CCID%TYPE INDEX BY BINARY_INTEGER;
94312 TYPE t_array_source_21 IS TABLE OF PA_XLA_REVENUE_LINES_V.PDR_UER_CCID%TYPE INDEX BY BINARY_INTEGER;
94313 TYPE t_array_source_26 IS TABLE OF PA_XLA_REVENUE_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
94314 TYPE t_array_source_28 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
94315 TYPE t_array_source_29 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
94316 TYPE t_array_source_30 IS TABLE OF PA_XLA_REVENUE_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
94317 TYPE t_array_source_42 IS TABLE OF PA_XLA_REVENUE_LINES_V.ENTERED_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
94318 TYPE t_array_source_43 IS TABLE OF PA_XLA_REVENUE_LINES_V.ACCT_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
94319 TYPE t_array_source_46 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
94320 TYPE t_array_source_47 IS TABLE OF PA_XLA_REVENUE_LINES_V.SYSTEM_LINKAGE_FUNCTION%TYPE INDEX BY BINARY_INTEGER;
94321 TYPE t_array_source_49 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
94322 TYPE t_array_source_50 IS TABLE OF PA_XLA_REVENUE_LINES_V.REVENUE_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
94323 TYPE t_array_source_72 IS TABLE OF PA_XLA_EVENT_TYPE_REF_V.REV_EVENT_TYPE_CLASSIFICATION%TYPE INDEX BY BINARY_INTEGER;
94324 
94325 l_array_source_48              t_array_source_48;
94326 l_array_source_51              t_array_source_51;
94327 l_array_source_75              t_array_source_75;
94328 l_array_source_77              t_array_source_77;
94329 l_array_source_78              t_array_source_78;
94330 
94331 l_array_source_1      t_array_source_1;
94332 l_array_source_17      t_array_source_17;
94333 l_array_source_18      t_array_source_18;
94334 l_array_source_19      t_array_source_19;
94335 l_array_source_20      t_array_source_20;
94336 l_array_source_21      t_array_source_21;
94337 l_array_source_26      t_array_source_26;
94338 l_array_source_28      t_array_source_28;
94339 l_array_source_29      t_array_source_29;
94340 l_array_source_30      t_array_source_30;
94341 l_array_source_42      t_array_source_42;
94342 l_array_source_43      t_array_source_43;
94343 l_array_source_46      t_array_source_46;
94344 l_array_source_47      t_array_source_47;
94345 l_array_source_49      t_array_source_49;
94346 l_array_source_50      t_array_source_50;
94347 l_array_source_72      t_array_source_72;
94348 l_array_source_72_meaning      t_array_lookup_meaning;
94349 
94350 --
94351 CURSOR header_cur
94352 IS
94353 SELECT /*+ leading(xet) cardinality(xet,1) */
94354 -- Event Class Code: REVENUE
94355     xet.entity_id
94356    ,xet.legal_entity_id
94357    ,xet.entity_code
94358    ,xet.transaction_number
94359    ,xet.event_id
94360    ,xet.event_class_code
94361    ,xet.event_type_code
94362    ,xet.event_number
94363    ,xet.event_date
94364    ,xet.transaction_date
94365    ,xet.reference_num_1
94366    ,xet.reference_num_2
94367    ,xet.reference_num_3
94368    ,xet.reference_num_4
94369    ,xet.reference_char_1
94370    ,xet.reference_char_2
94371    ,xet.reference_char_3
94372    ,xet.reference_char_4
94373    ,xet.reference_date_1
94374    ,xet.reference_date_2
94375    ,xet.reference_date_3
94379   , h2.CREDITING_REVENUE_FLAG    source_48
94376    ,xet.reference_date_4
94377    ,xet.event_created_by
94378    ,xet.budgetary_control_flag 
94380   , h2.EVENT_ID    source_51
94381   , h2.GL_DATE    source_75
94382   , h2.UER_CCID    source_77
94383   , h2.UBR_CCID    source_78
94384   FROM xla_events_gt     xet 
94385   , PA_XLA_REVENUE_HEADERS_V  h2
94386  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
94387    and xet.event_class_code = C_EVENT_CLASS_CODE
94388    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
94389 
94390  ORDER BY event_id
94391 ;
94392 
94393 
94394 --
94395 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
94396 IS
94397 SELECT  /*+ leading(xet) cardinality(xet,1) */
94398 -- Event Class Code: REVENUE
94399     xet.entity_id
94400    ,xet.legal_entity_id
94401    ,xet.entity_code
94402    ,xet.transaction_number
94403    ,xet.event_id
94404    ,xet.event_class_code
94405    ,xet.event_type_code
94406    ,xet.event_number
94407    ,xet.event_date
94408    ,xet.transaction_date
94409    ,xet.reference_num_1
94410    ,xet.reference_num_2
94411    ,xet.reference_num_3
94412    ,xet.reference_num_4
94413    ,xet.reference_char_1
94414    ,xet.reference_char_2
94415    ,xet.reference_char_3
94416    ,xet.reference_char_4
94417    ,xet.reference_date_1
94418    ,xet.reference_date_2
94419    ,xet.reference_date_3
94420    ,xet.reference_date_4
94421    ,xet.event_created_by
94422    ,xet.budgetary_control_flag
94423  , l3.LINE_NUMBER  
94424   , l3.PERDL_CODE_COMBINATION_ID    source_1
94425   , l3.PDR_REALIZED_GAINS_CCID    source_17
94426   , l3.PDR_REALIZED_LOSSES_CCID    source_18
94427   , l3.PRDL_CODE_COMBINATION_ID    source_19
94428   , l3.PDR_UBR_CCID    source_20
94429   , l3.PDR_UER_CCID    source_21
94430   , l3.ENTERED_CURRENCY_CODE    source_26
94431   , l3.EXCHANGE_RATE_DATE    source_28
94432   , l3.EXCHANGE_RATE    source_29
94433   , l3.EXCHANGE_RATE_TYPE    source_30
94434   , l3.ENTERED_AMOUNT    source_42
94435   , l3.ACCT_AMOUNT    source_43
94436   , l3.REVENUE_DISTRIBUTION_TYPE    source_46
94437   , l3.SYSTEM_LINKAGE_FUNCTION    source_47
94438   , l3.REVENUE_FIRST_DIST_ID    source_49
94439   , l3.REVENUE_SECOND_DIST_ID    source_50
94440   , l1.REV_EVENT_TYPE_CLASSIFICATION    source_72
94441   , fvl72.meaning   source_72_meaning
94442   FROM xla_events_gt     xet 
94443   , PA_XLA_EVENT_TYPE_REF_V  l1
94444   , PA_XLA_REVENUE_LINES_V  l3
94445   , fnd_lookup_values    fvl72
94446  WHERE xet.event_id between x_first_event_id and x_last_event_id
94447    and xet.event_date between p_pad_start_date and p_pad_end_date
94448    and xet.event_class_code = C_EVENT_CLASS_CODE
94449    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
94450  AND l1.REV_EVENT_TYPE (+) =l3.REV_EVENT_TYPE   AND fvl72.lookup_type(+)         = 'EVENT TYPE CLASSIFICATION'
94451   AND fvl72.lookup_code(+)         = l1.REV_EVENT_TYPE_CLASSIFICATION
94452   AND fvl72.view_application_id(+) = 275
94453   AND fvl72.language(+)            = USERENV('LANG')
94454   ;
94455 
94456 --
94457 BEGIN
94458 IF g_log_enabled THEN
94459    l_log_module := C_DEFAULT_MODULE||'.EventClass_162';
94460 END IF;
94461 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
94462    trace
94463       (p_msg      => 'BEGIN of EventClass_162'
94464       ,p_level    => C_LEVEL_PROCEDURE
94465       ,p_module   => l_log_module);
94466 END IF;
94467 
94468 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
94469    trace
94470       (p_msg      => 'p_application_id = '||p_application_id||
94471                      ' - p_base_ledger_id = '||p_base_ledger_id||
94472                      ' - p_target_ledger_id  = '||p_target_ledger_id||
94473                      ' - p_language = '||p_language||
94474                      ' - p_currency_code = '||p_currency_code||
94475                      ' - p_sla_ledger_id = '||p_sla_ledger_id
94476       ,p_level    => C_LEVEL_STATEMENT
94477       ,p_module   => l_log_module);
94478 END IF;
94479 --
94480 -- initialze arrays
94481 --
94482 g_array_event.DELETE;
94483 l_rec_array_event := l_null_rec_array_event;
94484 --
94485 --------------------------------------
94486 -- 4262811 Initialze MPA Line Number
94487 --------------------------------------
94488 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
94489 
94490 --
94491 
94492 --
94493 OPEN header_cur;
94494 --
94495 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
94496    trace
94497    (p_msg      => 'SQL - FETCH header_cur'
94498    ,p_level    => C_LEVEL_STATEMENT
94499    ,p_module   => l_log_module);
94500 END IF;
94501 --
94502 LOOP
94503 FETCH header_cur BULK COLLECT INTO
94504         l_array_entity_id
94505       , l_array_legal_entity_id
94506       , l_array_entity_code
94507       , l_array_transaction_num
94508       , l_array_event_id
94509       , l_array_class_code
94510       , l_array_event_type
94511       , l_array_event_number
94512       , l_array_event_date
94513       , l_array_transaction_date
94514       , l_array_reference_num_1
94515       , l_array_reference_num_2
94516       , l_array_reference_num_3
94517       , l_array_reference_num_4
94518       , l_array_reference_char_1
94519       , l_array_reference_char_2
94520       , l_array_reference_char_3
94521       , l_array_reference_char_4
94522       , l_array_reference_date_1
94523       , l_array_reference_date_2
94524       , l_array_reference_date_3
94525       , l_array_reference_date_4
94526       , l_array_event_created_by
94527       , l_array_budgetary_control_flag 
94528       , l_array_source_48
94529       , l_array_source_51
94530       , l_array_source_75
94531       , l_array_source_77
94535 IF (C_LEVEL_EVENT >= g_log_level) THEN
94532       , l_array_source_78
94533       LIMIT l_rows;
94534 --
94536    trace
94537    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
94538    ,p_level    => C_LEVEL_EVENT
94539    ,p_module   => l_log_module);
94540 END IF;
94541 --
94542 EXIT WHEN l_array_entity_id.COUNT = 0;
94543 
94544 -- initialize arrays
94545 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
94546 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
94547 
94548 --
94549 -- Bug 4458708
94550 --
94551 XLA_AE_LINES_PKG.g_LineNumber := 0;
94552 
94553 
94554 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
94555 g_last_hdr_idx := l_array_event_id.LAST;
94556 --
94557 -- loop for the headers. Each iteration is for each header extract row
94558 -- fetched in header cursor
94559 --
94560 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
94561 
94562 --
94563 -- set event info as cache for other routines to refer event attributes
94564 --
94565 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
94566    (p_application_id           => p_application_id
94567    ,p_primary_ledger_id        => p_primary_ledger_id
94568    ,p_base_ledger_id           => p_base_ledger_id
94569    ,p_target_ledger_id         => p_target_ledger_id
94570    ,p_entity_id                => l_array_entity_id(hdr_idx)
94571    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
94572    ,p_entity_code              => l_array_entity_code(hdr_idx)
94573    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
94574    ,p_event_id                 => l_array_event_id(hdr_idx)
94575    ,p_event_class_code         => l_array_class_code(hdr_idx)
94576    ,p_event_type_code          => l_array_event_type(hdr_idx)
94577    ,p_event_number             => l_array_event_number(hdr_idx)
94578    ,p_event_date               => l_array_event_date(hdr_idx)
94579    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
94580    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
94581    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
94582    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
94583    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
94584    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
94585    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
94586    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
94587    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
94588    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
94589    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
94590    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
94591    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
94592    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
94593    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
94594 
94595 --
94596 -- set the status of entry to C_VALID (0)
94597 --
94598 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
94599 
94600 --
94601 -- initialize a row for ae header
94602 --
94603 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
94604 
94605 l_event_id := l_array_event_id(hdr_idx);
94606 
94607 --
94608 -- storing the hdr_idx for event. May be used by line cursor.
94609 --
94610 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
94611 
94612 --
94613 -- store sources from header extract. This can be improved to
94614 -- store only those sources from header extract that may be used in lines
94615 --
94616 
94617 g_array_event(l_event_id).array_value_char('source_48') := l_array_source_48(hdr_idx);
94618 g_array_event(l_event_id).array_value_num('source_51') := l_array_source_51(hdr_idx);
94619 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
94620 g_array_event(l_event_id).array_value_num('source_77') := l_array_source_77(hdr_idx);
94621 g_array_event(l_event_id).array_value_num('source_78') := l_array_source_78(hdr_idx);
94622 
94623 --
94624 -- initilaize the status of ae headers for diffrent balance types
94625 -- the status is initialised to C_NOT_CREATED (2)
94626 --
94627 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
94628 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
94629 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
94630 
94631 --
94632 -- call api to validate and store accounting attributes for header
94633 --
94634 
94635 ------------------------------------------------------------
94636 -- Accrual Reversal : to get date for Standard Source (NONE)
94637 ------------------------------------------------------------
94638 l_acc_rev_gl_date_source := NULL;
94639 
94640      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
94641       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
94642 
94643 
94644 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
94645 
94646 XLA_AE_HEADER_PKG.SetJeCategoryName;
94647 
94648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
94649 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
94650 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
94651 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
94652 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
94653 
94654 
94655 -- No header level analytical criteria
94656 
94657 --
94661 
94658 --accounting attribute enhancement, bug 3612931
94659 --
94660 l_trx_reversal_source := SUBSTR(NULL, 1,30);
94662 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
94663    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
94664 
94665    xla_accounting_err_pkg.build_message
94666       (p_appli_s_name            => 'XLA'
94667       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
94668       ,p_token_1                 => 'ACCT_ATTR_NAME'
94669       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
94670       ,p_token_2                 => 'PRODUCT_NAME'
94671       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
94672       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
94673       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
94674       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
94675 
94676 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
94677    --
94678    -- following sets the accounting attributes needed to reverse
94679    -- accounting for a distributeion
94680    --
94681    xla_ae_lines_pkg.SetTrxReversalAttrs
94682       (p_event_id              => l_event_id
94683       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
94684       ,p_trx_reversal_source   => l_trx_reversal_source);
94685 
94686 END IF;
94687 
94688 
94689 ----------------------------------------------------------------
94690 -- 4262811 -  update the header statuses to invalid in need be
94691 ----------------------------------------------------------------
94692 --
94693 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
94694 
94695 
94696   -----------------------------------------------
94697   -- No accrual reversal for the event class/type
94698   -----------------------------------------------
94699 ----------------------------------------------------------------
94700 
94701 --
94702 -- this ends the header loop iteration for one bulk fetch
94703 --
94704 END LOOP;
94705 
94706 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
94707 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
94708 
94709 --
94710 -- insert dummy rows into lines gt table that were created due to
94711 -- transaction reversals
94712 --
94713 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
94714    l_result := XLA_AE_LINES_PKG.InsertLines;
94715 END IF;
94716 
94717 --
94718 -- reset the temp_line_num for each set of events fetched from header
94719 -- cursor rather than doing it for each new event in line cursor
94720 -- Bug 3939231
94721 --
94722 xla_ae_lines_pkg.g_temp_line_num := 0;
94723 
94724 
94725 
94726 --
94727 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
94728 --
94729 --
94730 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
94731 
94732       trace
94733          (p_msg      => 'SQL - FETCH line_cur'
94734          ,p_level    => C_LEVEL_STATEMENT
94735          ,p_module   => l_log_module);
94736 
94737 END IF;
94738 --
94739 --
94740 LOOP
94741   --
94742   FETCH line_cur BULK COLLECT INTO
94743         l_array_entity_id
94744       , l_array_legal_entity_id
94745       , l_array_entity_code
94746       , l_array_transaction_num
94747       , l_array_event_id
94748       , l_array_class_code
94749       , l_array_event_type
94750       , l_array_event_number
94751       , l_array_event_date
94752       , l_array_transaction_date
94753       , l_array_reference_num_1
94754       , l_array_reference_num_2
94755       , l_array_reference_num_3
94756       , l_array_reference_num_4
94757       , l_array_reference_char_1
94758       , l_array_reference_char_2
94759       , l_array_reference_char_3
94760       , l_array_reference_char_4
94761       , l_array_reference_date_1
94762       , l_array_reference_date_2
94763       , l_array_reference_date_3
94764       , l_array_reference_date_4
94765       , l_array_event_created_by
94766       , l_array_budgetary_control_flag
94767       , l_array_extract_line_num 
94768       , l_array_source_1
94769       , l_array_source_17
94770       , l_array_source_18
94771       , l_array_source_19
94772       , l_array_source_20
94773       , l_array_source_21
94774       , l_array_source_26
94775       , l_array_source_28
94776       , l_array_source_29
94777       , l_array_source_30
94778       , l_array_source_42
94779       , l_array_source_43
94780       , l_array_source_46
94781       , l_array_source_47
94782       , l_array_source_49
94783       , l_array_source_50
94784       , l_array_source_72
94785       , l_array_source_72_meaning
94786       LIMIT l_rows;
94787 
94788   --
94789   IF (C_LEVEL_EVENT >= g_log_level) THEN
94790             trace
94791                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
94792                ,p_level    => C_LEVEL_EVENT
94793                ,p_module   => l_log_module);
94794   END IF;
94795   --
94796   EXIT WHEN l_array_entity_id.count = 0;
94797 
94798   XLA_AE_LINES_PKG.g_rec_lines := null;
94799 
94800 --
94801 -- Bug 4458708
94802 --
94803 XLA_AE_LINES_PKG.g_LineNumber := 0;
94804 --
94805 --
94806 
94807 FOR Idx IN 1..l_array_event_id.count LOOP
94808    --
94809    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
94810    --
94811    l_event_id := l_array_event_id(idx);  -- 5648433
94812 
94813    --
94817    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
94814    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
94815    --
94816 
94818              (g_array_event(l_event_id).array_value_num('header_index'))
94819          ,'N'
94820          ) <> 'Y'
94821    THEN
94822       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
94823          trace
94824             (p_msg      => 'Trancaction revesal option is not Y '
94825             ,p_level    => C_LEVEL_STATEMENT
94826             ,p_module   => l_log_module);
94827       END IF;
94828 
94829 --
94830 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
94831 --
94832 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
94833 --
94834 -- set event info as cache for other routines to refer event attributes
94835 --
94836 
94837 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
94838    l_previous_event_id := l_event_id;
94839 
94840    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
94841       (p_application_id           => p_application_id
94842       ,p_primary_ledger_id        => p_primary_ledger_id
94843       ,p_base_ledger_id           => p_base_ledger_id
94844       ,p_target_ledger_id         => p_target_ledger_id
94845       ,p_entity_id                => l_array_entity_id(Idx)
94846       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
94847       ,p_entity_code              => l_array_entity_code(Idx)
94848       ,p_transaction_num          => l_array_transaction_num(Idx)
94849       ,p_event_id                 => l_array_event_id(Idx)
94850       ,p_event_class_code         => l_array_class_code(Idx)
94851       ,p_event_type_code          => l_array_event_type(Idx)
94852       ,p_event_number             => l_array_event_number(Idx)
94853       ,p_event_date               => l_array_event_date(Idx)
94854       ,p_transaction_date         => l_array_transaction_date(Idx)
94855       ,p_reference_num_1          => l_array_reference_num_1(Idx)
94856       ,p_reference_num_2          => l_array_reference_num_2(Idx)
94857       ,p_reference_num_3          => l_array_reference_num_3(Idx)
94858       ,p_reference_num_4          => l_array_reference_num_4(Idx)
94859       ,p_reference_char_1         => l_array_reference_char_1(Idx)
94860       ,p_reference_char_2         => l_array_reference_char_2(Idx)
94861       ,p_reference_char_3         => l_array_reference_char_3(Idx)
94862       ,p_reference_char_4         => l_array_reference_char_4(Idx)
94863       ,p_reference_date_1         => l_array_reference_date_1(Idx)
94864       ,p_reference_date_2         => l_array_reference_date_2(Idx)
94865       ,p_reference_date_3         => l_array_reference_date_3(Idx)
94866       ,p_reference_date_4         => l_array_reference_date_4(Idx)
94867       ,p_event_created_by         => l_array_event_created_by(Idx)
94868       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
94869        --
94870 END IF;
94871 
94872 
94873 
94874 --
94875 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
94876 
94877 l_acct_reversal_source := SUBSTR(NULL, 1,30);
94878 
94879 IF l_continue_with_lines THEN
94880    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
94881       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
94882 
94883       xla_accounting_err_pkg.build_message
94884          (p_appli_s_name            => 'XLA'
94885          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
94886          ,p_token_1                 => 'LINE_NUMBER'
94887          ,p_value_1                 => l_array_extract_line_num(Idx)
94888          ,p_token_2                 => 'PRODUCT_NAME'
94889          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
94890          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
94891          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
94892          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
94893 
94894    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
94895       --
94896       -- following sets the accounting attributes needed to reverse
94897       -- accounting for a distributeion
94898       --
94899 
94900       --
94901       -- 5217187
94902       --
94903       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
94904       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
94905                                        g_array_event(l_event_id).array_value_num('header_index'));
94906       --
94907       --
94908 
94909       -- No reversal code generated
94910 
94911       xla_ae_lines_pkg.SetAcctReversalAttrs
94912          (p_event_id             => l_event_id
94913          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
94914          ,p_calculate_acctd_flag => l_calculate_acctd_flag
94915          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
94916    END IF;
94917 
94918    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
94919        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
94920 
94921 --
94922 AcctLineType_35 (
94923  p_application_id  => p_application_id
94924  ,p_event_id     => l_event_id
94925  ,p_calculate_acctd_flag => l_calculate_acctd_flag
94926  ,p_calculate_g_l_flag => l_calculate_g_l_flag
94927  ,p_actual_flag => l_actual_flag
94928  ,p_balance_type_code => l_balance_type_code
94929  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
94930  
94931  , p_source_19 => l_array_source_19(Idx)
94932  , p_source_26 => l_array_source_26(Idx)
94933  , p_source_28 => l_array_source_28(Idx)
94934  , p_source_29 => l_array_source_29(Idx)
94935  , p_source_30 => l_array_source_30(Idx)
94936  , p_source_42 => l_array_source_42(Idx)
94937  , p_source_43 => l_array_source_43(Idx)
94938  , p_source_46 => l_array_source_46(Idx)
94942  , p_source_50 => l_array_source_50(Idx)
94939  , p_source_47 => l_array_source_47(Idx)
94940  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
94941  , p_source_49 => l_array_source_49(Idx)
94943  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
94944  );
94945 If(l_balance_type_code = 'A') THEN
94946   l_actual_gain_loss_ref := l_gain_or_loss_ref;
94947 END IF;
94948 
94949 --
94950 
94951 
94952 --
94953 AcctLineType_45 (
94954  p_application_id  => p_application_id
94955  ,p_event_id     => l_event_id
94956  ,p_calculate_acctd_flag => l_calculate_acctd_flag
94957  ,p_calculate_g_l_flag => l_calculate_g_l_flag
94958  ,p_actual_flag => l_actual_flag
94959  ,p_balance_type_code => l_balance_type_code
94960  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
94961  
94962  , p_source_19 => l_array_source_19(Idx)
94963  , p_source_26 => l_array_source_26(Idx)
94964  , p_source_42 => l_array_source_42(Idx)
94965  , p_source_43 => l_array_source_43(Idx)
94966  , p_source_46 => l_array_source_46(Idx)
94967  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
94968  , p_source_49 => l_array_source_49(Idx)
94969  , p_source_50 => l_array_source_50(Idx)
94970  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
94971  );
94972 If(l_balance_type_code = 'A') THEN
94973   l_actual_gain_loss_ref := l_gain_or_loss_ref;
94974 END IF;
94975 
94976 --
94977 
94978 
94979 --
94980 AcctLineType_46 (
94981  p_application_id  => p_application_id
94982  ,p_event_id     => l_event_id
94983  ,p_calculate_acctd_flag => l_calculate_acctd_flag
94984  ,p_calculate_g_l_flag => l_calculate_g_l_flag
94985  ,p_actual_flag => l_actual_flag
94986  ,p_balance_type_code => l_balance_type_code
94987  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
94988  
94989  , p_source_19 => l_array_source_19(Idx)
94990  , p_source_26 => l_array_source_26(Idx)
94991  , p_source_28 => l_array_source_28(Idx)
94992  , p_source_29 => l_array_source_29(Idx)
94993  , p_source_30 => l_array_source_30(Idx)
94994  , p_source_42 => l_array_source_42(Idx)
94995  , p_source_43 => l_array_source_43(Idx)
94996  , p_source_46 => l_array_source_46(Idx)
94997  , p_source_47 => l_array_source_47(Idx)
94998  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
94999  , p_source_49 => l_array_source_49(Idx)
95000  , p_source_50 => l_array_source_50(Idx)
95001  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95002  );
95003 If(l_balance_type_code = 'A') THEN
95004   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95005 END IF;
95006 
95007 --
95008 
95009 
95010 --
95011 AcctLineType_47 (
95012  p_application_id  => p_application_id
95013  ,p_event_id     => l_event_id
95014  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95015  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95016  ,p_actual_flag => l_actual_flag
95017  ,p_balance_type_code => l_balance_type_code
95018  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95019  
95020  , p_source_1 => l_array_source_1(Idx)
95021  , p_source_26 => l_array_source_26(Idx)
95022  , p_source_28 => l_array_source_28(Idx)
95023  , p_source_29 => l_array_source_29(Idx)
95024  , p_source_30 => l_array_source_30(Idx)
95025  , p_source_42 => l_array_source_42(Idx)
95026  , p_source_43 => l_array_source_43(Idx)
95027  , p_source_46 => l_array_source_46(Idx)
95028  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95029  , p_source_49 => l_array_source_49(Idx)
95030  , p_source_50 => l_array_source_50(Idx)
95031  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95032  , p_source_72 => l_array_source_72(Idx)
95033  , p_source_72_meaning => l_array_source_72_meaning(Idx)
95034  );
95035 If(l_balance_type_code = 'A') THEN
95036   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95037 END IF;
95038 
95039 --
95040 
95041 
95042 --
95043 AcctLineType_50 (
95044  p_application_id  => p_application_id
95045  ,p_event_id     => l_event_id
95046  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95047  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95048  ,p_actual_flag => l_actual_flag
95049  ,p_balance_type_code => l_balance_type_code
95050  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95051  
95052  , p_source_1 => l_array_source_1(Idx)
95053  , p_source_26 => l_array_source_26(Idx)
95054  , p_source_42 => l_array_source_42(Idx)
95055  , p_source_43 => l_array_source_43(Idx)
95056  , p_source_46 => l_array_source_46(Idx)
95057  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95058  , p_source_49 => l_array_source_49(Idx)
95059  , p_source_50 => l_array_source_50(Idx)
95060  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95061  , p_source_72 => l_array_source_72(Idx)
95062  , p_source_72_meaning => l_array_source_72_meaning(Idx)
95063  );
95064 If(l_balance_type_code = 'A') THEN
95065   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95066 END IF;
95067 
95068 --
95069 
95070 
95071 --
95072 AcctLineType_51 (
95073  p_application_id  => p_application_id
95074  ,p_event_id     => l_event_id
95075  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95076  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95077  ,p_actual_flag => l_actual_flag
95078  ,p_balance_type_code => l_balance_type_code
95079  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95080  
95081  , p_source_1 => l_array_source_1(Idx)
95082  , p_source_26 => l_array_source_26(Idx)
95083  , p_source_28 => l_array_source_28(Idx)
95084  , p_source_29 => l_array_source_29(Idx)
95085  , p_source_30 => l_array_source_30(Idx)
95086  , p_source_42 => l_array_source_42(Idx)
95087  , p_source_43 => l_array_source_43(Idx)
95088  , p_source_46 => l_array_source_46(Idx)
95092  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95089  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95090  , p_source_49 => l_array_source_49(Idx)
95091  , p_source_50 => l_array_source_50(Idx)
95093  , p_source_72 => l_array_source_72(Idx)
95094  , p_source_72_meaning => l_array_source_72_meaning(Idx)
95095  );
95096 If(l_balance_type_code = 'A') THEN
95097   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95098 END IF;
95099 
95100 --
95101 
95102 
95103 --
95104 AcctLineType_54 (
95105  p_application_id  => p_application_id
95106  ,p_event_id     => l_event_id
95107  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95108  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95109  ,p_actual_flag => l_actual_flag
95110  ,p_balance_type_code => l_balance_type_code
95111  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95112  
95113  , p_source_1 => l_array_source_1(Idx)
95114  , p_source_26 => l_array_source_26(Idx)
95115  , p_source_42 => l_array_source_42(Idx)
95116  , p_source_43 => l_array_source_43(Idx)
95117  , p_source_46 => l_array_source_46(Idx)
95118  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95119  , p_source_49 => l_array_source_49(Idx)
95120  , p_source_50 => l_array_source_50(Idx)
95121  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95122  , p_source_72 => l_array_source_72(Idx)
95123  , p_source_72_meaning => l_array_source_72_meaning(Idx)
95124  );
95125 If(l_balance_type_code = 'A') THEN
95126   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95127 END IF;
95128 
95129 --
95130 
95131 
95132 --
95133 AcctLineType_59 (
95134  p_application_id  => p_application_id
95135  ,p_event_id     => l_event_id
95136  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95137  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95138  ,p_actual_flag => l_actual_flag
95139  ,p_balance_type_code => l_balance_type_code
95140  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95141  
95142  , p_source_19 => l_array_source_19(Idx)
95143  , p_source_26 => l_array_source_26(Idx)
95144  , p_source_28 => l_array_source_28(Idx)
95145  , p_source_29 => l_array_source_29(Idx)
95146  , p_source_30 => l_array_source_30(Idx)
95147  , p_source_42 => l_array_source_42(Idx)
95148  , p_source_43 => l_array_source_43(Idx)
95149  , p_source_46 => l_array_source_46(Idx)
95150  , p_source_47 => l_array_source_47(Idx)
95151  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95152  , p_source_49 => l_array_source_49(Idx)
95153  , p_source_50 => l_array_source_50(Idx)
95154  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95155  );
95156 If(l_balance_type_code = 'A') THEN
95157   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95158 END IF;
95159 
95160 --
95161 
95162 
95163 --
95164 AcctLineType_60 (
95165  p_application_id  => p_application_id
95166  ,p_event_id     => l_event_id
95167  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95168  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95169  ,p_actual_flag => l_actual_flag
95170  ,p_balance_type_code => l_balance_type_code
95171  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95172  
95173  , p_source_19 => l_array_source_19(Idx)
95174  , p_source_26 => l_array_source_26(Idx)
95175  , p_source_28 => l_array_source_28(Idx)
95176  , p_source_29 => l_array_source_29(Idx)
95177  , p_source_30 => l_array_source_30(Idx)
95178  , p_source_42 => l_array_source_42(Idx)
95179  , p_source_43 => l_array_source_43(Idx)
95180  , p_source_46 => l_array_source_46(Idx)
95181  , p_source_47 => l_array_source_47(Idx)
95182  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95183  , p_source_49 => l_array_source_49(Idx)
95184  , p_source_50 => l_array_source_50(Idx)
95185  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95186  );
95187 If(l_balance_type_code = 'A') THEN
95188   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95189 END IF;
95190 
95191 --
95192 
95193 
95194 --
95195 AcctLineType_61 (
95196  p_application_id  => p_application_id
95197  ,p_event_id     => l_event_id
95198  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95199  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95200  ,p_actual_flag => l_actual_flag
95201  ,p_balance_type_code => l_balance_type_code
95202  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95203  
95204  , p_source_19 => l_array_source_19(Idx)
95205  , p_source_26 => l_array_source_26(Idx)
95206  , p_source_28 => l_array_source_28(Idx)
95207  , p_source_29 => l_array_source_29(Idx)
95208  , p_source_30 => l_array_source_30(Idx)
95209  , p_source_42 => l_array_source_42(Idx)
95210  , p_source_43 => l_array_source_43(Idx)
95211  , p_source_46 => l_array_source_46(Idx)
95212  , p_source_47 => l_array_source_47(Idx)
95213  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95214  , p_source_49 => l_array_source_49(Idx)
95215  , p_source_50 => l_array_source_50(Idx)
95216  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95217  );
95218 If(l_balance_type_code = 'A') THEN
95219   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95220 END IF;
95221 
95222 --
95223 
95224 
95225 --
95226 AcctLineType_114 (
95227  p_application_id  => p_application_id
95228  ,p_event_id     => l_event_id
95229  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95230  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95231  ,p_actual_flag => l_actual_flag
95232  ,p_balance_type_code => l_balance_type_code
95233  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95234  
95235  , p_source_17 => l_array_source_17(Idx)
95236  , p_source_26 => l_array_source_26(Idx)
95237  , p_source_28 => l_array_source_28(Idx)
95238  , p_source_29 => l_array_source_29(Idx)
95242  , p_source_46 => l_array_source_46(Idx)
95239  , p_source_30 => l_array_source_30(Idx)
95240  , p_source_42 => l_array_source_42(Idx)
95241  , p_source_43 => l_array_source_43(Idx)
95243  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95244  , p_source_49 => l_array_source_49(Idx)
95245  , p_source_50 => l_array_source_50(Idx)
95246  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95247  );
95248 If(l_balance_type_code = 'A') THEN
95249   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95250 END IF;
95251 
95252 --
95253 
95254 
95255 --
95256 AcctLineType_116 (
95257  p_application_id  => p_application_id
95258  ,p_event_id     => l_event_id
95259  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95260  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95261  ,p_actual_flag => l_actual_flag
95262  ,p_balance_type_code => l_balance_type_code
95263  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95264  
95265  , p_source_18 => l_array_source_18(Idx)
95266  , p_source_26 => l_array_source_26(Idx)
95267  , p_source_28 => l_array_source_28(Idx)
95268  , p_source_29 => l_array_source_29(Idx)
95269  , p_source_30 => l_array_source_30(Idx)
95270  , p_source_42 => l_array_source_42(Idx)
95271  , p_source_43 => l_array_source_43(Idx)
95272  , p_source_46 => l_array_source_46(Idx)
95273  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95274  , p_source_49 => l_array_source_49(Idx)
95275  , p_source_50 => l_array_source_50(Idx)
95276  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95277  );
95278 If(l_balance_type_code = 'A') THEN
95279   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95280 END IF;
95281 
95282 --
95283 
95284 
95285 --
95286 AcctLineType_135 (
95287  p_application_id  => p_application_id
95288  ,p_event_id     => l_event_id
95289  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95290  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95291  ,p_actual_flag => l_actual_flag
95292  ,p_balance_type_code => l_balance_type_code
95293  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95294  
95295  , p_source_20 => l_array_source_20(Idx)
95296  , p_source_26 => l_array_source_26(Idx)
95297  , p_source_28 => l_array_source_28(Idx)
95298  , p_source_29 => l_array_source_29(Idx)
95299  , p_source_30 => l_array_source_30(Idx)
95300  , p_source_42 => l_array_source_42(Idx)
95301  , p_source_43 => l_array_source_43(Idx)
95302  , p_source_46 => l_array_source_46(Idx)
95303  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95304  , p_source_49 => l_array_source_49(Idx)
95305  , p_source_50 => l_array_source_50(Idx)
95306  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95307  );
95308 If(l_balance_type_code = 'A') THEN
95309   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95310 END IF;
95311 
95312 --
95313 
95314 
95315 --
95316 AcctLineType_138 (
95317  p_application_id  => p_application_id
95318  ,p_event_id     => l_event_id
95319  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95320  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95321  ,p_actual_flag => l_actual_flag
95322  ,p_balance_type_code => l_balance_type_code
95323  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95324  
95325  , p_source_20 => l_array_source_20(Idx)
95326  , p_source_26 => l_array_source_26(Idx)
95327  , p_source_42 => l_array_source_42(Idx)
95328  , p_source_43 => l_array_source_43(Idx)
95329  , p_source_46 => l_array_source_46(Idx)
95330  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95331  , p_source_49 => l_array_source_49(Idx)
95332  , p_source_50 => l_array_source_50(Idx)
95333  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95334  );
95335 If(l_balance_type_code = 'A') THEN
95336   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95337 END IF;
95338 
95339 --
95340 
95341 
95342 --
95343 AcctLineType_139 (
95344  p_application_id  => p_application_id
95345  ,p_event_id     => l_event_id
95346  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95347  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95348  ,p_actual_flag => l_actual_flag
95349  ,p_balance_type_code => l_balance_type_code
95350  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95351  
95352  , p_source_21 => l_array_source_21(Idx)
95353  , p_source_26 => l_array_source_26(Idx)
95354  , p_source_28 => l_array_source_28(Idx)
95355  , p_source_29 => l_array_source_29(Idx)
95356  , p_source_30 => l_array_source_30(Idx)
95357  , p_source_42 => l_array_source_42(Idx)
95358  , p_source_43 => l_array_source_43(Idx)
95359  , p_source_46 => l_array_source_46(Idx)
95360  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95361  , p_source_49 => l_array_source_49(Idx)
95362  , p_source_50 => l_array_source_50(Idx)
95363  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95364  );
95365 If(l_balance_type_code = 'A') THEN
95366   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95367 END IF;
95368 
95369 --
95370 
95371 
95372 --
95373 AcctLineType_142 (
95374  p_application_id  => p_application_id
95375  ,p_event_id     => l_event_id
95376  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95377  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95378  ,p_actual_flag => l_actual_flag
95379  ,p_balance_type_code => l_balance_type_code
95380  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95381  
95382  , p_source_21 => l_array_source_21(Idx)
95383  , p_source_26 => l_array_source_26(Idx)
95384  , p_source_42 => l_array_source_42(Idx)
95385  , p_source_43 => l_array_source_43(Idx)
95386  , p_source_46 => l_array_source_46(Idx)
95387  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95388  , p_source_49 => l_array_source_49(Idx)
95392 If(l_balance_type_code = 'A') THEN
95389  , p_source_50 => l_array_source_50(Idx)
95390  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95391  );
95393   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95394 END IF;
95395 
95396 --
95397 
95398 
95399 --
95400 AcctLineType_145 (
95401  p_application_id  => p_application_id
95402  ,p_event_id     => l_event_id
95403  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95404  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95405  ,p_actual_flag => l_actual_flag
95406  ,p_balance_type_code => l_balance_type_code
95407  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95408  
95409  , p_source_19 => l_array_source_19(Idx)
95410  , p_source_26 => l_array_source_26(Idx)
95411  , p_source_28 => l_array_source_28(Idx)
95412  , p_source_29 => l_array_source_29(Idx)
95413  , p_source_30 => l_array_source_30(Idx)
95414  , p_source_42 => l_array_source_42(Idx)
95415  , p_source_43 => l_array_source_43(Idx)
95416  , p_source_46 => l_array_source_46(Idx)
95417  , p_source_47 => l_array_source_47(Idx)
95418  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95419  , p_source_49 => l_array_source_49(Idx)
95420  , p_source_50 => l_array_source_50(Idx)
95421  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95422  );
95423 If(l_balance_type_code = 'A') THEN
95424   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95425 END IF;
95426 
95427 --
95428 
95429 
95430 --
95431 AcctLineType_146 (
95432  p_application_id  => p_application_id
95433  ,p_event_id     => l_event_id
95434  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95435  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95436  ,p_actual_flag => l_actual_flag
95437  ,p_balance_type_code => l_balance_type_code
95438  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95439  
95440  , p_source_19 => l_array_source_19(Idx)
95441  , p_source_26 => l_array_source_26(Idx)
95442  , p_source_28 => l_array_source_28(Idx)
95443  , p_source_29 => l_array_source_29(Idx)
95444  , p_source_30 => l_array_source_30(Idx)
95445  , p_source_42 => l_array_source_42(Idx)
95446  , p_source_43 => l_array_source_43(Idx)
95447  , p_source_46 => l_array_source_46(Idx)
95448  , p_source_47 => l_array_source_47(Idx)
95449  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95450  , p_source_49 => l_array_source_49(Idx)
95451  , p_source_50 => l_array_source_50(Idx)
95452  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95453  );
95454 If(l_balance_type_code = 'A') THEN
95455   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95456 END IF;
95457 
95458 --
95459 
95460 
95461 --
95462 AcctLineType_147 (
95463  p_application_id  => p_application_id
95464  ,p_event_id     => l_event_id
95465  ,p_calculate_acctd_flag => l_calculate_acctd_flag
95466  ,p_calculate_g_l_flag => l_calculate_g_l_flag
95467  ,p_actual_flag => l_actual_flag
95468  ,p_balance_type_code => l_balance_type_code
95469  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
95470  
95471  , p_source_19 => l_array_source_19(Idx)
95472  , p_source_26 => l_array_source_26(Idx)
95473  , p_source_28 => l_array_source_28(Idx)
95474  , p_source_29 => l_array_source_29(Idx)
95475  , p_source_30 => l_array_source_30(Idx)
95476  , p_source_42 => l_array_source_42(Idx)
95477  , p_source_43 => l_array_source_43(Idx)
95478  , p_source_46 => l_array_source_46(Idx)
95479  , p_source_47 => l_array_source_47(Idx)
95480  , p_source_48 => g_array_event(l_event_id).array_value_char('source_48')
95481  , p_source_49 => l_array_source_49(Idx)
95482  , p_source_50 => l_array_source_50(Idx)
95483  , p_source_51 => g_array_event(l_event_id).array_value_num('source_51')
95484  );
95485 If(l_balance_type_code = 'A') THEN
95486   l_actual_gain_loss_ref := l_gain_or_loss_ref;
95487 END IF;
95488 
95489 --
95490 
95491       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
95492       -- or secondary ledger that has different currency with primary
95493       -- or alc that is calculated by sla
95494       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
95495             (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'))
95496 
95497 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
95498 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
95499           AND (l_actual_flag = 'A')) THEN
95500         XLA_AE_LINES_PKG.CreateGainOrLossLines(
95501           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
95502          ,p_application_id   => p_application_id
95503          ,p_amb_context_code => 'DEFAULT'
95504          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
95505          ,p_event_class_code => C_EVENT_CLASS_CODE
95506          ,p_event_type_code  => C_EVENT_TYPE_CODE
95507          
95508          ,p_gain_ccid        => g_array_event(l_event_id).array_value_num('source_77')
95509          ,p_loss_ccid        => g_array_event(l_event_id).array_value_num('source_78')
95510 
95511          ,p_actual_flag      => l_actual_flag
95512          ,p_enc_flag         => null
95513          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
95514          ,p_enc_g_l_ref      => null
95515          );
95516       END IF;
95517    END IF;
95518 END IF;
95519 
95520    ELSE
95521       --
95522       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
95523       --
95524       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
95525          trace
95526             (p_msg      => 'Trancaction revesal option is Y'
95527             ,p_level    => C_LEVEL_STATEMENT
95531 
95528             ,p_module   => l_log_module);
95529       END IF;
95530    END IF;
95532 END LOOP;
95533 l_result := XLA_AE_LINES_PKG.InsertLines ;
95534 end loop;
95535 close line_cur;
95536 
95537 
95538 --
95539 -- insert headers into xla_ae_headers_gt table
95540 --
95541 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
95542 
95543 -- insert into errors table here.
95544 
95545 END LOOP;
95546 
95547 --
95548 -- 4865292
95549 --
95550 -- Compare g_hdr_extract_count with event count in
95551 -- CreateHeadersAndLines.
95552 --
95553 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
95554 
95555 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
95556    trace (p_msg     => '# rows extracted from header extract objects '
95557                     || ' (running total): '
95558                     || g_hdr_extract_count
95559          ,p_level   => C_LEVEL_STATEMENT
95560          ,p_module  => l_log_module);
95561 END IF;
95562 
95563 CLOSE header_cur;
95564 --
95565 
95566 --
95567 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95568    trace
95569       (p_msg      => 'END of EventClass_162'
95570       ,p_level    => C_LEVEL_PROCEDURE
95571       ,p_module   => l_log_module);
95572 END IF;
95573 --
95574 RETURN l_result;
95575 EXCEPTION
95576 WHEN xla_exceptions_pkg.application_exception THEN
95577    
95578 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
95579 
95580    
95581 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
95582 
95583    RAISE;
95584 WHEN OTHERS THEN
95585    xla_exceptions_pkg.raise_message
95586       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_162');
95587 END EventClass_162;
95588 --
95589 
95590 ---------------------------------------
95591 --
95592 -- PRIVATE PROCEDURE
95593 --         insert_sources_163
95594 --
95595 ----------------------------------------
95596 --
95597 PROCEDURE insert_sources_163(
95598                                 p_target_ledger_id       IN NUMBER
95599                               , p_language               IN VARCHAR2
95600                               , p_sla_ledger_id          IN NUMBER
95601                               , p_pad_start_date         IN DATE
95602                               , p_pad_end_date           IN DATE
95603                          )
95604 IS
95605 
95606 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ADJ_ALL';
95607 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST_ADJ';
95608 p_apps_owner                   VARCHAR2(30);
95609 l_log_module                   VARCHAR2(240);
95610 BEGIN
95611 IF g_log_enabled THEN
95612       l_log_module := C_DEFAULT_MODULE||'.insert_sources_163';
95613 END IF;
95614 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95615 
95616       trace
95617          (p_msg      => 'BEGIN of insert_sources_163'
95618          ,p_level    => C_LEVEL_PROCEDURE
95619          ,p_module   => l_log_module);
95620 
95621 END IF;
95622 
95623 -- select APPS owner
95624 SELECT oracle_username
95625   INTO p_apps_owner
95626   FROM fnd_oracle_userid
95627  WHERE read_only_flag = 'U'
95628 ;
95629 
95630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
95631       trace
95632          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
95633                         ' - p_language = '||p_language||
95634                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
95635                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
95636                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
95637                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
95638          ,p_level    => C_LEVEL_STATEMENT
95639          ,p_module   => l_log_module);
95640 END IF;
95641 
95642 
95643 --
95644 INSERT INTO xla_diag_sources --hdr2
95645 (
95646         event_id
95647       , ledger_id
95648       , sla_ledger_id
95649       , description_language
95650       , object_name
95651       , object_type_code
95652       , line_number
95653       , source_application_id
95654       , source_type_code
95655       , source_code
95656       , source_value
95657       , source_meaning
95658       , created_by
95659       , creation_date
95660       , last_update_date
95661       , last_updated_by
95662       , last_update_login
95663       , program_update_date
95664       , program_application_id
95665       , program_id
95666       , request_id
95667 )
95668 SELECT
95669         event_id
95670       , p_target_ledger_id
95671       , p_sla_ledger_id
95672       , p_language
95673       , object_name
95674       , object_type_code
95675       , line_number
95676       , source_application_id
95677       , source_type_code
95678       , source_code
95679       , SUBSTR(source_value ,1,1996)
95680       , SUBSTR(source_meaning ,1,200)
95681       , xla_environment_pkg.g_Usr_Id
95682       , TRUNC(SYSDATE)
95683       , TRUNC(SYSDATE)
95684       , xla_environment_pkg.g_Usr_Id
95685       , xla_environment_pkg.g_Login_Id
95686       , TRUNC(SYSDATE)
95687       , xla_environment_pkg.g_Prog_Appl_Id
95688       , xla_environment_pkg.g_Prog_Id
95689       , xla_environment_pkg.g_Req_Id
95690   FROM (
95691        SELECT xet.event_id                  event_id
95692             , 0                          line_number
95693             , CASE r
95694                WHEN 1 THEN 'GMS_XLA_AWARD_REF_V' 
95695                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
95696                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
95697                 WHEN 4 THEN 'PA_XLA_EXP_HEADER_V' 
95698                 
95702                 WHEN 1 THEN 'HEADER' 
95699                ELSE null
95700               END                           object_name
95701             , CASE r
95703                 WHEN 2 THEN 'HEADER' 
95704                 WHEN 3 THEN 'HEADER' 
95705                 WHEN 4 THEN 'HEADER' 
95706                 
95707                 ELSE null
95708               END                           object_type_code
95709             , CASE r
95710                 WHEN 1 THEN '275' 
95711                 WHEN 2 THEN '275' 
95712                 WHEN 3 THEN '275' 
95713                 WHEN 4 THEN '275' 
95714                 
95715                 ELSE null
95716               END                           source_application_id
95717             , 'S'             source_type_code
95718             , CASE r
95719                 WHEN 1 THEN 'PO_DISTRIBUTION_ID' 
95720                 WHEN 2 THEN 'EXCHANGE_RATE_VARIANCE_FLAG' 
95721                 WHEN 3 THEN 'EXPENDITURE_ITEM_ID' 
95722                 WHEN 4 THEN 'GL_DATE' 
95723                 
95724                 ELSE null
95725               END                           source_code
95726             , CASE r
95727                 WHEN 1 THEN TO_CHAR(h1.PO_DISTRIBUTION_ID)
95728                 WHEN 2 THEN TO_CHAR(h3.EXCHANGE_RATE_VARIANCE_FLAG)
95729                 WHEN 3 THEN TO_CHAR(h3.EXPENDITURE_ITEM_ID)
95730                 WHEN 4 THEN TO_CHAR(h3.GL_DATE)
95731                 
95732                 ELSE null
95733               END                           source_value
95734             , CASE r
95735                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
95736                           103371
95737                          ,TO_CHAR(h3.EXCHANGE_RATE_VARIANCE_FLAG)
95738                          ,'EXCHANGE_RATE_VARIANCE_FLAG'
95739                          ,'S'
95740                          ,275)
95741                 
95742                 ELSE null
95743               END               source_meaning
95744          FROM xla_events_gt     xet  
95745       , GMS_XLA_AWARD_REF_V  h1
95746       , PA_XLA_EXP_HEADER_V  h3
95747              ,(select rownum r from all_objects where rownum <= 4 and owner = p_apps_owner)
95748          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
95749            AND xet.event_class_code = C_EVENT_CLASS_CODE
95750               AND h3.event_id = xet.event_id
95751  AND h1.expenditure_item_id (+) =h3.expenditure_item_id  and h1.document_type  (+) = 'exp'
95752 )
95753 ;
95754 --
95755 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
95756 
95757       trace
95758          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
95759          ,p_level    => C_LEVEL_STATEMENT
95760          ,p_module   => l_log_module);
95761 
95762 END IF;
95763 --
95764 
95765 
95766 
95767 --
95768 INSERT INTO xla_diag_sources  --line2
95769 (
95770         event_id
95771       , ledger_id
95772       , sla_ledger_id
95773       , description_language
95774       , object_name
95775       , object_type_code
95776       , line_number
95777       , source_application_id
95778       , source_type_code
95779       , source_code
95780       , source_value
95781       , source_meaning
95782       , created_by
95783       , creation_date
95784       , last_update_date
95785       , last_updated_by
95786       , last_update_login
95787       , program_update_date
95788       , program_application_id
95789       , program_id
95790       , request_id
95791 )
95792 SELECT  event_id
95793       , p_target_ledger_id
95794       , p_sla_ledger_id
95795       , p_language
95796       , object_name
95797       , object_type_code
95798       , line_number
95799       , source_application_id
95800       , source_type_code
95801       , source_code
95802       , SUBSTR(source_value,1,1996)
95803       , SUBSTR(source_meaning ,1,200)
95804       , xla_environment_pkg.g_Usr_Id
95805       , TRUNC(SYSDATE)
95806       , TRUNC(SYSDATE)
95807       , xla_environment_pkg.g_Usr_Id
95808       , xla_environment_pkg.g_Login_Id
95809       , TRUNC(SYSDATE)
95810       , xla_environment_pkg.g_Prog_Appl_Id
95811       , xla_environment_pkg.g_Prog_Id
95812       , xla_environment_pkg.g_Req_Id
95813   FROM (
95814        SELECT xet.event_id                  event_id
95815             , l2.line_number                 line_number
95816             , CASE r
95817                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
95818                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
95819                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
95820                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
95821                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
95822                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
95823                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
95824                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
95825                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
95826                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
95827                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
95828                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
95829                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
95830                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
95831                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
95832                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
95833                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
95834                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
95835                 
95836                ELSE null
95837               END                           object_name
95838             , CASE r
95839                 WHEN 1 THEN 'LINE' 
95840                 WHEN 2 THEN 'LINE' 
95841                 WHEN 3 THEN 'LINE' 
95842                 WHEN 4 THEN 'LINE' 
95843                 WHEN 5 THEN 'LINE' 
95844                 WHEN 6 THEN 'LINE' 
95848                 WHEN 10 THEN 'LINE' 
95845                 WHEN 7 THEN 'LINE' 
95846                 WHEN 8 THEN 'LINE' 
95847                 WHEN 9 THEN 'LINE' 
95849                 WHEN 11 THEN 'LINE' 
95850                 WHEN 12 THEN 'LINE' 
95851                 WHEN 13 THEN 'LINE' 
95852                 WHEN 14 THEN 'LINE' 
95853                 WHEN 15 THEN 'LINE' 
95854                 WHEN 16 THEN 'LINE' 
95855                 WHEN 17 THEN 'LINE' 
95856                 WHEN 18 THEN 'LINE' 
95857                 
95858                 ELSE null
95859               END                           object_type_code
95860             , CASE r
95861                 WHEN 1 THEN '275' 
95862                 WHEN 2 THEN '275' 
95863                 WHEN 3 THEN '275' 
95864                 WHEN 4 THEN '275' 
95865                 WHEN 5 THEN '275' 
95866                 WHEN 6 THEN '275' 
95867                 WHEN 7 THEN '275' 
95868                 WHEN 8 THEN '275' 
95869                 WHEN 9 THEN '275' 
95870                 WHEN 10 THEN '275' 
95871                 WHEN 11 THEN '275' 
95872                 WHEN 12 THEN '275' 
95873                 WHEN 13 THEN '275' 
95874                 WHEN 14 THEN '275' 
95875                 WHEN 15 THEN '275' 
95876                 WHEN 16 THEN '275' 
95877                 WHEN 17 THEN '275' 
95878                 WHEN 18 THEN '275' 
95879                 
95880                 ELSE null
95881               END                           source_application_id
95882             , 'S'             source_type_code
95883             , CASE r
95884                 WHEN 1 THEN 'COST_CCID' 
95885                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
95886                 WHEN 3 THEN 'ADJ_COST_CCID' 
95887                 WHEN 4 THEN 'COST_CLEARING_CCID' 
95888                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
95889                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
95890                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
95891                 WHEN 8 THEN 'ENTERED_RAW_COST' 
95892                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
95893                 WHEN 10 THEN 'ACCT_RAW_COST' 
95894                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
95895                 WHEN 12 THEN 'EXCHANGE_RATE' 
95896                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
95897                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
95898                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
95899                 WHEN 16 THEN 'LINE_NUMBER' 
95900                 WHEN 17 THEN 'LINE_TYPE' 
95901                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
95902                 
95903                 ELSE null
95904               END                           source_code
95905             , CASE r
95906                 WHEN 1 THEN TO_CHAR(l2.COST_CCID)
95907                 WHEN 2 THEN TO_CHAR(l2.ALLOW_OVERRIDE_CCID_FLAG)
95908                 WHEN 3 THEN TO_CHAR(l2.ADJ_COST_CCID)
95909                 WHEN 4 THEN TO_CHAR(l2.COST_CLEARING_CCID)
95910                 WHEN 5 THEN TO_CHAR(l2.ADJ_COST_CLEARING_CCID)
95911                 WHEN 6 THEN TO_CHAR(l2.REVERSING_LINE_FLAG)
95912                 WHEN 7 THEN TO_CHAR(l2.ACTUAL_UPG_CR_ACCT_CLASS)
95913                 WHEN 8 THEN TO_CHAR(l2.ENTERED_RAW_COST)
95914                 WHEN 9 THEN TO_CHAR(l2.ENTERED_CURRENCY_CODE)
95915                 WHEN 10 THEN TO_CHAR(l2.ACCT_RAW_COST)
95916                 WHEN 11 THEN TO_CHAR(l2.EXCHANGE_RATE_DATE)
95917                 WHEN 12 THEN TO_CHAR(l2.EXCHANGE_RATE)
95918                 WHEN 13 THEN TO_CHAR(l2.EXCHANGE_RATE_TYPE)
95919                 WHEN 14 THEN TO_CHAR(l2.ACTUAL_UPG_DR_ACCT_CLASS)
95920                 WHEN 15 THEN TO_CHAR(l2.USE_ACT_UPG_ATTRIB_FLAG)
95921                 WHEN 16 THEN TO_CHAR(l2.LINE_NUMBER)
95922                 WHEN 17 THEN TO_CHAR(l2.LINE_TYPE)
95923                 WHEN 18 THEN TO_CHAR(l2.LINE_NUM_REVERSED)
95924                 
95925                 ELSE null
95926               END                           source_value
95927             , CASE r
95928                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
95929                           103371
95930                          ,TO_CHAR(l2.ALLOW_OVERRIDE_CCID_FLAG)
95931                          ,'ALLOW_OVERRIDE_CCID_FLAG'
95932                          ,'S'
95933                          ,275)
95934                 WHEN 17 THEN fvl35.meaning
95935                 
95936                 ELSE null
95937               END               source_meaning
95938          FROM  xla_events_gt     xet  
95939         , PA_XLA_CDL_LINES_V  l2
95940   , fnd_lookup_values    fvl35
95941             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
95942         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
95943           AND xet.event_class_code = C_EVENT_CLASS_CODE
95944             AND l2.event_id          = xet.event_id
95945    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
95946   AND fvl35.lookup_code(+)         = l2.LINE_TYPE
95947   AND fvl35.view_application_id(+) = 275
95948   AND fvl35.language(+)            = USERENV('LANG')
95949   
95950 )
95951 ;
95952 --
95953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
95954 
95955       trace
95956          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
95957          ,p_level    => C_LEVEL_STATEMENT
95958          ,p_module   => l_log_module);
95959 
95960 END IF;
95961 
95962 
95963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
95964       trace
95965          (p_msg      => 'END of insert_sources_163'
95966          ,p_level    => C_LEVEL_PROCEDURE
95967          ,p_module   => l_log_module);
95968 END IF;
95969 EXCEPTION
95970   WHEN xla_exceptions_pkg.application_exception THEN
95971       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
95972             trace
95973                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
95977       RAISE;
95974                ,p_level    => C_LEVEL_EXCEPTION
95975                ,p_module   => l_log_module);
95976       END IF;
95978   WHEN OTHERS THEN
95979       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
95980             trace
95981                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
95982                ,p_level    => C_LEVEL_EXCEPTION
95983                ,p_module   => l_log_module);
95984        END IF;
95985        xla_exceptions_pkg.raise_message
95986            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_163');
95987 END insert_sources_163;
95988 --
95989 
95990 ---------------------------------------
95991 --
95992 -- PRIVATE FUNCTION
95993 --         EventClass_163
95994 --
95995 ----------------------------------------
95996 --
95997 FUNCTION EventClass_163
95998        (p_application_id         IN NUMBER
95999        ,p_base_ledger_id         IN NUMBER
96000        ,p_target_ledger_id       IN NUMBER
96001        ,p_language               IN VARCHAR2
96002        ,p_currency_code          IN VARCHAR2
96003        ,p_sla_ledger_id          IN NUMBER
96004        ,p_pad_start_date         IN DATE
96005        ,p_pad_end_date           IN DATE
96006        ,p_primary_ledger_id      IN NUMBER)
96007 RETURN BOOLEAN IS
96008 --
96009 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ADJ_ALL';
96010 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST_ADJ';
96011 
96012 l_calculate_acctd_flag   VARCHAR2(1) :='N';
96013 l_calculate_g_l_flag     VARCHAR2(1) :='N';
96014 --
96015 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96016 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96017 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
96018 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
96019 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96020 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
96021 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
96022 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96023 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
96024 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
96025 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96026 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96027 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96028 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
96029 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
96030 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
96031 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
96032 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
96033 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
96034 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
96035 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
96036 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
96037 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
96038 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
96039 
96040 l_event_id                             NUMBER;
96041 l_previous_event_id                    NUMBER;
96042 l_first_event_id                       NUMBER;
96043 l_last_event_id                        NUMBER;
96044 
96045 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
96046 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
96047 --
96048 --
96049 l_result                    BOOLEAN := TRUE;
96050 l_rows                      NUMBER  := 1000;
96051 l_event_type_name           VARCHAR2(80) := 'All';
96052 l_event_class_name          VARCHAR2(80) := 'Supplier Cost Adjustment';
96053 l_description               VARCHAR2(4000);
96054 l_transaction_reversal      NUMBER;
96055 l_ae_header_id              NUMBER;
96056 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
96057 l_log_module                VARCHAR2(240);
96058 --
96059 l_acct_reversal_source      VARCHAR2(30);
96060 l_trx_reversal_source       VARCHAR2(30);
96061 
96062 l_continue_with_lines       BOOLEAN := TRUE;
96063 --
96064 l_acc_rev_gl_date_source    DATE;                      -- 4262811
96065 --
96066 type t_array_event_id is table of number index by binary_integer;
96067 
96068 l_rec_array_event                    t_rec_array_event;
96069 l_null_rec_array_event               t_rec_array_event;
96070 l_array_ae_header_id                 xla_number_array_type;
96071 l_actual_flag                        VARCHAR2(1) := NULL;
96072 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
96073 l_balance_type_code                  VARCHAR2(1) :=NULL;
96074 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
96075 
96076 --
96077 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
96078 --
96079 
96080 TYPE t_array_source_2 IS TABLE OF GMS_XLA_AWARD_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
96081 TYPE t_array_source_22 IS TABLE OF PA_XLA_EXP_HEADER_V.EXCHANGE_RATE_VARIANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
96082 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
96083 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
96084 
96085 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
96086 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
96090 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
96087 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
96088 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
96089 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
96091 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
96092 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
96093 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
96094 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
96095 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
96096 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
96097 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
96098 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
96099 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
96100 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
96101 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
96102 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
96103 
96104 l_array_source_2              t_array_source_2;
96105 l_array_source_22              t_array_source_22;
96106 l_array_source_33              t_array_source_33;
96107 l_array_source_75              t_array_source_75;
96108 
96109 l_array_source_4      t_array_source_4;
96110 l_array_source_5      t_array_source_5;
96111 l_array_source_6      t_array_source_6;
96112 l_array_source_7      t_array_source_7;
96113 l_array_source_8      t_array_source_8;
96114 l_array_source_23      t_array_source_23;
96115 l_array_source_24      t_array_source_24;
96116 l_array_source_25      t_array_source_25;
96117 l_array_source_26      t_array_source_26;
96118 l_array_source_27      t_array_source_27;
96119 l_array_source_28      t_array_source_28;
96120 l_array_source_29      t_array_source_29;
96121 l_array_source_30      t_array_source_30;
96122 l_array_source_31      t_array_source_31;
96123 l_array_source_32      t_array_source_32;
96124 l_array_source_34      t_array_source_34;
96125 l_array_source_35      t_array_source_35;
96126 l_array_source_35_meaning      t_array_lookup_meaning;
96127 l_array_source_36      t_array_source_36;
96128 
96129 --
96130 CURSOR header_cur
96131 IS
96132 SELECT /*+ leading(xet) cardinality(xet,1) */
96133 -- Event Class Code: SUPPLIER_COST_ADJ
96134     xet.entity_id
96135    ,xet.legal_entity_id
96136    ,xet.entity_code
96137    ,xet.transaction_number
96138    ,xet.event_id
96139    ,xet.event_class_code
96140    ,xet.event_type_code
96141    ,xet.event_number
96142    ,xet.event_date
96143    ,xet.transaction_date
96144    ,xet.reference_num_1
96145    ,xet.reference_num_2
96146    ,xet.reference_num_3
96147    ,xet.reference_num_4
96148    ,xet.reference_char_1
96149    ,xet.reference_char_2
96150    ,xet.reference_char_3
96151    ,xet.reference_char_4
96152    ,xet.reference_date_1
96153    ,xet.reference_date_2
96154    ,xet.reference_date_3
96155    ,xet.reference_date_4
96156    ,xet.event_created_by
96157    ,xet.budgetary_control_flag 
96158   , h1.PO_DISTRIBUTION_ID    source_2
96159   , h3.EXCHANGE_RATE_VARIANCE_FLAG    source_22
96160   , h3.EXPENDITURE_ITEM_ID    source_33
96161   , h3.GL_DATE    source_75
96162   FROM xla_events_gt     xet 
96163   , GMS_XLA_AWARD_REF_V  h1
96164   , PA_XLA_EXP_HEADER_V  h3
96165  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
96166    and xet.event_class_code = C_EVENT_CLASS_CODE
96167    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
96168  AND h1.expenditure_item_id (+) =h3.expenditure_item_id  AND h1.document_type  (+) = 'EXP'
96169  ORDER BY event_id
96170 ;
96171 
96172 
96173 --
96174 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
96175 IS
96176 SELECT  /*+ leading(xet) cardinality(xet,1) */
96177 -- Event Class Code: SUPPLIER_COST_ADJ
96178     xet.entity_id
96179    ,xet.legal_entity_id
96180    ,xet.entity_code
96181    ,xet.transaction_number
96182    ,xet.event_id
96183    ,xet.event_class_code
96184    ,xet.event_type_code
96185    ,xet.event_number
96186    ,xet.event_date
96187    ,xet.transaction_date
96188    ,xet.reference_num_1
96189    ,xet.reference_num_2
96190    ,xet.reference_num_3
96191    ,xet.reference_num_4
96192    ,xet.reference_char_1
96193    ,xet.reference_char_2
96194    ,xet.reference_char_3
96195    ,xet.reference_char_4
96196    ,xet.reference_date_1
96197    ,xet.reference_date_2
96198    ,xet.reference_date_3
96199    ,xet.reference_date_4
96200    ,xet.event_created_by
96201    ,xet.budgetary_control_flag
96202  , l2.LINE_NUMBER  
96203   , l2.COST_CCID    source_4
96204   , l2.ALLOW_OVERRIDE_CCID_FLAG    source_5
96205   , l2.ADJ_COST_CCID    source_6
96206   , l2.COST_CLEARING_CCID    source_7
96207   , l2.ADJ_COST_CLEARING_CCID    source_8
96208   , l2.REVERSING_LINE_FLAG    source_23
96209   , l2.ACTUAL_UPG_CR_ACCT_CLASS    source_24
96210   , l2.ENTERED_RAW_COST    source_25
96211   , l2.ENTERED_CURRENCY_CODE    source_26
96212   , l2.ACCT_RAW_COST    source_27
96213   , l2.EXCHANGE_RATE_DATE    source_28
96214   , l2.EXCHANGE_RATE    source_29
96215   , l2.EXCHANGE_RATE_TYPE    source_30
96216   , l2.ACTUAL_UPG_DR_ACCT_CLASS    source_31
96220   , fvl35.meaning   source_35_meaning
96217   , l2.USE_ACT_UPG_ATTRIB_FLAG    source_32
96218   , l2.LINE_NUMBER    source_34
96219   , l2.LINE_TYPE    source_35
96221   , l2.LINE_NUM_REVERSED    source_36
96222   FROM xla_events_gt     xet 
96223   , PA_XLA_CDL_LINES_V  l2
96224   , fnd_lookup_values    fvl35
96225  WHERE xet.event_id between x_first_event_id and x_last_event_id
96226    and xet.event_date between p_pad_start_date and p_pad_end_date
96227    and xet.event_class_code = C_EVENT_CLASS_CODE
96228    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
96229    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
96230   AND fvl35.lookup_code(+)         = l2.LINE_TYPE
96231   AND fvl35.view_application_id(+) = 275
96232   AND fvl35.language(+)            = USERENV('LANG')
96233   ;
96234 
96235 --
96236 BEGIN
96237 IF g_log_enabled THEN
96238    l_log_module := C_DEFAULT_MODULE||'.EventClass_163';
96239 END IF;
96240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
96241    trace
96242       (p_msg      => 'BEGIN of EventClass_163'
96243       ,p_level    => C_LEVEL_PROCEDURE
96244       ,p_module   => l_log_module);
96245 END IF;
96246 
96247 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
96248    trace
96249       (p_msg      => 'p_application_id = '||p_application_id||
96250                      ' - p_base_ledger_id = '||p_base_ledger_id||
96251                      ' - p_target_ledger_id  = '||p_target_ledger_id||
96252                      ' - p_language = '||p_language||
96253                      ' - p_currency_code = '||p_currency_code||
96254                      ' - p_sla_ledger_id = '||p_sla_ledger_id
96255       ,p_level    => C_LEVEL_STATEMENT
96256       ,p_module   => l_log_module);
96257 END IF;
96258 --
96259 -- initialze arrays
96260 --
96261 g_array_event.DELETE;
96262 l_rec_array_event := l_null_rec_array_event;
96263 --
96264 --------------------------------------
96265 -- 4262811 Initialze MPA Line Number
96266 --------------------------------------
96267 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
96268 
96269 --
96270 
96271 --
96272 OPEN header_cur;
96273 --
96274 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
96275    trace
96276    (p_msg      => 'SQL - FETCH header_cur'
96277    ,p_level    => C_LEVEL_STATEMENT
96278    ,p_module   => l_log_module);
96279 END IF;
96280 --
96281 LOOP
96282 FETCH header_cur BULK COLLECT INTO
96283         l_array_entity_id
96284       , l_array_legal_entity_id
96285       , l_array_entity_code
96286       , l_array_transaction_num
96287       , l_array_event_id
96288       , l_array_class_code
96289       , l_array_event_type
96290       , l_array_event_number
96291       , l_array_event_date
96292       , l_array_transaction_date
96293       , l_array_reference_num_1
96294       , l_array_reference_num_2
96295       , l_array_reference_num_3
96296       , l_array_reference_num_4
96297       , l_array_reference_char_1
96298       , l_array_reference_char_2
96299       , l_array_reference_char_3
96300       , l_array_reference_char_4
96301       , l_array_reference_date_1
96302       , l_array_reference_date_2
96303       , l_array_reference_date_3
96304       , l_array_reference_date_4
96305       , l_array_event_created_by
96306       , l_array_budgetary_control_flag 
96307       , l_array_source_2
96308       , l_array_source_22
96309       , l_array_source_33
96310       , l_array_source_75
96311       LIMIT l_rows;
96312 --
96313 IF (C_LEVEL_EVENT >= g_log_level) THEN
96314    trace
96315    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
96316    ,p_level    => C_LEVEL_EVENT
96317    ,p_module   => l_log_module);
96318 END IF;
96319 --
96320 EXIT WHEN l_array_entity_id.COUNT = 0;
96321 
96322 -- initialize arrays
96323 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
96324 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
96325 
96326 --
96327 -- Bug 4458708
96328 --
96329 XLA_AE_LINES_PKG.g_LineNumber := 0;
96330 
96331 
96332 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
96333 g_last_hdr_idx := l_array_event_id.LAST;
96334 --
96335 -- loop for the headers. Each iteration is for each header extract row
96336 -- fetched in header cursor
96337 --
96338 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
96339 
96340 --
96341 -- set event info as cache for other routines to refer event attributes
96342 --
96343 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
96344    (p_application_id           => p_application_id
96345    ,p_primary_ledger_id        => p_primary_ledger_id
96346    ,p_base_ledger_id           => p_base_ledger_id
96347    ,p_target_ledger_id         => p_target_ledger_id
96348    ,p_entity_id                => l_array_entity_id(hdr_idx)
96349    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
96350    ,p_entity_code              => l_array_entity_code(hdr_idx)
96351    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
96352    ,p_event_id                 => l_array_event_id(hdr_idx)
96353    ,p_event_class_code         => l_array_class_code(hdr_idx)
96354    ,p_event_type_code          => l_array_event_type(hdr_idx)
96355    ,p_event_number             => l_array_event_number(hdr_idx)
96356    ,p_event_date               => l_array_event_date(hdr_idx)
96357    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
96358    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
96359    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
96360    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
96361    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
96365    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
96362    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
96363    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
96364    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
96366    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
96367    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
96368    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
96369    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
96370    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
96371    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
96372 
96373 --
96374 -- set the status of entry to C_VALID (0)
96375 --
96376 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
96377 
96378 --
96379 -- initialize a row for ae header
96380 --
96381 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
96382 
96383 l_event_id := l_array_event_id(hdr_idx);
96384 
96385 --
96386 -- storing the hdr_idx for event. May be used by line cursor.
96387 --
96388 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
96389 
96390 --
96391 -- store sources from header extract. This can be improved to
96392 -- store only those sources from header extract that may be used in lines
96393 --
96394 
96395 g_array_event(l_event_id).array_value_num('source_2') := l_array_source_2(hdr_idx);
96396 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
96397 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
96398 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
96399 
96400 --
96401 -- initilaize the status of ae headers for diffrent balance types
96402 -- the status is initialised to C_NOT_CREATED (2)
96403 --
96404 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
96405 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
96406 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
96407 
96408 --
96409 -- call api to validate and store accounting attributes for header
96410 --
96411 
96412 ------------------------------------------------------------
96413 -- Accrual Reversal : to get date for Standard Source (NONE)
96414 ------------------------------------------------------------
96415 l_acc_rev_gl_date_source := NULL;
96416 
96417      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
96418       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
96419 
96420 
96421 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
96422 
96423 XLA_AE_HEADER_PKG.SetJeCategoryName;
96424 
96425 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
96426 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
96427 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
96428 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
96429 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
96430 
96431 
96432 -- No header level analytical criteria
96433 
96434 --
96435 --accounting attribute enhancement, bug 3612931
96436 --
96437 l_trx_reversal_source := SUBSTR(NULL, 1,30);
96438 
96439 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
96440    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
96441 
96442    xla_accounting_err_pkg.build_message
96443       (p_appli_s_name            => 'XLA'
96444       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
96445       ,p_token_1                 => 'ACCT_ATTR_NAME'
96446       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
96447       ,p_token_2                 => 'PRODUCT_NAME'
96448       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
96449       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
96450       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
96451       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
96452 
96453 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
96454    --
96455    -- following sets the accounting attributes needed to reverse
96456    -- accounting for a distributeion
96457    --
96458    xla_ae_lines_pkg.SetTrxReversalAttrs
96459       (p_event_id              => l_event_id
96460       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
96461       ,p_trx_reversal_source   => l_trx_reversal_source);
96462 
96463 END IF;
96464 
96465 
96466 ----------------------------------------------------------------
96467 -- 4262811 -  update the header statuses to invalid in need be
96468 ----------------------------------------------------------------
96469 --
96470 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
96471 
96472 
96473   -----------------------------------------------
96474   -- No accrual reversal for the event class/type
96475   -----------------------------------------------
96476 ----------------------------------------------------------------
96477 
96478 --
96479 -- this ends the header loop iteration for one bulk fetch
96480 --
96481 END LOOP;
96482 
96483 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
96484 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
96485 
96486 --
96487 -- insert dummy rows into lines gt table that were created due to
96488 -- transaction reversals
96492 END IF;
96489 --
96490 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
96491    l_result := XLA_AE_LINES_PKG.InsertLines;
96493 
96494 --
96495 -- reset the temp_line_num for each set of events fetched from header
96496 -- cursor rather than doing it for each new event in line cursor
96497 -- Bug 3939231
96498 --
96499 xla_ae_lines_pkg.g_temp_line_num := 0;
96500 
96501 
96502 
96503 --
96504 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
96505 --
96506 --
96507 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
96508 
96509       trace
96510          (p_msg      => 'SQL - FETCH line_cur'
96511          ,p_level    => C_LEVEL_STATEMENT
96512          ,p_module   => l_log_module);
96513 
96514 END IF;
96515 --
96516 --
96517 LOOP
96518   --
96519   FETCH line_cur BULK COLLECT INTO
96520         l_array_entity_id
96521       , l_array_legal_entity_id
96522       , l_array_entity_code
96523       , l_array_transaction_num
96524       , l_array_event_id
96525       , l_array_class_code
96526       , l_array_event_type
96527       , l_array_event_number
96528       , l_array_event_date
96529       , l_array_transaction_date
96530       , l_array_reference_num_1
96531       , l_array_reference_num_2
96532       , l_array_reference_num_3
96533       , l_array_reference_num_4
96534       , l_array_reference_char_1
96535       , l_array_reference_char_2
96536       , l_array_reference_char_3
96537       , l_array_reference_char_4
96538       , l_array_reference_date_1
96539       , l_array_reference_date_2
96540       , l_array_reference_date_3
96541       , l_array_reference_date_4
96542       , l_array_event_created_by
96543       , l_array_budgetary_control_flag
96544       , l_array_extract_line_num 
96545       , l_array_source_4
96546       , l_array_source_5
96547       , l_array_source_6
96548       , l_array_source_7
96549       , l_array_source_8
96550       , l_array_source_23
96551       , l_array_source_24
96552       , l_array_source_25
96553       , l_array_source_26
96554       , l_array_source_27
96555       , l_array_source_28
96556       , l_array_source_29
96557       , l_array_source_30
96558       , l_array_source_31
96559       , l_array_source_32
96560       , l_array_source_34
96561       , l_array_source_35
96562       , l_array_source_35_meaning
96563       , l_array_source_36
96564       LIMIT l_rows;
96565 
96566   --
96567   IF (C_LEVEL_EVENT >= g_log_level) THEN
96568             trace
96569                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
96570                ,p_level    => C_LEVEL_EVENT
96571                ,p_module   => l_log_module);
96572   END IF;
96573   --
96574   EXIT WHEN l_array_entity_id.count = 0;
96575 
96576   XLA_AE_LINES_PKG.g_rec_lines := null;
96577 
96578 --
96579 -- Bug 4458708
96580 --
96581 XLA_AE_LINES_PKG.g_LineNumber := 0;
96582 --
96583 --
96584 
96585 FOR Idx IN 1..l_array_event_id.count LOOP
96586    --
96587    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
96588    --
96589    l_event_id := l_array_event_id(idx);  -- 5648433
96590 
96591    --
96592    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
96593    --
96594 
96595    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
96596              (g_array_event(l_event_id).array_value_num('header_index'))
96597          ,'N'
96598          ) <> 'Y'
96599    THEN
96600       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
96601          trace
96602             (p_msg      => 'Trancaction revesal option is not Y '
96603             ,p_level    => C_LEVEL_STATEMENT
96604             ,p_module   => l_log_module);
96605       END IF;
96606 
96607 --
96608 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
96609 --
96610 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
96611 --
96612 -- set event info as cache for other routines to refer event attributes
96613 --
96614 
96615 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
96616    l_previous_event_id := l_event_id;
96617 
96618    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
96619       (p_application_id           => p_application_id
96620       ,p_primary_ledger_id        => p_primary_ledger_id
96621       ,p_base_ledger_id           => p_base_ledger_id
96622       ,p_target_ledger_id         => p_target_ledger_id
96623       ,p_entity_id                => l_array_entity_id(Idx)
96624       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
96625       ,p_entity_code              => l_array_entity_code(Idx)
96626       ,p_transaction_num          => l_array_transaction_num(Idx)
96627       ,p_event_id                 => l_array_event_id(Idx)
96628       ,p_event_class_code         => l_array_class_code(Idx)
96629       ,p_event_type_code          => l_array_event_type(Idx)
96630       ,p_event_number             => l_array_event_number(Idx)
96631       ,p_event_date               => l_array_event_date(Idx)
96632       ,p_transaction_date         => l_array_transaction_date(Idx)
96633       ,p_reference_num_1          => l_array_reference_num_1(Idx)
96634       ,p_reference_num_2          => l_array_reference_num_2(Idx)
96635       ,p_reference_num_3          => l_array_reference_num_3(Idx)
96636       ,p_reference_num_4          => l_array_reference_num_4(Idx)
96637       ,p_reference_char_1         => l_array_reference_char_1(Idx)
96638       ,p_reference_char_2         => l_array_reference_char_2(Idx)
96639       ,p_reference_char_3         => l_array_reference_char_3(Idx)
96640       ,p_reference_char_4         => l_array_reference_char_4(Idx)
96644       ,p_reference_date_4         => l_array_reference_date_4(Idx)
96641       ,p_reference_date_1         => l_array_reference_date_1(Idx)
96642       ,p_reference_date_2         => l_array_reference_date_2(Idx)
96643       ,p_reference_date_3         => l_array_reference_date_3(Idx)
96645       ,p_event_created_by         => l_array_event_created_by(Idx)
96646       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
96647        --
96648 END IF;
96649 
96650 
96651 
96652 --
96653 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
96654 
96655 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
96656 
96657 IF l_continue_with_lines THEN
96658    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
96659       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
96660 
96661       xla_accounting_err_pkg.build_message
96662          (p_appli_s_name            => 'XLA'
96663          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
96664          ,p_token_1                 => 'LINE_NUMBER'
96665          ,p_value_1                 => l_array_extract_line_num(Idx)
96666          ,p_token_2                 => 'PRODUCT_NAME'
96667          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
96668          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
96669          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
96670          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
96671 
96672    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
96673       --
96674       -- following sets the accounting attributes needed to reverse
96675       -- accounting for a distributeion
96676       --
96677 
96678       --
96679       -- 5217187
96680       --
96681       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
96682       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
96683                                        g_array_event(l_event_id).array_value_num('header_index'));
96684       --
96685       --
96686 
96687       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
96688       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
96689       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
96690       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
96691       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
96692       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
96693       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
96694       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
96695       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
96696       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
96697       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
96698       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
96699       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
96700       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
96701       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
96702       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
96703       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
96704       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
96705       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
96706       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
96707       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
96708       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
96709       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
96710       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
96711       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
96712       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
96713       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
96714       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
96715       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
96716       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
96717       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
96718       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
96719       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
96720       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
96721       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
96722       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
96723       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
96724       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
96725       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
96726       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
96727       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
96728       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
96729       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
96730       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
96731       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
96732       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
96733       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
96737       xla_ae_lines_pkg.SetAcctReversalAttrs
96734       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
96735 
96736 
96738          (p_event_id             => l_event_id
96739          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
96740          ,p_calculate_acctd_flag => l_calculate_acctd_flag
96741          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
96742    END IF;
96743 
96744    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
96745        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
96746 
96747 --
96748 AcctLineType_30 (
96749  p_application_id  => p_application_id
96750  ,p_event_id     => l_event_id
96751  ,p_calculate_acctd_flag => l_calculate_acctd_flag
96752  ,p_calculate_g_l_flag => l_calculate_g_l_flag
96753  ,p_actual_flag => l_actual_flag
96754  ,p_balance_type_code => l_balance_type_code
96755  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
96756  
96757  , p_source_4 => l_array_source_4(Idx)
96758  , p_source_5 => l_array_source_5(Idx)
96759  , p_source_6 => l_array_source_6(Idx)
96760  , p_source_7 => l_array_source_7(Idx)
96761  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
96762  , p_source_23 => l_array_source_23(Idx)
96763  , p_source_24 => l_array_source_24(Idx)
96764  , p_source_25 => l_array_source_25(Idx)
96765  , p_source_26 => l_array_source_26(Idx)
96766  , p_source_27 => l_array_source_27(Idx)
96767  , p_source_28 => l_array_source_28(Idx)
96768  , p_source_29 => l_array_source_29(Idx)
96769  , p_source_30 => l_array_source_30(Idx)
96770  , p_source_31 => l_array_source_31(Idx)
96771  , p_source_32 => l_array_source_32(Idx)
96772  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
96773  , p_source_34 => l_array_source_34(Idx)
96774  , p_source_35 => l_array_source_35(Idx)
96775  , p_source_35_meaning => l_array_source_35_meaning(Idx)
96776  , p_source_36 => l_array_source_36(Idx)
96777  );
96778 If(l_balance_type_code = 'A') THEN
96779   l_actual_gain_loss_ref := l_gain_or_loss_ref;
96780 END IF;
96781 
96782 --
96783 
96784 
96785 --
96786 AcctLineType_31 (
96787  p_application_id  => p_application_id
96788  ,p_event_id     => l_event_id
96789  ,p_calculate_acctd_flag => l_calculate_acctd_flag
96790  ,p_calculate_g_l_flag => l_calculate_g_l_flag
96791  ,p_actual_flag => l_actual_flag
96792  ,p_balance_type_code => l_balance_type_code
96793  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
96794  
96795  , p_source_4 => l_array_source_4(Idx)
96796  , p_source_5 => l_array_source_5(Idx)
96797  , p_source_7 => l_array_source_7(Idx)
96798  , p_source_8 => l_array_source_8(Idx)
96799  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
96800  , p_source_23 => l_array_source_23(Idx)
96801  , p_source_24 => l_array_source_24(Idx)
96802  , p_source_25 => l_array_source_25(Idx)
96803  , p_source_26 => l_array_source_26(Idx)
96804  , p_source_27 => l_array_source_27(Idx)
96805  , p_source_28 => l_array_source_28(Idx)
96806  , p_source_29 => l_array_source_29(Idx)
96807  , p_source_30 => l_array_source_30(Idx)
96808  , p_source_31 => l_array_source_31(Idx)
96809  , p_source_32 => l_array_source_32(Idx)
96810  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
96811  , p_source_34 => l_array_source_34(Idx)
96812  , p_source_35 => l_array_source_35(Idx)
96813  , p_source_35_meaning => l_array_source_35_meaning(Idx)
96814  , p_source_36 => l_array_source_36(Idx)
96815  );
96816 If(l_balance_type_code = 'A') THEN
96817   l_actual_gain_loss_ref := l_gain_or_loss_ref;
96818 END IF;
96819 
96820 --
96821 
96822 
96823 --
96824 AcctLineType_56 (
96825  p_application_id  => p_application_id
96826  ,p_event_id     => l_event_id
96827  ,p_calculate_acctd_flag => l_calculate_acctd_flag
96828  ,p_calculate_g_l_flag => l_calculate_g_l_flag
96829  ,p_actual_flag => l_actual_flag
96830  ,p_balance_type_code => l_balance_type_code
96831  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
96832  
96833  , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
96834  , p_source_4 => l_array_source_4(Idx)
96835  , p_source_5 => l_array_source_5(Idx)
96836  , p_source_6 => l_array_source_6(Idx)
96837  , p_source_7 => l_array_source_7(Idx)
96838  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
96839  , p_source_23 => l_array_source_23(Idx)
96840  , p_source_24 => l_array_source_24(Idx)
96841  , p_source_25 => l_array_source_25(Idx)
96842  , p_source_26 => l_array_source_26(Idx)
96843  , p_source_27 => l_array_source_27(Idx)
96844  , p_source_28 => l_array_source_28(Idx)
96845  , p_source_29 => l_array_source_29(Idx)
96846  , p_source_30 => l_array_source_30(Idx)
96847  , p_source_31 => l_array_source_31(Idx)
96848  , p_source_32 => l_array_source_32(Idx)
96849  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
96850  , p_source_34 => l_array_source_34(Idx)
96851  , p_source_35 => l_array_source_35(Idx)
96852  , p_source_35_meaning => l_array_source_35_meaning(Idx)
96853  , p_source_36 => l_array_source_36(Idx)
96854  );
96855 If(l_balance_type_code = 'A') THEN
96856   l_actual_gain_loss_ref := l_gain_or_loss_ref;
96857 END IF;
96858 
96859 --
96860 
96861 
96862 --
96863 AcctLineType_58 (
96864  p_application_id  => p_application_id
96865  ,p_event_id     => l_event_id
96866  ,p_calculate_acctd_flag => l_calculate_acctd_flag
96867  ,p_calculate_g_l_flag => l_calculate_g_l_flag
96868  ,p_actual_flag => l_actual_flag
96869  ,p_balance_type_code => l_balance_type_code
96870  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
96871  
96872  , p_source_4 => l_array_source_4(Idx)
96873  , p_source_5 => l_array_source_5(Idx)
96874  , p_source_7 => l_array_source_7(Idx)
96875  , p_source_8 => l_array_source_8(Idx)
96879  , p_source_25 => l_array_source_25(Idx)
96876  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
96877  , p_source_23 => l_array_source_23(Idx)
96878  , p_source_24 => l_array_source_24(Idx)
96880  , p_source_26 => l_array_source_26(Idx)
96881  , p_source_27 => l_array_source_27(Idx)
96882  , p_source_28 => l_array_source_28(Idx)
96883  , p_source_29 => l_array_source_29(Idx)
96884  , p_source_30 => l_array_source_30(Idx)
96885  , p_source_31 => l_array_source_31(Idx)
96886  , p_source_32 => l_array_source_32(Idx)
96887  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
96888  , p_source_34 => l_array_source_34(Idx)
96889  , p_source_35 => l_array_source_35(Idx)
96890  , p_source_35_meaning => l_array_source_35_meaning(Idx)
96891  , p_source_36 => l_array_source_36(Idx)
96892  );
96893 If(l_balance_type_code = 'A') THEN
96894   l_actual_gain_loss_ref := l_gain_or_loss_ref;
96895 END IF;
96896 
96897 --
96898 
96899 
96900 --
96901 AcctLineType_77 (
96902  p_application_id  => p_application_id
96903  ,p_event_id     => l_event_id
96904  ,p_calculate_acctd_flag => l_calculate_acctd_flag
96905  ,p_calculate_g_l_flag => l_calculate_g_l_flag
96906  ,p_actual_flag => l_actual_flag
96907  ,p_balance_type_code => l_balance_type_code
96908  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
96909  
96910  , p_source_4 => l_array_source_4(Idx)
96911  , p_source_5 => l_array_source_5(Idx)
96912  , p_source_6 => l_array_source_6(Idx)
96913  , p_source_7 => l_array_source_7(Idx)
96914  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
96915  , p_source_23 => l_array_source_23(Idx)
96916  , p_source_24 => l_array_source_24(Idx)
96917  , p_source_25 => l_array_source_25(Idx)
96918  , p_source_26 => l_array_source_26(Idx)
96919  , p_source_27 => l_array_source_27(Idx)
96920  , p_source_28 => l_array_source_28(Idx)
96921  , p_source_29 => l_array_source_29(Idx)
96922  , p_source_30 => l_array_source_30(Idx)
96923  , p_source_31 => l_array_source_31(Idx)
96924  , p_source_32 => l_array_source_32(Idx)
96925  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
96926  , p_source_34 => l_array_source_34(Idx)
96927  , p_source_35 => l_array_source_35(Idx)
96928  , p_source_35_meaning => l_array_source_35_meaning(Idx)
96929  , p_source_36 => l_array_source_36(Idx)
96930  );
96931 If(l_balance_type_code = 'A') THEN
96932   l_actual_gain_loss_ref := l_gain_or_loss_ref;
96933 END IF;
96934 
96935 --
96936 
96937 
96938 --
96939 AcctLineType_78 (
96940  p_application_id  => p_application_id
96941  ,p_event_id     => l_event_id
96942  ,p_calculate_acctd_flag => l_calculate_acctd_flag
96943  ,p_calculate_g_l_flag => l_calculate_g_l_flag
96944  ,p_actual_flag => l_actual_flag
96945  ,p_balance_type_code => l_balance_type_code
96946  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
96947  
96948  , p_source_4 => l_array_source_4(Idx)
96949  , p_source_5 => l_array_source_5(Idx)
96950  , p_source_7 => l_array_source_7(Idx)
96951  , p_source_8 => l_array_source_8(Idx)
96952  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
96953  , p_source_23 => l_array_source_23(Idx)
96954  , p_source_24 => l_array_source_24(Idx)
96955  , p_source_25 => l_array_source_25(Idx)
96956  , p_source_26 => l_array_source_26(Idx)
96957  , p_source_27 => l_array_source_27(Idx)
96958  , p_source_28 => l_array_source_28(Idx)
96959  , p_source_29 => l_array_source_29(Idx)
96960  , p_source_30 => l_array_source_30(Idx)
96961  , p_source_31 => l_array_source_31(Idx)
96962  , p_source_32 => l_array_source_32(Idx)
96963  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
96964  , p_source_34 => l_array_source_34(Idx)
96965  , p_source_35 => l_array_source_35(Idx)
96966  , p_source_35_meaning => l_array_source_35_meaning(Idx)
96967  , p_source_36 => l_array_source_36(Idx)
96968  );
96969 If(l_balance_type_code = 'A') THEN
96970   l_actual_gain_loss_ref := l_gain_or_loss_ref;
96971 END IF;
96972 
96973 --
96974 
96975 
96976 --
96977 AcctLineType_83 (
96978  p_application_id  => p_application_id
96979  ,p_event_id     => l_event_id
96980  ,p_calculate_acctd_flag => l_calculate_acctd_flag
96981  ,p_calculate_g_l_flag => l_calculate_g_l_flag
96982  ,p_actual_flag => l_actual_flag
96983  ,p_balance_type_code => l_balance_type_code
96984  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
96985  
96986  , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
96987  , p_source_4 => l_array_source_4(Idx)
96988  , p_source_5 => l_array_source_5(Idx)
96989  , p_source_6 => l_array_source_6(Idx)
96990  , p_source_7 => l_array_source_7(Idx)
96991  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
96992  , p_source_23 => l_array_source_23(Idx)
96993  , p_source_24 => l_array_source_24(Idx)
96994  , p_source_25 => l_array_source_25(Idx)
96995  , p_source_26 => l_array_source_26(Idx)
96996  , p_source_27 => l_array_source_27(Idx)
96997  , p_source_28 => l_array_source_28(Idx)
96998  , p_source_29 => l_array_source_29(Idx)
96999  , p_source_30 => l_array_source_30(Idx)
97000  , p_source_31 => l_array_source_31(Idx)
97001  , p_source_32 => l_array_source_32(Idx)
97002  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
97003  , p_source_34 => l_array_source_34(Idx)
97004  , p_source_35 => l_array_source_35(Idx)
97005  , p_source_35_meaning => l_array_source_35_meaning(Idx)
97006  , p_source_36 => l_array_source_36(Idx)
97007  );
97008 If(l_balance_type_code = 'A') THEN
97009   l_actual_gain_loss_ref := l_gain_or_loss_ref;
97010 END IF;
97011 
97012 --
97013 
97014 
97015 --
97016 AcctLineType_96 (
97017  p_application_id  => p_application_id
97018  ,p_event_id     => l_event_id
97019  ,p_calculate_acctd_flag => l_calculate_acctd_flag
97023  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
97020  ,p_calculate_g_l_flag => l_calculate_g_l_flag
97021  ,p_actual_flag => l_actual_flag
97022  ,p_balance_type_code => l_balance_type_code
97024  
97025  , p_source_4 => l_array_source_4(Idx)
97026  , p_source_5 => l_array_source_5(Idx)
97027  , p_source_7 => l_array_source_7(Idx)
97028  , p_source_8 => l_array_source_8(Idx)
97029  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
97030  , p_source_23 => l_array_source_23(Idx)
97031  , p_source_24 => l_array_source_24(Idx)
97032  , p_source_25 => l_array_source_25(Idx)
97033  , p_source_26 => l_array_source_26(Idx)
97034  , p_source_27 => l_array_source_27(Idx)
97035  , p_source_28 => l_array_source_28(Idx)
97036  , p_source_29 => l_array_source_29(Idx)
97037  , p_source_30 => l_array_source_30(Idx)
97038  , p_source_31 => l_array_source_31(Idx)
97039  , p_source_32 => l_array_source_32(Idx)
97040  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
97041  , p_source_34 => l_array_source_34(Idx)
97042  , p_source_35 => l_array_source_35(Idx)
97043  , p_source_35_meaning => l_array_source_35_meaning(Idx)
97044  , p_source_36 => l_array_source_36(Idx)
97045  );
97046 If(l_balance_type_code = 'A') THEN
97047   l_actual_gain_loss_ref := l_gain_or_loss_ref;
97048 END IF;
97049 
97050 --
97051 
97052       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
97053       -- or secondary ledger that has different currency with primary
97054       -- or alc that is calculated by sla
97055       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
97056             (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'))
97057 
97058 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
97059 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
97060           AND (l_actual_flag = 'A')) THEN
97061         XLA_AE_LINES_PKG.CreateGainOrLossLines(
97062           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
97063          ,p_application_id   => p_application_id
97064          ,p_amb_context_code => 'DEFAULT'
97065          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
97066          ,p_event_class_code => C_EVENT_CLASS_CODE
97067          ,p_event_type_code  => C_EVENT_TYPE_CODE
97068          
97069          ,p_gain_ccid        => -1
97070          ,p_loss_ccid        => -1
97071 
97072          ,p_actual_flag      => l_actual_flag
97073          ,p_enc_flag         => null
97074          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
97075          ,p_enc_g_l_ref      => null
97076          );
97077       END IF;
97078    END IF;
97079 END IF;
97080 
97081    ELSE
97082       --
97083       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
97084       --
97085       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
97086          trace
97087             (p_msg      => 'Trancaction revesal option is Y'
97088             ,p_level    => C_LEVEL_STATEMENT
97089             ,p_module   => l_log_module);
97090       END IF;
97091    END IF;
97092 
97093 END LOOP;
97094 l_result := XLA_AE_LINES_PKG.InsertLines ;
97095 end loop;
97096 close line_cur;
97097 
97098 
97099 --
97100 -- insert headers into xla_ae_headers_gt table
97101 --
97102 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
97103 
97104 -- insert into errors table here.
97105 
97106 END LOOP;
97107 
97108 --
97109 -- 4865292
97110 --
97111 -- Compare g_hdr_extract_count with event count in
97112 -- CreateHeadersAndLines.
97113 --
97114 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
97115 
97116 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
97117    trace (p_msg     => '# rows extracted from header extract objects '
97118                     || ' (running total): '
97119                     || g_hdr_extract_count
97120          ,p_level   => C_LEVEL_STATEMENT
97121          ,p_module  => l_log_module);
97122 END IF;
97123 
97124 CLOSE header_cur;
97125 --
97126 
97127 --
97128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97129    trace
97130       (p_msg      => 'END of EventClass_163'
97131       ,p_level    => C_LEVEL_PROCEDURE
97132       ,p_module   => l_log_module);
97133 END IF;
97134 --
97135 RETURN l_result;
97136 EXCEPTION
97137 WHEN xla_exceptions_pkg.application_exception THEN
97138    
97139 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
97140 
97141    
97142 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
97143 
97144    RAISE;
97145 WHEN OTHERS THEN
97146    xla_exceptions_pkg.raise_message
97147       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_163');
97148 END EventClass_163;
97149 --
97150 
97151 ---------------------------------------
97152 --
97153 -- PRIVATE PROCEDURE
97154 --         insert_sources_164
97155 --
97156 ----------------------------------------
97157 --
97158 PROCEDURE insert_sources_164(
97159                                 p_target_ledger_id       IN NUMBER
97160                               , p_language               IN VARCHAR2
97161                               , p_sla_ledger_id          IN NUMBER
97162                               , p_pad_start_date         IN DATE
97163                               , p_pad_end_date           IN DATE
97164                          )
97165 IS
97166 
97167 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ALL';
97168 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST';
97169 p_apps_owner                   VARCHAR2(30);
97173       l_log_module := C_DEFAULT_MODULE||'.insert_sources_164';
97170 l_log_module                   VARCHAR2(240);
97171 BEGIN
97172 IF g_log_enabled THEN
97174 END IF;
97175 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97176 
97177       trace
97178          (p_msg      => 'BEGIN of insert_sources_164'
97179          ,p_level    => C_LEVEL_PROCEDURE
97180          ,p_module   => l_log_module);
97181 
97182 END IF;
97183 
97184 -- select APPS owner
97185 SELECT oracle_username
97186   INTO p_apps_owner
97187   FROM fnd_oracle_userid
97188  WHERE read_only_flag = 'U'
97189 ;
97190 
97191 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
97192       trace
97193          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
97194                         ' - p_language = '||p_language||
97195                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
97196                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
97197                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
97198                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
97199          ,p_level    => C_LEVEL_STATEMENT
97200          ,p_module   => l_log_module);
97201 END IF;
97202 
97203 
97204 --
97205 INSERT INTO xla_diag_sources --hdr2
97206 (
97207         event_id
97208       , ledger_id
97209       , sla_ledger_id
97210       , description_language
97211       , object_name
97212       , object_type_code
97213       , line_number
97214       , source_application_id
97215       , source_type_code
97216       , source_code
97217       , source_value
97218       , source_meaning
97219       , created_by
97220       , creation_date
97221       , last_update_date
97222       , last_updated_by
97223       , last_update_login
97224       , program_update_date
97225       , program_application_id
97226       , program_id
97227       , request_id
97228 )
97229 SELECT
97230         event_id
97231       , p_target_ledger_id
97232       , p_sla_ledger_id
97233       , p_language
97234       , object_name
97235       , object_type_code
97236       , line_number
97237       , source_application_id
97238       , source_type_code
97239       , source_code
97240       , SUBSTR(source_value ,1,1996)
97241       , SUBSTR(source_meaning ,1,200)
97242       , xla_environment_pkg.g_Usr_Id
97243       , TRUNC(SYSDATE)
97244       , TRUNC(SYSDATE)
97245       , xla_environment_pkg.g_Usr_Id
97246       , xla_environment_pkg.g_Login_Id
97247       , TRUNC(SYSDATE)
97248       , xla_environment_pkg.g_Prog_Appl_Id
97249       , xla_environment_pkg.g_Prog_Id
97250       , xla_environment_pkg.g_Req_Id
97251   FROM (
97252        SELECT xet.event_id                  event_id
97253             , 0                          line_number
97254             , CASE r
97255                WHEN 1 THEN 'GMS_XLA_AWARD_REF_V' 
97256                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
97257                 WHEN 3 THEN 'PA_XLA_EXP_HEADER_V' 
97258                 WHEN 4 THEN 'PA_XLA_EXP_HEADER_V' 
97259                 
97260                ELSE null
97261               END                           object_name
97262             , CASE r
97263                 WHEN 1 THEN 'HEADER' 
97264                 WHEN 2 THEN 'HEADER' 
97265                 WHEN 3 THEN 'HEADER' 
97266                 WHEN 4 THEN 'HEADER' 
97267                 
97268                 ELSE null
97269               END                           object_type_code
97270             , CASE r
97271                 WHEN 1 THEN '275' 
97272                 WHEN 2 THEN '275' 
97273                 WHEN 3 THEN '275' 
97274                 WHEN 4 THEN '275' 
97275                 
97276                 ELSE null
97277               END                           source_application_id
97278             , 'S'             source_type_code
97279             , CASE r
97280                 WHEN 1 THEN 'PO_DISTRIBUTION_ID' 
97281                 WHEN 2 THEN 'EXCHANGE_RATE_VARIANCE_FLAG' 
97282                 WHEN 3 THEN 'EXPENDITURE_ITEM_ID' 
97283                 WHEN 4 THEN 'GL_DATE' 
97284                 
97285                 ELSE null
97286               END                           source_code
97287             , CASE r
97288                 WHEN 1 THEN TO_CHAR(h1.PO_DISTRIBUTION_ID)
97289                 WHEN 2 THEN TO_CHAR(h3.EXCHANGE_RATE_VARIANCE_FLAG)
97290                 WHEN 3 THEN TO_CHAR(h3.EXPENDITURE_ITEM_ID)
97291                 WHEN 4 THEN TO_CHAR(h3.GL_DATE)
97292                 
97293                 ELSE null
97294               END                           source_value
97295             , CASE r
97296                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
97297                           103371
97298                          ,TO_CHAR(h3.EXCHANGE_RATE_VARIANCE_FLAG)
97299                          ,'EXCHANGE_RATE_VARIANCE_FLAG'
97300                          ,'S'
97301                          ,275)
97302                 
97303                 ELSE null
97304               END               source_meaning
97305          FROM xla_events_gt     xet  
97306       , GMS_XLA_AWARD_REF_V  h1
97307       , PA_XLA_EXP_HEADER_V  h3
97308              ,(select rownum r from all_objects where rownum <= 4 and owner = p_apps_owner)
97309          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
97310            AND xet.event_class_code = C_EVENT_CLASS_CODE
97311               AND h3.event_id = xet.event_id
97312  AND h1.expenditure_item_id (+) =h3.expenditure_item_id  and h1.document_type  (+) = 'exp'
97313 )
97314 ;
97315 --
97316 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
97317 
97318       trace
97319          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
97323 END IF;
97320          ,p_level    => C_LEVEL_STATEMENT
97321          ,p_module   => l_log_module);
97322 
97324 --
97325 
97326 
97327 
97328 --
97329 INSERT INTO xla_diag_sources  --line2
97330 (
97331         event_id
97332       , ledger_id
97333       , sla_ledger_id
97334       , description_language
97335       , object_name
97336       , object_type_code
97337       , line_number
97338       , source_application_id
97339       , source_type_code
97340       , source_code
97341       , source_value
97342       , source_meaning
97343       , created_by
97344       , creation_date
97345       , last_update_date
97346       , last_updated_by
97347       , last_update_login
97348       , program_update_date
97349       , program_application_id
97350       , program_id
97351       , request_id
97352 )
97353 SELECT  event_id
97354       , p_target_ledger_id
97355       , p_sla_ledger_id
97356       , p_language
97357       , object_name
97358       , object_type_code
97359       , line_number
97360       , source_application_id
97361       , source_type_code
97362       , source_code
97363       , SUBSTR(source_value,1,1996)
97364       , SUBSTR(source_meaning ,1,200)
97365       , xla_environment_pkg.g_Usr_Id
97366       , TRUNC(SYSDATE)
97367       , TRUNC(SYSDATE)
97368       , xla_environment_pkg.g_Usr_Id
97369       , xla_environment_pkg.g_Login_Id
97370       , TRUNC(SYSDATE)
97371       , xla_environment_pkg.g_Prog_Appl_Id
97372       , xla_environment_pkg.g_Prog_Id
97373       , xla_environment_pkg.g_Req_Id
97374   FROM (
97375        SELECT xet.event_id                  event_id
97376             , l2.line_number                 line_number
97377             , CASE r
97378                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
97379                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
97380                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
97381                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
97382                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
97383                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
97384                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
97385                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
97386                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
97387                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
97388                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
97389                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
97390                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
97391                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
97392                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
97393                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
97394                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
97395                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
97396                 
97397                ELSE null
97398               END                           object_name
97399             , CASE r
97400                 WHEN 1 THEN 'LINE' 
97401                 WHEN 2 THEN 'LINE' 
97402                 WHEN 3 THEN 'LINE' 
97403                 WHEN 4 THEN 'LINE' 
97404                 WHEN 5 THEN 'LINE' 
97405                 WHEN 6 THEN 'LINE' 
97406                 WHEN 7 THEN 'LINE' 
97407                 WHEN 8 THEN 'LINE' 
97408                 WHEN 9 THEN 'LINE' 
97409                 WHEN 10 THEN 'LINE' 
97410                 WHEN 11 THEN 'LINE' 
97411                 WHEN 12 THEN 'LINE' 
97412                 WHEN 13 THEN 'LINE' 
97413                 WHEN 14 THEN 'LINE' 
97414                 WHEN 15 THEN 'LINE' 
97415                 WHEN 16 THEN 'LINE' 
97416                 WHEN 17 THEN 'LINE' 
97417                 WHEN 18 THEN 'LINE' 
97418                 
97419                 ELSE null
97420               END                           object_type_code
97421             , CASE r
97422                 WHEN 1 THEN '275' 
97423                 WHEN 2 THEN '275' 
97424                 WHEN 3 THEN '275' 
97425                 WHEN 4 THEN '275' 
97426                 WHEN 5 THEN '275' 
97427                 WHEN 6 THEN '275' 
97428                 WHEN 7 THEN '275' 
97429                 WHEN 8 THEN '275' 
97430                 WHEN 9 THEN '275' 
97431                 WHEN 10 THEN '275' 
97432                 WHEN 11 THEN '275' 
97433                 WHEN 12 THEN '275' 
97434                 WHEN 13 THEN '275' 
97435                 WHEN 14 THEN '275' 
97436                 WHEN 15 THEN '275' 
97437                 WHEN 16 THEN '275' 
97438                 WHEN 17 THEN '275' 
97439                 WHEN 18 THEN '275' 
97440                 
97441                 ELSE null
97442               END                           source_application_id
97443             , 'S'             source_type_code
97444             , CASE r
97445                 WHEN 1 THEN 'COST_CCID' 
97446                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
97447                 WHEN 3 THEN 'ADJ_COST_CCID' 
97448                 WHEN 4 THEN 'COST_CLEARING_CCID' 
97449                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
97450                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
97451                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
97452                 WHEN 8 THEN 'ENTERED_RAW_COST' 
97453                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
97454                 WHEN 10 THEN 'ACCT_RAW_COST' 
97455                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
97456                 WHEN 12 THEN 'EXCHANGE_RATE' 
97457                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
97458                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
97459                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
97460                 WHEN 16 THEN 'LINE_NUMBER' 
97461                 WHEN 17 THEN 'LINE_TYPE' 
97462                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
97463                 
97464                 ELSE null
97468                 WHEN 2 THEN TO_CHAR(l2.ALLOW_OVERRIDE_CCID_FLAG)
97465               END                           source_code
97466             , CASE r
97467                 WHEN 1 THEN TO_CHAR(l2.COST_CCID)
97469                 WHEN 3 THEN TO_CHAR(l2.ADJ_COST_CCID)
97470                 WHEN 4 THEN TO_CHAR(l2.COST_CLEARING_CCID)
97471                 WHEN 5 THEN TO_CHAR(l2.ADJ_COST_CLEARING_CCID)
97472                 WHEN 6 THEN TO_CHAR(l2.REVERSING_LINE_FLAG)
97473                 WHEN 7 THEN TO_CHAR(l2.ACTUAL_UPG_CR_ACCT_CLASS)
97474                 WHEN 8 THEN TO_CHAR(l2.ENTERED_RAW_COST)
97475                 WHEN 9 THEN TO_CHAR(l2.ENTERED_CURRENCY_CODE)
97476                 WHEN 10 THEN TO_CHAR(l2.ACCT_RAW_COST)
97477                 WHEN 11 THEN TO_CHAR(l2.EXCHANGE_RATE_DATE)
97478                 WHEN 12 THEN TO_CHAR(l2.EXCHANGE_RATE)
97479                 WHEN 13 THEN TO_CHAR(l2.EXCHANGE_RATE_TYPE)
97480                 WHEN 14 THEN TO_CHAR(l2.ACTUAL_UPG_DR_ACCT_CLASS)
97481                 WHEN 15 THEN TO_CHAR(l2.USE_ACT_UPG_ATTRIB_FLAG)
97482                 WHEN 16 THEN TO_CHAR(l2.LINE_NUMBER)
97483                 WHEN 17 THEN TO_CHAR(l2.LINE_TYPE)
97484                 WHEN 18 THEN TO_CHAR(l2.LINE_NUM_REVERSED)
97485                 
97486                 ELSE null
97487               END                           source_value
97488             , CASE r
97489                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
97490                           103371
97491                          ,TO_CHAR(l2.ALLOW_OVERRIDE_CCID_FLAG)
97492                          ,'ALLOW_OVERRIDE_CCID_FLAG'
97493                          ,'S'
97494                          ,275)
97495                 WHEN 17 THEN fvl35.meaning
97496                 
97497                 ELSE null
97498               END               source_meaning
97499          FROM  xla_events_gt     xet  
97500         , PA_XLA_CDL_LINES_V  l2
97501   , fnd_lookup_values    fvl35
97502             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
97503         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
97504           AND xet.event_class_code = C_EVENT_CLASS_CODE
97505             AND l2.event_id          = xet.event_id
97506    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
97507   AND fvl35.lookup_code(+)         = l2.LINE_TYPE
97508   AND fvl35.view_application_id(+) = 275
97509   AND fvl35.language(+)            = USERENV('LANG')
97510   
97511 )
97512 ;
97513 --
97514 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
97515 
97516       trace
97517          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
97518          ,p_level    => C_LEVEL_STATEMENT
97519          ,p_module   => l_log_module);
97520 
97521 END IF;
97522 
97523 
97524 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97525       trace
97526          (p_msg      => 'END of insert_sources_164'
97527          ,p_level    => C_LEVEL_PROCEDURE
97528          ,p_module   => l_log_module);
97529 END IF;
97530 EXCEPTION
97531   WHEN xla_exceptions_pkg.application_exception THEN
97532       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
97533             trace
97534                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
97535                ,p_level    => C_LEVEL_EXCEPTION
97536                ,p_module   => l_log_module);
97537       END IF;
97538       RAISE;
97539   WHEN OTHERS THEN
97540       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
97541             trace
97542                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
97543                ,p_level    => C_LEVEL_EXCEPTION
97544                ,p_module   => l_log_module);
97545        END IF;
97546        xla_exceptions_pkg.raise_message
97547            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_164');
97548 END insert_sources_164;
97549 --
97550 
97551 ---------------------------------------
97552 --
97553 -- PRIVATE FUNCTION
97554 --         EventClass_164
97555 --
97556 ----------------------------------------
97557 --
97558 FUNCTION EventClass_164
97559        (p_application_id         IN NUMBER
97560        ,p_base_ledger_id         IN NUMBER
97561        ,p_target_ledger_id       IN NUMBER
97562        ,p_language               IN VARCHAR2
97563        ,p_currency_code          IN VARCHAR2
97564        ,p_sla_ledger_id          IN NUMBER
97565        ,p_pad_start_date         IN DATE
97566        ,p_pad_end_date           IN DATE
97567        ,p_primary_ledger_id      IN NUMBER)
97568 RETURN BOOLEAN IS
97569 --
97570 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'SUPPLIER_COST_ALL';
97571 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'SUPPLIER_COST';
97572 
97573 l_calculate_acctd_flag   VARCHAR2(1) :='N';
97574 l_calculate_g_l_flag     VARCHAR2(1) :='N';
97575 --
97576 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97577 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97578 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
97579 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
97580 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97581 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
97582 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
97583 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97584 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
97585 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
97586 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97587 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97588 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97592 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
97589 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
97590 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
97591 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
97593 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
97594 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
97595 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
97596 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
97597 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
97598 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
97599 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
97600 
97601 l_event_id                             NUMBER;
97602 l_previous_event_id                    NUMBER;
97603 l_first_event_id                       NUMBER;
97604 l_last_event_id                        NUMBER;
97605 
97606 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
97607 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
97608 --
97609 --
97610 l_result                    BOOLEAN := TRUE;
97611 l_rows                      NUMBER  := 1000;
97612 l_event_type_name           VARCHAR2(80) := 'All';
97613 l_event_class_name          VARCHAR2(80) := 'Supplier Cost';
97614 l_description               VARCHAR2(4000);
97615 l_transaction_reversal      NUMBER;
97616 l_ae_header_id              NUMBER;
97617 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
97618 l_log_module                VARCHAR2(240);
97619 --
97620 l_acct_reversal_source      VARCHAR2(30);
97621 l_trx_reversal_source       VARCHAR2(30);
97622 
97623 l_continue_with_lines       BOOLEAN := TRUE;
97624 --
97625 l_acc_rev_gl_date_source    DATE;                      -- 4262811
97626 --
97627 type t_array_event_id is table of number index by binary_integer;
97628 
97629 l_rec_array_event                    t_rec_array_event;
97630 l_null_rec_array_event               t_rec_array_event;
97631 l_array_ae_header_id                 xla_number_array_type;
97632 l_actual_flag                        VARCHAR2(1) := NULL;
97633 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
97634 l_balance_type_code                  VARCHAR2(1) :=NULL;
97635 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
97636 
97637 --
97638 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
97639 --
97640 
97641 TYPE t_array_source_2 IS TABLE OF GMS_XLA_AWARD_REF_V.PO_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
97642 TYPE t_array_source_22 IS TABLE OF PA_XLA_EXP_HEADER_V.EXCHANGE_RATE_VARIANCE_FLAG%TYPE INDEX BY BINARY_INTEGER;
97643 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
97644 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
97645 
97646 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
97647 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
97648 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
97649 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
97650 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
97651 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
97652 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
97653 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
97654 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
97655 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
97656 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
97657 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
97658 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
97659 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
97660 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
97661 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
97662 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
97663 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
97664 
97665 l_array_source_2              t_array_source_2;
97666 l_array_source_22              t_array_source_22;
97667 l_array_source_33              t_array_source_33;
97668 l_array_source_75              t_array_source_75;
97669 
97670 l_array_source_4      t_array_source_4;
97671 l_array_source_5      t_array_source_5;
97672 l_array_source_6      t_array_source_6;
97673 l_array_source_7      t_array_source_7;
97674 l_array_source_8      t_array_source_8;
97675 l_array_source_23      t_array_source_23;
97676 l_array_source_24      t_array_source_24;
97677 l_array_source_25      t_array_source_25;
97678 l_array_source_26      t_array_source_26;
97679 l_array_source_27      t_array_source_27;
97680 l_array_source_28      t_array_source_28;
97681 l_array_source_29      t_array_source_29;
97682 l_array_source_30      t_array_source_30;
97683 l_array_source_31      t_array_source_31;
97684 l_array_source_32      t_array_source_32;
97685 l_array_source_34      t_array_source_34;
97686 l_array_source_35      t_array_source_35;
97687 l_array_source_35_meaning      t_array_lookup_meaning;
97688 l_array_source_36      t_array_source_36;
97689 
97693 SELECT /*+ leading(xet) cardinality(xet,1) */
97690 --
97691 CURSOR header_cur
97692 IS
97694 -- Event Class Code: SUPPLIER_COST
97695     xet.entity_id
97696    ,xet.legal_entity_id
97697    ,xet.entity_code
97698    ,xet.transaction_number
97699    ,xet.event_id
97700    ,xet.event_class_code
97701    ,xet.event_type_code
97702    ,xet.event_number
97703    ,xet.event_date
97704    ,xet.transaction_date
97705    ,xet.reference_num_1
97706    ,xet.reference_num_2
97707    ,xet.reference_num_3
97708    ,xet.reference_num_4
97709    ,xet.reference_char_1
97710    ,xet.reference_char_2
97711    ,xet.reference_char_3
97712    ,xet.reference_char_4
97713    ,xet.reference_date_1
97714    ,xet.reference_date_2
97715    ,xet.reference_date_3
97716    ,xet.reference_date_4
97717    ,xet.event_created_by
97718    ,xet.budgetary_control_flag 
97719   , h1.PO_DISTRIBUTION_ID    source_2
97720   , h3.EXCHANGE_RATE_VARIANCE_FLAG    source_22
97721   , h3.EXPENDITURE_ITEM_ID    source_33
97722   , h3.GL_DATE    source_75
97723   FROM xla_events_gt     xet 
97724   , GMS_XLA_AWARD_REF_V  h1
97725   , PA_XLA_EXP_HEADER_V  h3
97726  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
97727    and xet.event_class_code = C_EVENT_CLASS_CODE
97728    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
97729  AND h1.expenditure_item_id (+) =h3.expenditure_item_id  AND h1.document_type  (+) = 'EXP'
97730  ORDER BY event_id
97731 ;
97732 
97733 
97734 --
97735 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
97736 IS
97737 SELECT  /*+ leading(xet) cardinality(xet,1) */
97738 -- Event Class Code: SUPPLIER_COST
97739     xet.entity_id
97740    ,xet.legal_entity_id
97741    ,xet.entity_code
97742    ,xet.transaction_number
97743    ,xet.event_id
97744    ,xet.event_class_code
97745    ,xet.event_type_code
97746    ,xet.event_number
97747    ,xet.event_date
97748    ,xet.transaction_date
97749    ,xet.reference_num_1
97750    ,xet.reference_num_2
97751    ,xet.reference_num_3
97752    ,xet.reference_num_4
97753    ,xet.reference_char_1
97754    ,xet.reference_char_2
97755    ,xet.reference_char_3
97756    ,xet.reference_char_4
97757    ,xet.reference_date_1
97758    ,xet.reference_date_2
97759    ,xet.reference_date_3
97760    ,xet.reference_date_4
97761    ,xet.event_created_by
97762    ,xet.budgetary_control_flag
97763  , l2.LINE_NUMBER  
97764   , l2.COST_CCID    source_4
97765   , l2.ALLOW_OVERRIDE_CCID_FLAG    source_5
97766   , l2.ADJ_COST_CCID    source_6
97767   , l2.COST_CLEARING_CCID    source_7
97768   , l2.ADJ_COST_CLEARING_CCID    source_8
97769   , l2.REVERSING_LINE_FLAG    source_23
97770   , l2.ACTUAL_UPG_CR_ACCT_CLASS    source_24
97771   , l2.ENTERED_RAW_COST    source_25
97772   , l2.ENTERED_CURRENCY_CODE    source_26
97773   , l2.ACCT_RAW_COST    source_27
97774   , l2.EXCHANGE_RATE_DATE    source_28
97775   , l2.EXCHANGE_RATE    source_29
97776   , l2.EXCHANGE_RATE_TYPE    source_30
97777   , l2.ACTUAL_UPG_DR_ACCT_CLASS    source_31
97778   , l2.USE_ACT_UPG_ATTRIB_FLAG    source_32
97779   , l2.LINE_NUMBER    source_34
97780   , l2.LINE_TYPE    source_35
97781   , fvl35.meaning   source_35_meaning
97782   , l2.LINE_NUM_REVERSED    source_36
97783   FROM xla_events_gt     xet 
97784   , PA_XLA_CDL_LINES_V  l2
97785   , fnd_lookup_values    fvl35
97786  WHERE xet.event_id between x_first_event_id and x_last_event_id
97787    and xet.event_date between p_pad_start_date and p_pad_end_date
97788    and xet.event_class_code = C_EVENT_CLASS_CODE
97789    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
97790    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
97791   AND fvl35.lookup_code(+)         = l2.LINE_TYPE
97792   AND fvl35.view_application_id(+) = 275
97793   AND fvl35.language(+)            = USERENV('LANG')
97794   ;
97795 
97796 --
97797 BEGIN
97798 IF g_log_enabled THEN
97799    l_log_module := C_DEFAULT_MODULE||'.EventClass_164';
97800 END IF;
97801 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
97802    trace
97803       (p_msg      => 'BEGIN of EventClass_164'
97804       ,p_level    => C_LEVEL_PROCEDURE
97805       ,p_module   => l_log_module);
97806 END IF;
97807 
97808 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
97809    trace
97810       (p_msg      => 'p_application_id = '||p_application_id||
97811                      ' - p_base_ledger_id = '||p_base_ledger_id||
97812                      ' - p_target_ledger_id  = '||p_target_ledger_id||
97813                      ' - p_language = '||p_language||
97814                      ' - p_currency_code = '||p_currency_code||
97815                      ' - p_sla_ledger_id = '||p_sla_ledger_id
97816       ,p_level    => C_LEVEL_STATEMENT
97817       ,p_module   => l_log_module);
97818 END IF;
97819 --
97820 -- initialze arrays
97821 --
97822 g_array_event.DELETE;
97823 l_rec_array_event := l_null_rec_array_event;
97824 --
97825 --------------------------------------
97826 -- 4262811 Initialze MPA Line Number
97827 --------------------------------------
97828 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
97829 
97830 --
97831 
97832 --
97833 OPEN header_cur;
97834 --
97835 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
97836    trace
97837    (p_msg      => 'SQL - FETCH header_cur'
97838    ,p_level    => C_LEVEL_STATEMENT
97839    ,p_module   => l_log_module);
97840 END IF;
97841 --
97842 LOOP
97843 FETCH header_cur BULK COLLECT INTO
97844         l_array_entity_id
97845       , l_array_legal_entity_id
97846       , l_array_entity_code
97847       , l_array_transaction_num
97848       , l_array_event_id
97849       , l_array_class_code
97853       , l_array_transaction_date
97850       , l_array_event_type
97851       , l_array_event_number
97852       , l_array_event_date
97854       , l_array_reference_num_1
97855       , l_array_reference_num_2
97856       , l_array_reference_num_3
97857       , l_array_reference_num_4
97858       , l_array_reference_char_1
97859       , l_array_reference_char_2
97860       , l_array_reference_char_3
97861       , l_array_reference_char_4
97862       , l_array_reference_date_1
97863       , l_array_reference_date_2
97864       , l_array_reference_date_3
97865       , l_array_reference_date_4
97866       , l_array_event_created_by
97867       , l_array_budgetary_control_flag 
97868       , l_array_source_2
97869       , l_array_source_22
97870       , l_array_source_33
97871       , l_array_source_75
97872       LIMIT l_rows;
97873 --
97874 IF (C_LEVEL_EVENT >= g_log_level) THEN
97875    trace
97876    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
97877    ,p_level    => C_LEVEL_EVENT
97878    ,p_module   => l_log_module);
97879 END IF;
97880 --
97881 EXIT WHEN l_array_entity_id.COUNT = 0;
97882 
97883 -- initialize arrays
97884 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
97885 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
97886 
97887 --
97888 -- Bug 4458708
97889 --
97890 XLA_AE_LINES_PKG.g_LineNumber := 0;
97891 
97892 
97893 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
97894 g_last_hdr_idx := l_array_event_id.LAST;
97895 --
97896 -- loop for the headers. Each iteration is for each header extract row
97897 -- fetched in header cursor
97898 --
97899 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
97900 
97901 --
97902 -- set event info as cache for other routines to refer event attributes
97903 --
97904 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
97905    (p_application_id           => p_application_id
97906    ,p_primary_ledger_id        => p_primary_ledger_id
97907    ,p_base_ledger_id           => p_base_ledger_id
97908    ,p_target_ledger_id         => p_target_ledger_id
97909    ,p_entity_id                => l_array_entity_id(hdr_idx)
97910    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
97911    ,p_entity_code              => l_array_entity_code(hdr_idx)
97912    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
97913    ,p_event_id                 => l_array_event_id(hdr_idx)
97914    ,p_event_class_code         => l_array_class_code(hdr_idx)
97915    ,p_event_type_code          => l_array_event_type(hdr_idx)
97916    ,p_event_number             => l_array_event_number(hdr_idx)
97917    ,p_event_date               => l_array_event_date(hdr_idx)
97918    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
97919    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
97920    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
97921    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
97922    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
97923    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
97924    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
97925    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
97926    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
97927    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
97928    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
97929    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
97930    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
97931    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
97932    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
97933 
97934 --
97935 -- set the status of entry to C_VALID (0)
97936 --
97937 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
97938 
97939 --
97940 -- initialize a row for ae header
97941 --
97942 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
97943 
97944 l_event_id := l_array_event_id(hdr_idx);
97945 
97946 --
97947 -- storing the hdr_idx for event. May be used by line cursor.
97948 --
97949 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
97950 
97951 --
97952 -- store sources from header extract. This can be improved to
97953 -- store only those sources from header extract that may be used in lines
97954 --
97955 
97956 g_array_event(l_event_id).array_value_num('source_2') := l_array_source_2(hdr_idx);
97957 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
97958 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
97959 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
97960 
97961 --
97962 -- initilaize the status of ae headers for diffrent balance types
97963 -- the status is initialised to C_NOT_CREATED (2)
97964 --
97965 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
97966 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
97967 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
97968 
97969 --
97970 -- call api to validate and store accounting attributes for header
97971 --
97972 
97973 ------------------------------------------------------------
97974 -- Accrual Reversal : to get date for Standard Source (NONE)
97975 ------------------------------------------------------------
97976 l_acc_rev_gl_date_source := NULL;
97977 
97978      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
97979       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
97980 
97981 
97985 
97982 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
97983 
97984 XLA_AE_HEADER_PKG.SetJeCategoryName;
97986 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
97987 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
97988 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
97989 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
97990 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
97991 
97992 
97993 -- No header level analytical criteria
97994 
97995 --
97996 --accounting attribute enhancement, bug 3612931
97997 --
97998 l_trx_reversal_source := SUBSTR(NULL, 1,30);
97999 
98000 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
98001    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
98002 
98003    xla_accounting_err_pkg.build_message
98004       (p_appli_s_name            => 'XLA'
98005       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
98006       ,p_token_1                 => 'ACCT_ATTR_NAME'
98007       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
98008       ,p_token_2                 => 'PRODUCT_NAME'
98009       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
98010       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
98011       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
98012       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
98013 
98014 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
98015    --
98016    -- following sets the accounting attributes needed to reverse
98017    -- accounting for a distributeion
98018    --
98019    xla_ae_lines_pkg.SetTrxReversalAttrs
98020       (p_event_id              => l_event_id
98021       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
98022       ,p_trx_reversal_source   => l_trx_reversal_source);
98023 
98024 END IF;
98025 
98026 
98027 ----------------------------------------------------------------
98028 -- 4262811 -  update the header statuses to invalid in need be
98029 ----------------------------------------------------------------
98030 --
98031 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
98032 
98033 
98034   -----------------------------------------------
98035   -- No accrual reversal for the event class/type
98036   -----------------------------------------------
98037 ----------------------------------------------------------------
98038 
98039 --
98040 -- this ends the header loop iteration for one bulk fetch
98041 --
98042 END LOOP;
98043 
98044 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
98045 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
98046 
98047 --
98048 -- insert dummy rows into lines gt table that were created due to
98049 -- transaction reversals
98050 --
98051 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
98052    l_result := XLA_AE_LINES_PKG.InsertLines;
98053 END IF;
98054 
98055 --
98056 -- reset the temp_line_num for each set of events fetched from header
98057 -- cursor rather than doing it for each new event in line cursor
98058 -- Bug 3939231
98059 --
98060 xla_ae_lines_pkg.g_temp_line_num := 0;
98061 
98062 
98063 
98064 --
98065 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
98066 --
98067 --
98068 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
98069 
98070       trace
98071          (p_msg      => 'SQL - FETCH line_cur'
98072          ,p_level    => C_LEVEL_STATEMENT
98073          ,p_module   => l_log_module);
98074 
98075 END IF;
98076 --
98077 --
98078 LOOP
98079   --
98080   FETCH line_cur BULK COLLECT INTO
98081         l_array_entity_id
98082       , l_array_legal_entity_id
98083       , l_array_entity_code
98084       , l_array_transaction_num
98085       , l_array_event_id
98086       , l_array_class_code
98087       , l_array_event_type
98088       , l_array_event_number
98089       , l_array_event_date
98090       , l_array_transaction_date
98091       , l_array_reference_num_1
98092       , l_array_reference_num_2
98093       , l_array_reference_num_3
98094       , l_array_reference_num_4
98095       , l_array_reference_char_1
98096       , l_array_reference_char_2
98097       , l_array_reference_char_3
98098       , l_array_reference_char_4
98099       , l_array_reference_date_1
98100       , l_array_reference_date_2
98101       , l_array_reference_date_3
98102       , l_array_reference_date_4
98103       , l_array_event_created_by
98104       , l_array_budgetary_control_flag
98105       , l_array_extract_line_num 
98106       , l_array_source_4
98107       , l_array_source_5
98108       , l_array_source_6
98109       , l_array_source_7
98110       , l_array_source_8
98111       , l_array_source_23
98112       , l_array_source_24
98113       , l_array_source_25
98114       , l_array_source_26
98115       , l_array_source_27
98116       , l_array_source_28
98117       , l_array_source_29
98118       , l_array_source_30
98119       , l_array_source_31
98120       , l_array_source_32
98121       , l_array_source_34
98122       , l_array_source_35
98123       , l_array_source_35_meaning
98124       , l_array_source_36
98125       LIMIT l_rows;
98126 
98127   --
98128   IF (C_LEVEL_EVENT >= g_log_level) THEN
98129             trace
98130                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
98134   --
98131                ,p_level    => C_LEVEL_EVENT
98132                ,p_module   => l_log_module);
98133   END IF;
98135   EXIT WHEN l_array_entity_id.count = 0;
98136 
98137   XLA_AE_LINES_PKG.g_rec_lines := null;
98138 
98139 --
98140 -- Bug 4458708
98141 --
98142 XLA_AE_LINES_PKG.g_LineNumber := 0;
98143 --
98144 --
98145 
98146 FOR Idx IN 1..l_array_event_id.count LOOP
98147    --
98148    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
98149    --
98150    l_event_id := l_array_event_id(idx);  -- 5648433
98151 
98152    --
98153    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
98154    --
98155 
98156    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
98157              (g_array_event(l_event_id).array_value_num('header_index'))
98158          ,'N'
98159          ) <> 'Y'
98160    THEN
98161       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
98162          trace
98163             (p_msg      => 'Trancaction revesal option is not Y '
98164             ,p_level    => C_LEVEL_STATEMENT
98165             ,p_module   => l_log_module);
98166       END IF;
98167 
98168 --
98169 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
98170 --
98171 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
98172 --
98173 -- set event info as cache for other routines to refer event attributes
98174 --
98175 
98176 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
98177    l_previous_event_id := l_event_id;
98178 
98179    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
98180       (p_application_id           => p_application_id
98181       ,p_primary_ledger_id        => p_primary_ledger_id
98182       ,p_base_ledger_id           => p_base_ledger_id
98183       ,p_target_ledger_id         => p_target_ledger_id
98184       ,p_entity_id                => l_array_entity_id(Idx)
98185       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
98186       ,p_entity_code              => l_array_entity_code(Idx)
98187       ,p_transaction_num          => l_array_transaction_num(Idx)
98188       ,p_event_id                 => l_array_event_id(Idx)
98189       ,p_event_class_code         => l_array_class_code(Idx)
98190       ,p_event_type_code          => l_array_event_type(Idx)
98191       ,p_event_number             => l_array_event_number(Idx)
98192       ,p_event_date               => l_array_event_date(Idx)
98193       ,p_transaction_date         => l_array_transaction_date(Idx)
98194       ,p_reference_num_1          => l_array_reference_num_1(Idx)
98195       ,p_reference_num_2          => l_array_reference_num_2(Idx)
98196       ,p_reference_num_3          => l_array_reference_num_3(Idx)
98197       ,p_reference_num_4          => l_array_reference_num_4(Idx)
98198       ,p_reference_char_1         => l_array_reference_char_1(Idx)
98199       ,p_reference_char_2         => l_array_reference_char_2(Idx)
98200       ,p_reference_char_3         => l_array_reference_char_3(Idx)
98201       ,p_reference_char_4         => l_array_reference_char_4(Idx)
98202       ,p_reference_date_1         => l_array_reference_date_1(Idx)
98203       ,p_reference_date_2         => l_array_reference_date_2(Idx)
98204       ,p_reference_date_3         => l_array_reference_date_3(Idx)
98205       ,p_reference_date_4         => l_array_reference_date_4(Idx)
98206       ,p_event_created_by         => l_array_event_created_by(Idx)
98207       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
98208        --
98209 END IF;
98210 
98211 
98212 
98213 --
98214 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
98215 
98216 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
98217 
98218 IF l_continue_with_lines THEN
98219    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
98220       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
98221 
98222       xla_accounting_err_pkg.build_message
98223          (p_appli_s_name            => 'XLA'
98224          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
98225          ,p_token_1                 => 'LINE_NUMBER'
98226          ,p_value_1                 => l_array_extract_line_num(Idx)
98227          ,p_token_2                 => 'PRODUCT_NAME'
98228          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
98229          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
98230          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
98231          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
98232 
98233    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
98234       --
98235       -- following sets the accounting attributes needed to reverse
98236       -- accounting for a distributeion
98237       --
98238 
98239       --
98240       -- 5217187
98241       --
98242       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
98243       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
98244                                        g_array_event(l_event_id).array_value_num('header_index'));
98245       --
98246       --
98247 
98248       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
98249       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
98250       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
98251       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
98252       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
98253       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
98254       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
98258       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
98255       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
98256       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
98257       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
98259       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
98260       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
98261       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
98262       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
98263       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
98264       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
98265       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
98266       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
98267       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
98268       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
98269       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
98270       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
98271       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
98272       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
98273       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
98274       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
98275       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
98276       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
98277       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
98278       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
98279       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
98280       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
98281       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
98282       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
98283       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
98284       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
98285       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
98286       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
98287       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
98288       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
98289       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
98290       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
98291       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
98292       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
98293       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
98294       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
98295       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
98296 
98297 
98298       xla_ae_lines_pkg.SetAcctReversalAttrs
98299          (p_event_id             => l_event_id
98300          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
98301          ,p_calculate_acctd_flag => l_calculate_acctd_flag
98302          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
98303    END IF;
98304 
98305    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
98306        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
98307 
98308 --
98309 AcctLineType_29 (
98310  p_application_id  => p_application_id
98311  ,p_event_id     => l_event_id
98312  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98313  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98314  ,p_actual_flag => l_actual_flag
98315  ,p_balance_type_code => l_balance_type_code
98316  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98317  
98318  , p_source_4 => l_array_source_4(Idx)
98319  , p_source_5 => l_array_source_5(Idx)
98320  , p_source_6 => l_array_source_6(Idx)
98321  , p_source_7 => l_array_source_7(Idx)
98322  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98323  , p_source_23 => l_array_source_23(Idx)
98324  , p_source_24 => l_array_source_24(Idx)
98325  , p_source_25 => l_array_source_25(Idx)
98326  , p_source_26 => l_array_source_26(Idx)
98327  , p_source_27 => l_array_source_27(Idx)
98328  , p_source_28 => l_array_source_28(Idx)
98329  , p_source_29 => l_array_source_29(Idx)
98330  , p_source_30 => l_array_source_30(Idx)
98331  , p_source_31 => l_array_source_31(Idx)
98332  , p_source_32 => l_array_source_32(Idx)
98333  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98334  , p_source_34 => l_array_source_34(Idx)
98335  , p_source_35 => l_array_source_35(Idx)
98336  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98337  , p_source_36 => l_array_source_36(Idx)
98338  );
98339 If(l_balance_type_code = 'A') THEN
98340   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98341 END IF;
98342 
98343 --
98344 
98345 
98346 --
98347 AcctLineType_32 (
98348  p_application_id  => p_application_id
98349  ,p_event_id     => l_event_id
98350  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98351  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98352  ,p_actual_flag => l_actual_flag
98353  ,p_balance_type_code => l_balance_type_code
98354  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98355  
98356  , p_source_4 => l_array_source_4(Idx)
98357  , p_source_5 => l_array_source_5(Idx)
98358  , p_source_7 => l_array_source_7(Idx)
98359  , p_source_8 => l_array_source_8(Idx)
98360  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98361  , p_source_23 => l_array_source_23(Idx)
98365  , p_source_27 => l_array_source_27(Idx)
98362  , p_source_24 => l_array_source_24(Idx)
98363  , p_source_25 => l_array_source_25(Idx)
98364  , p_source_26 => l_array_source_26(Idx)
98366  , p_source_28 => l_array_source_28(Idx)
98367  , p_source_29 => l_array_source_29(Idx)
98368  , p_source_30 => l_array_source_30(Idx)
98369  , p_source_31 => l_array_source_31(Idx)
98370  , p_source_32 => l_array_source_32(Idx)
98371  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98372  , p_source_34 => l_array_source_34(Idx)
98373  , p_source_35 => l_array_source_35(Idx)
98374  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98375  , p_source_36 => l_array_source_36(Idx)
98376  );
98377 If(l_balance_type_code = 'A') THEN
98378   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98379 END IF;
98380 
98381 --
98382 
98383 
98384 --
98385 AcctLineType_55 (
98386  p_application_id  => p_application_id
98387  ,p_event_id     => l_event_id
98388  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98389  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98390  ,p_actual_flag => l_actual_flag
98391  ,p_balance_type_code => l_balance_type_code
98392  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98393  
98394  , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
98395  , p_source_4 => l_array_source_4(Idx)
98396  , p_source_5 => l_array_source_5(Idx)
98397  , p_source_6 => l_array_source_6(Idx)
98398  , p_source_7 => l_array_source_7(Idx)
98399  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98400  , p_source_23 => l_array_source_23(Idx)
98401  , p_source_24 => l_array_source_24(Idx)
98402  , p_source_25 => l_array_source_25(Idx)
98403  , p_source_26 => l_array_source_26(Idx)
98404  , p_source_27 => l_array_source_27(Idx)
98405  , p_source_28 => l_array_source_28(Idx)
98406  , p_source_29 => l_array_source_29(Idx)
98407  , p_source_30 => l_array_source_30(Idx)
98408  , p_source_31 => l_array_source_31(Idx)
98409  , p_source_32 => l_array_source_32(Idx)
98410  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98411  , p_source_34 => l_array_source_34(Idx)
98412  , p_source_35 => l_array_source_35(Idx)
98413  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98414  , p_source_36 => l_array_source_36(Idx)
98415  );
98416 If(l_balance_type_code = 'A') THEN
98417   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98418 END IF;
98419 
98420 --
98421 
98422 
98423 --
98424 AcctLineType_57 (
98425  p_application_id  => p_application_id
98426  ,p_event_id     => l_event_id
98427  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98428  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98429  ,p_actual_flag => l_actual_flag
98430  ,p_balance_type_code => l_balance_type_code
98431  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98432  
98433  , p_source_4 => l_array_source_4(Idx)
98434  , p_source_5 => l_array_source_5(Idx)
98435  , p_source_7 => l_array_source_7(Idx)
98436  , p_source_8 => l_array_source_8(Idx)
98437  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98438  , p_source_23 => l_array_source_23(Idx)
98439  , p_source_24 => l_array_source_24(Idx)
98440  , p_source_25 => l_array_source_25(Idx)
98441  , p_source_26 => l_array_source_26(Idx)
98442  , p_source_27 => l_array_source_27(Idx)
98443  , p_source_28 => l_array_source_28(Idx)
98444  , p_source_29 => l_array_source_29(Idx)
98445  , p_source_30 => l_array_source_30(Idx)
98446  , p_source_31 => l_array_source_31(Idx)
98447  , p_source_32 => l_array_source_32(Idx)
98448  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98449  , p_source_34 => l_array_source_34(Idx)
98450  , p_source_35 => l_array_source_35(Idx)
98451  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98452  , p_source_36 => l_array_source_36(Idx)
98453  );
98454 If(l_balance_type_code = 'A') THEN
98455   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98456 END IF;
98457 
98458 --
98459 
98460 
98461 --
98462 AcctLineType_67 (
98463  p_application_id  => p_application_id
98464  ,p_event_id     => l_event_id
98465  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98466  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98467  ,p_actual_flag => l_actual_flag
98468  ,p_balance_type_code => l_balance_type_code
98469  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98470  
98471  , p_source_4 => l_array_source_4(Idx)
98472  , p_source_5 => l_array_source_5(Idx)
98473  , p_source_6 => l_array_source_6(Idx)
98474  , p_source_7 => l_array_source_7(Idx)
98475  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98476  , p_source_23 => l_array_source_23(Idx)
98477  , p_source_24 => l_array_source_24(Idx)
98478  , p_source_25 => l_array_source_25(Idx)
98479  , p_source_26 => l_array_source_26(Idx)
98480  , p_source_27 => l_array_source_27(Idx)
98481  , p_source_28 => l_array_source_28(Idx)
98482  , p_source_29 => l_array_source_29(Idx)
98483  , p_source_30 => l_array_source_30(Idx)
98484  , p_source_31 => l_array_source_31(Idx)
98485  , p_source_32 => l_array_source_32(Idx)
98486  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98487  , p_source_34 => l_array_source_34(Idx)
98488  , p_source_35 => l_array_source_35(Idx)
98489  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98490  , p_source_36 => l_array_source_36(Idx)
98491  );
98492 If(l_balance_type_code = 'A') THEN
98493   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98494 END IF;
98495 
98496 --
98497 
98498 
98499 --
98500 AcctLineType_88 (
98501  p_application_id  => p_application_id
98502  ,p_event_id     => l_event_id
98503  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98504  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98505  ,p_actual_flag => l_actual_flag
98509  , p_source_4 => l_array_source_4(Idx)
98506  ,p_balance_type_code => l_balance_type_code
98507  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98508  
98510  , p_source_5 => l_array_source_5(Idx)
98511  , p_source_7 => l_array_source_7(Idx)
98512  , p_source_8 => l_array_source_8(Idx)
98513  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98514  , p_source_23 => l_array_source_23(Idx)
98515  , p_source_24 => l_array_source_24(Idx)
98516  , p_source_25 => l_array_source_25(Idx)
98517  , p_source_26 => l_array_source_26(Idx)
98518  , p_source_27 => l_array_source_27(Idx)
98519  , p_source_28 => l_array_source_28(Idx)
98520  , p_source_29 => l_array_source_29(Idx)
98521  , p_source_30 => l_array_source_30(Idx)
98522  , p_source_31 => l_array_source_31(Idx)
98523  , p_source_32 => l_array_source_32(Idx)
98524  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98525  , p_source_34 => l_array_source_34(Idx)
98526  , p_source_35 => l_array_source_35(Idx)
98527  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98528  , p_source_36 => l_array_source_36(Idx)
98529  );
98530 If(l_balance_type_code = 'A') THEN
98531   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98532 END IF;
98533 
98534 --
98535 
98536 
98537 --
98538 AcctLineType_106 (
98539  p_application_id  => p_application_id
98540  ,p_event_id     => l_event_id
98541  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98542  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98543  ,p_actual_flag => l_actual_flag
98544  ,p_balance_type_code => l_balance_type_code
98545  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98546  
98547  , p_source_4 => l_array_source_4(Idx)
98548  , p_source_5 => l_array_source_5(Idx)
98549  , p_source_7 => l_array_source_7(Idx)
98550  , p_source_8 => l_array_source_8(Idx)
98551  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98552  , p_source_23 => l_array_source_23(Idx)
98553  , p_source_24 => l_array_source_24(Idx)
98554  , p_source_25 => l_array_source_25(Idx)
98555  , p_source_26 => l_array_source_26(Idx)
98556  , p_source_27 => l_array_source_27(Idx)
98557  , p_source_28 => l_array_source_28(Idx)
98558  , p_source_29 => l_array_source_29(Idx)
98559  , p_source_30 => l_array_source_30(Idx)
98560  , p_source_31 => l_array_source_31(Idx)
98561  , p_source_32 => l_array_source_32(Idx)
98562  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98563  , p_source_34 => l_array_source_34(Idx)
98564  , p_source_35 => l_array_source_35(Idx)
98565  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98566  , p_source_36 => l_array_source_36(Idx)
98567  );
98568 If(l_balance_type_code = 'A') THEN
98569   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98570 END IF;
98571 
98572 --
98573 
98574 
98575 --
98576 AcctLineType_110 (
98577  p_application_id  => p_application_id
98578  ,p_event_id     => l_event_id
98579  ,p_calculate_acctd_flag => l_calculate_acctd_flag
98580  ,p_calculate_g_l_flag => l_calculate_g_l_flag
98581  ,p_actual_flag => l_actual_flag
98582  ,p_balance_type_code => l_balance_type_code
98583  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
98584  
98585  , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
98586  , p_source_4 => l_array_source_4(Idx)
98587  , p_source_5 => l_array_source_5(Idx)
98588  , p_source_6 => l_array_source_6(Idx)
98589  , p_source_7 => l_array_source_7(Idx)
98590  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
98591  , p_source_23 => l_array_source_23(Idx)
98592  , p_source_24 => l_array_source_24(Idx)
98593  , p_source_25 => l_array_source_25(Idx)
98594  , p_source_26 => l_array_source_26(Idx)
98595  , p_source_27 => l_array_source_27(Idx)
98596  , p_source_28 => l_array_source_28(Idx)
98597  , p_source_29 => l_array_source_29(Idx)
98598  , p_source_30 => l_array_source_30(Idx)
98599  , p_source_31 => l_array_source_31(Idx)
98600  , p_source_32 => l_array_source_32(Idx)
98601  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
98602  , p_source_34 => l_array_source_34(Idx)
98603  , p_source_35 => l_array_source_35(Idx)
98604  , p_source_35_meaning => l_array_source_35_meaning(Idx)
98605  , p_source_36 => l_array_source_36(Idx)
98606  );
98607 If(l_balance_type_code = 'A') THEN
98608   l_actual_gain_loss_ref := l_gain_or_loss_ref;
98609 END IF;
98610 
98611 --
98612 
98613       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
98614       -- or secondary ledger that has different currency with primary
98615       -- or alc that is calculated by sla
98616       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
98617             (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'))
98618 
98619 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
98620 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
98621           AND (l_actual_flag = 'A')) THEN
98622         XLA_AE_LINES_PKG.CreateGainOrLossLines(
98623           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
98624          ,p_application_id   => p_application_id
98625          ,p_amb_context_code => 'DEFAULT'
98626          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
98627          ,p_event_class_code => C_EVENT_CLASS_CODE
98628          ,p_event_type_code  => C_EVENT_TYPE_CODE
98629          
98630          ,p_gain_ccid        => -1
98631          ,p_loss_ccid        => -1
98632 
98633          ,p_actual_flag      => l_actual_flag
98634          ,p_enc_flag         => null
98635          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
98636          ,p_enc_g_l_ref      => null
98637          );
98641 
98638       END IF;
98639    END IF;
98640 END IF;
98642    ELSE
98643       --
98644       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
98645       --
98646       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
98647          trace
98648             (p_msg      => 'Trancaction revesal option is Y'
98649             ,p_level    => C_LEVEL_STATEMENT
98650             ,p_module   => l_log_module);
98651       END IF;
98652    END IF;
98653 
98654 END LOOP;
98655 l_result := XLA_AE_LINES_PKG.InsertLines ;
98656 end loop;
98657 close line_cur;
98658 
98659 
98660 --
98661 -- insert headers into xla_ae_headers_gt table
98662 --
98663 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
98664 
98665 -- insert into errors table here.
98666 
98667 END LOOP;
98668 
98669 --
98670 -- 4865292
98671 --
98672 -- Compare g_hdr_extract_count with event count in
98673 -- CreateHeadersAndLines.
98674 --
98675 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
98676 
98677 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
98678    trace (p_msg     => '# rows extracted from header extract objects '
98679                     || ' (running total): '
98680                     || g_hdr_extract_count
98681          ,p_level   => C_LEVEL_STATEMENT
98682          ,p_module  => l_log_module);
98683 END IF;
98684 
98685 CLOSE header_cur;
98686 --
98687 
98688 --
98689 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98690    trace
98691       (p_msg      => 'END of EventClass_164'
98692       ,p_level    => C_LEVEL_PROCEDURE
98693       ,p_module   => l_log_module);
98694 END IF;
98695 --
98696 RETURN l_result;
98697 EXCEPTION
98698 WHEN xla_exceptions_pkg.application_exception THEN
98699    
98700 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
98701 
98702    
98703 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
98704 
98705    RAISE;
98706 WHEN OTHERS THEN
98707    xla_exceptions_pkg.raise_message
98708       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_164');
98709 END EventClass_164;
98710 --
98711 
98712 ---------------------------------------
98713 --
98714 -- PRIVATE PROCEDURE
98715 --         insert_sources_165
98716 --
98717 ----------------------------------------
98718 --
98719 PROCEDURE insert_sources_165(
98720                                 p_target_ledger_id       IN NUMBER
98721                               , p_language               IN VARCHAR2
98722                               , p_sla_ledger_id          IN NUMBER
98723                               , p_pad_start_date         IN DATE
98724                               , p_pad_end_date           IN DATE
98725                          )
98726 IS
98727 
98728 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ADJ_ALL';
98729 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST_ADJ';
98730 p_apps_owner                   VARCHAR2(30);
98731 l_log_module                   VARCHAR2(240);
98732 BEGIN
98733 IF g_log_enabled THEN
98734       l_log_module := C_DEFAULT_MODULE||'.insert_sources_165';
98735 END IF;
98736 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
98737 
98738       trace
98739          (p_msg      => 'BEGIN of insert_sources_165'
98740          ,p_level    => C_LEVEL_PROCEDURE
98741          ,p_module   => l_log_module);
98742 
98743 END IF;
98744 
98745 -- select APPS owner
98746 SELECT oracle_username
98747   INTO p_apps_owner
98748   FROM fnd_oracle_userid
98749  WHERE read_only_flag = 'U'
98750 ;
98751 
98752 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
98753       trace
98754          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
98755                         ' - p_language = '||p_language||
98756                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
98757                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
98758                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
98759                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
98760          ,p_level    => C_LEVEL_STATEMENT
98761          ,p_module   => l_log_module);
98762 END IF;
98763 
98764 
98765 --
98766 INSERT INTO xla_diag_sources --hdr2
98767 (
98768         event_id
98769       , ledger_id
98770       , sla_ledger_id
98771       , description_language
98772       , object_name
98773       , object_type_code
98774       , line_number
98775       , source_application_id
98776       , source_type_code
98777       , source_code
98778       , source_value
98779       , source_meaning
98780       , created_by
98781       , creation_date
98782       , last_update_date
98783       , last_updated_by
98784       , last_update_login
98785       , program_update_date
98786       , program_application_id
98787       , program_id
98788       , request_id
98789 )
98790 SELECT
98791         event_id
98792       , p_target_ledger_id
98793       , p_sla_ledger_id
98794       , p_language
98795       , object_name
98796       , object_type_code
98797       , line_number
98798       , source_application_id
98799       , source_type_code
98800       , source_code
98801       , SUBSTR(source_value ,1,1996)
98802       , SUBSTR(source_meaning ,1,200)
98803       , xla_environment_pkg.g_Usr_Id
98804       , TRUNC(SYSDATE)
98805       , TRUNC(SYSDATE)
98806       , xla_environment_pkg.g_Usr_Id
98807       , xla_environment_pkg.g_Login_Id
98808       , TRUNC(SYSDATE)
98809       , xla_environment_pkg.g_Prog_Appl_Id
98810       , xla_environment_pkg.g_Prog_Id
98811       , xla_environment_pkg.g_Req_Id
98815             , CASE r
98812   FROM (
98813        SELECT xet.event_id                  event_id
98814             , 0                          line_number
98816                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
98817                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
98818                 
98819                ELSE null
98820               END                           object_name
98821             , CASE r
98822                 WHEN 1 THEN 'HEADER' 
98823                 WHEN 2 THEN 'HEADER' 
98824                 
98825                 ELSE null
98826               END                           object_type_code
98827             , CASE r
98828                 WHEN 1 THEN '275' 
98829                 WHEN 2 THEN '275' 
98830                 
98831                 ELSE null
98832               END                           source_application_id
98833             , 'S'             source_type_code
98834             , CASE r
98835                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
98836                 WHEN 2 THEN 'GL_DATE' 
98837                 
98838                 ELSE null
98839               END                           source_code
98840             , CASE r
98841                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
98842                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
98843                 
98844                 ELSE null
98845               END                           source_value
98846             , null              source_meaning
98847          FROM xla_events_gt     xet  
98848       , PA_XLA_EXP_HEADER_V  h2
98849              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
98850          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
98851            AND xet.event_class_code = C_EVENT_CLASS_CODE
98852               AND h2.event_id = xet.event_id
98853 
98854 )
98855 ;
98856 --
98857 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
98858 
98859       trace
98860          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
98861          ,p_level    => C_LEVEL_STATEMENT
98862          ,p_module   => l_log_module);
98863 
98864 END IF;
98865 --
98866 
98867 
98868 
98869 --
98870 INSERT INTO xla_diag_sources  --line2
98871 (
98872         event_id
98873       , ledger_id
98874       , sla_ledger_id
98875       , description_language
98876       , object_name
98877       , object_type_code
98878       , line_number
98879       , source_application_id
98880       , source_type_code
98881       , source_code
98882       , source_value
98883       , source_meaning
98884       , created_by
98885       , creation_date
98886       , last_update_date
98887       , last_updated_by
98888       , last_update_login
98889       , program_update_date
98890       , program_application_id
98891       , program_id
98892       , request_id
98893 )
98894 SELECT  event_id
98895       , p_target_ledger_id
98896       , p_sla_ledger_id
98897       , p_language
98898       , object_name
98899       , object_type_code
98900       , line_number
98901       , source_application_id
98902       , source_type_code
98903       , source_code
98904       , SUBSTR(source_value,1,1996)
98905       , SUBSTR(source_meaning ,1,200)
98906       , xla_environment_pkg.g_Usr_Id
98907       , TRUNC(SYSDATE)
98908       , TRUNC(SYSDATE)
98909       , xla_environment_pkg.g_Usr_Id
98910       , xla_environment_pkg.g_Login_Id
98911       , TRUNC(SYSDATE)
98912       , xla_environment_pkg.g_Prog_Appl_Id
98913       , xla_environment_pkg.g_Prog_Id
98914       , xla_environment_pkg.g_Req_Id
98915   FROM (
98916        SELECT xet.event_id                  event_id
98917             , l1.line_number                 line_number
98918             , CASE r
98919                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
98920                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
98921                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
98922                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
98923                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
98924                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
98925                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
98926                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
98927                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
98928                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
98929                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
98930                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
98931                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
98932                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
98933                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
98934                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
98935                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
98936                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
98937                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
98938                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
98939                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
98940                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
98941                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
98942                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
98943                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
98944                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
98945                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
98946                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
98947                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
98948                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
98949                 
98950                ELSE null
98951               END                           object_name
98952             , CASE r
98953                 WHEN 1 THEN 'LINE' 
98954                 WHEN 2 THEN 'LINE' 
98955                 WHEN 3 THEN 'LINE' 
98956                 WHEN 4 THEN 'LINE' 
98957                 WHEN 5 THEN 'LINE' 
98961                 WHEN 9 THEN 'LINE' 
98958                 WHEN 6 THEN 'LINE' 
98959                 WHEN 7 THEN 'LINE' 
98960                 WHEN 8 THEN 'LINE' 
98962                 WHEN 10 THEN 'LINE' 
98963                 WHEN 11 THEN 'LINE' 
98964                 WHEN 12 THEN 'LINE' 
98965                 WHEN 13 THEN 'LINE' 
98966                 WHEN 14 THEN 'LINE' 
98967                 WHEN 15 THEN 'LINE' 
98968                 WHEN 16 THEN 'LINE' 
98969                 WHEN 17 THEN 'LINE' 
98970                 WHEN 18 THEN 'LINE' 
98971                 WHEN 19 THEN 'LINE' 
98972                 WHEN 20 THEN 'LINE' 
98973                 WHEN 21 THEN 'LINE' 
98974                 WHEN 22 THEN 'LINE' 
98975                 WHEN 23 THEN 'LINE' 
98976                 WHEN 24 THEN 'LINE' 
98977                 WHEN 25 THEN 'LINE' 
98978                 WHEN 26 THEN 'LINE' 
98979                 WHEN 27 THEN 'LINE' 
98980                 WHEN 28 THEN 'LINE' 
98981                 WHEN 29 THEN 'LINE' 
98982                 WHEN 30 THEN 'LINE' 
98983                 
98984                 ELSE null
98985               END                           object_type_code
98986             , CASE r
98987                 WHEN 1 THEN '275' 
98988                 WHEN 2 THEN '275' 
98989                 WHEN 3 THEN '275' 
98990                 WHEN 4 THEN '275' 
98991                 WHEN 5 THEN '275' 
98992                 WHEN 6 THEN '275' 
98993                 WHEN 7 THEN '275' 
98994                 WHEN 8 THEN '275' 
98995                 WHEN 9 THEN '275' 
98996                 WHEN 10 THEN '275' 
98997                 WHEN 11 THEN '275' 
98998                 WHEN 12 THEN '275' 
98999                 WHEN 13 THEN '275' 
99000                 WHEN 14 THEN '275' 
99001                 WHEN 15 THEN '275' 
99002                 WHEN 16 THEN '275' 
99003                 WHEN 17 THEN '275' 
99004                 WHEN 18 THEN '275' 
99005                 WHEN 19 THEN '275' 
99006                 WHEN 20 THEN '275' 
99007                 WHEN 21 THEN '275' 
99008                 WHEN 22 THEN '275' 
99009                 WHEN 23 THEN '275' 
99010                 WHEN 24 THEN '275' 
99011                 WHEN 25 THEN '275' 
99012                 WHEN 26 THEN '275' 
99013                 WHEN 27 THEN '275' 
99014                 WHEN 28 THEN '275' 
99015                 WHEN 29 THEN '275' 
99016                 WHEN 30 THEN '275' 
99017                 
99018                 ELSE null
99019               END                           source_application_id
99020             , 'S'             source_type_code
99021             , CASE r
99022                 WHEN 1 THEN 'BUDGET_CCID' 
99023                 WHEN 2 THEN 'COST_CCID' 
99024                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
99025                 WHEN 4 THEN 'ADJ_COST_CCID' 
99026                 WHEN 5 THEN 'COST_CLEARING_CCID' 
99027                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
99028                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
99029                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
99030                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
99031                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
99032                 WHEN 11 THEN 'EXCHANGE_RATE' 
99033                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
99034                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
99035                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
99036                 WHEN 15 THEN 'LINE_NUMBER' 
99037                 WHEN 16 THEN 'LINE_TYPE' 
99038                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
99039                 WHEN 18 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
99040                 WHEN 19 THEN 'ENTERED_BURDENED_COST' 
99041                 WHEN 20 THEN 'ACCT_BURDENED_COST' 
99042                 WHEN 21 THEN 'ENCUMBRANCE_AMOUNT' 
99043                 WHEN 22 THEN 'PA_APPLICATION_ID' 
99044                 WHEN 23 THEN 'PA_DISTRIBUTION_TYPE' 
99045                 WHEN 24 THEN 'PA_ENTITY_CODE' 
99046                 WHEN 25 THEN 'PA_FIRST_DIST_ID' 
99047                 WHEN 26 THEN 'PA_FIRST_SYS_TRANS_ID' 
99048                 WHEN 27 THEN 'PA_SECOND_DIST_ID' 
99049                 WHEN 28 THEN 'ENC_UPG_CR_ACCT_CLASS' 
99050                 WHEN 29 THEN 'ENCUMBRANCE_TYPE_ID' 
99051                 WHEN 30 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
99052                 
99053                 ELSE null
99054               END                           source_code
99055             , CASE r
99056                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
99057                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
99058                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
99059                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
99060                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
99061                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
99062                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
99063                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
99064                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
99065                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
99066                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
99067                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
99068                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
99069                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
99070                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
99071                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
99072                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
99073                 WHEN 18 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
99074                 WHEN 19 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
99075                 WHEN 20 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
99076                 WHEN 21 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
99077                 WHEN 22 THEN TO_CHAR(l1.PA_APPLICATION_ID)
99078                 WHEN 23 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
99082                 WHEN 27 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
99079                 WHEN 24 THEN TO_CHAR(l1.PA_ENTITY_CODE)
99080                 WHEN 25 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
99081                 WHEN 26 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
99083                 WHEN 28 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
99084                 WHEN 29 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
99085                 WHEN 30 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
99086                 
99087                 ELSE null
99088               END                           source_value
99089             , CASE r
99090                 WHEN 3 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
99091                           103371
99092                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
99093                          ,'ALLOW_OVERRIDE_CCID_FLAG'
99094                          ,'S'
99095                          ,275)
99096                 WHEN 16 THEN fvl35.meaning
99097                 
99098                 ELSE null
99099               END               source_meaning
99100          FROM  xla_events_gt     xet  
99101         , PA_XLA_CDL_LINES_V  l1
99102   , fnd_lookup_values    fvl35
99103             , (select rownum r from all_objects where rownum <= 30 and owner = p_apps_owner)
99104         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
99105           AND xet.event_class_code = C_EVENT_CLASS_CODE
99106             AND l1.event_id          = xet.event_id
99107    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
99108   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
99109   AND fvl35.view_application_id(+) = 275
99110   AND fvl35.language(+)            = USERENV('LANG')
99111   
99112 )
99113 ;
99114 --
99115 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
99116 
99117       trace
99118          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
99119          ,p_level    => C_LEVEL_STATEMENT
99120          ,p_module   => l_log_module);
99121 
99122 END IF;
99123 
99124 
99125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99126       trace
99127          (p_msg      => 'END of insert_sources_165'
99128          ,p_level    => C_LEVEL_PROCEDURE
99129          ,p_module   => l_log_module);
99130 END IF;
99131 EXCEPTION
99132   WHEN xla_exceptions_pkg.application_exception THEN
99133       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
99134             trace
99135                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
99136                ,p_level    => C_LEVEL_EXCEPTION
99137                ,p_module   => l_log_module);
99138       END IF;
99139       RAISE;
99140   WHEN OTHERS THEN
99141       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
99142             trace
99143                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
99144                ,p_level    => C_LEVEL_EXCEPTION
99145                ,p_module   => l_log_module);
99146        END IF;
99147        xla_exceptions_pkg.raise_message
99148            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_165');
99149 END insert_sources_165;
99150 --
99151 
99152 ---------------------------------------
99153 --
99154 -- PRIVATE FUNCTION
99155 --         EventClass_165
99156 --
99157 ----------------------------------------
99158 --
99159 FUNCTION EventClass_165
99160        (p_application_id         IN NUMBER
99161        ,p_base_ledger_id         IN NUMBER
99162        ,p_target_ledger_id       IN NUMBER
99163        ,p_language               IN VARCHAR2
99164        ,p_currency_code          IN VARCHAR2
99165        ,p_sla_ledger_id          IN NUMBER
99166        ,p_pad_start_date         IN DATE
99167        ,p_pad_end_date           IN DATE
99168        ,p_primary_ledger_id      IN NUMBER)
99169 RETURN BOOLEAN IS
99170 --
99171 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ADJ_ALL';
99172 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST_ADJ';
99173 
99174 l_calculate_acctd_flag   VARCHAR2(1) :='N';
99175 l_calculate_g_l_flag     VARCHAR2(1) :='N';
99176 --
99177 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99178 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99179 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
99180 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
99181 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99182 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
99183 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
99184 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99185 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
99186 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
99187 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99188 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99189 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99190 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
99191 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
99192 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
99193 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
99194 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
99195 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
99196 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
99197 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
99198 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
99199 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
99203 l_previous_event_id                    NUMBER;
99200 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
99201 
99202 l_event_id                             NUMBER;
99204 l_first_event_id                       NUMBER;
99205 l_last_event_id                        NUMBER;
99206 
99207 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
99208 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
99209 --
99210 --
99211 l_result                    BOOLEAN := TRUE;
99212 l_rows                      NUMBER  := 1000;
99213 l_event_type_name           VARCHAR2(80) := 'All';
99214 l_event_class_name          VARCHAR2(80) := 'Total Burdened Cost Adjustment';
99215 l_description               VARCHAR2(4000);
99216 l_transaction_reversal      NUMBER;
99217 l_ae_header_id              NUMBER;
99218 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
99219 l_log_module                VARCHAR2(240);
99220 --
99221 l_acct_reversal_source      VARCHAR2(30);
99222 l_trx_reversal_source       VARCHAR2(30);
99223 
99224 l_continue_with_lines       BOOLEAN := TRUE;
99225 --
99226 l_acc_rev_gl_date_source    DATE;                      -- 4262811
99227 --
99228 type t_array_event_id is table of number index by binary_integer;
99229 
99230 l_rec_array_event                    t_rec_array_event;
99231 l_null_rec_array_event               t_rec_array_event;
99232 l_array_ae_header_id                 xla_number_array_type;
99233 l_actual_flag                        VARCHAR2(1) := NULL;
99234 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
99235 l_balance_type_code                  VARCHAR2(1) :=NULL;
99236 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
99237 
99238 --
99239 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
99240 --
99241 
99242 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
99243 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
99244 
99245 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
99246 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
99247 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
99248 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
99249 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
99250 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
99251 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
99252 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
99253 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
99254 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
99255 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
99256 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
99257 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
99258 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
99259 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
99260 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
99261 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
99262 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
99263 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
99264 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
99265 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
99266 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
99267 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
99268 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
99269 TYPE t_array_source_58 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
99270 TYPE t_array_source_59 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
99271 TYPE t_array_source_60 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
99272 TYPE t_array_source_61 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
99273 TYPE t_array_source_62 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
99274 TYPE t_array_source_63 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
99275 
99276 l_array_source_33              t_array_source_33;
99277 l_array_source_75              t_array_source_75;
99278 
99279 l_array_source_3      t_array_source_3;
99280 l_array_source_4      t_array_source_4;
99281 l_array_source_5      t_array_source_5;
99282 l_array_source_6      t_array_source_6;
99283 l_array_source_7      t_array_source_7;
99284 l_array_source_8      t_array_source_8;
99285 l_array_source_23      t_array_source_23;
99286 l_array_source_24      t_array_source_24;
99287 l_array_source_26      t_array_source_26;
99288 l_array_source_28      t_array_source_28;
99289 l_array_source_29      t_array_source_29;
99290 l_array_source_30      t_array_source_30;
99291 l_array_source_31      t_array_source_31;
99292 l_array_source_32      t_array_source_32;
99293 l_array_source_34      t_array_source_34;
99294 l_array_source_35      t_array_source_35;
99295 l_array_source_35_meaning      t_array_lookup_meaning;
99299 l_array_source_53      t_array_source_53;
99296 l_array_source_36      t_array_source_36;
99297 l_array_source_44      t_array_source_44;
99298 l_array_source_52      t_array_source_52;
99300 l_array_source_54      t_array_source_54;
99301 l_array_source_55      t_array_source_55;
99302 l_array_source_56      t_array_source_56;
99303 l_array_source_57      t_array_source_57;
99304 l_array_source_58      t_array_source_58;
99305 l_array_source_59      t_array_source_59;
99306 l_array_source_60      t_array_source_60;
99307 l_array_source_61      t_array_source_61;
99308 l_array_source_62      t_array_source_62;
99309 l_array_source_63      t_array_source_63;
99310 
99311 --
99312 CURSOR header_cur
99313 IS
99314 SELECT /*+ leading(xet) cardinality(xet,1) */
99315 -- Event Class Code: TOT_BURDENED_COST_ADJ
99316     xet.entity_id
99317    ,xet.legal_entity_id
99318    ,xet.entity_code
99319    ,xet.transaction_number
99320    ,xet.event_id
99321    ,xet.event_class_code
99322    ,xet.event_type_code
99323    ,xet.event_number
99324    ,xet.event_date
99325    ,xet.transaction_date
99326    ,xet.reference_num_1
99327    ,xet.reference_num_2
99328    ,xet.reference_num_3
99329    ,xet.reference_num_4
99330    ,xet.reference_char_1
99331    ,xet.reference_char_2
99332    ,xet.reference_char_3
99333    ,xet.reference_char_4
99334    ,xet.reference_date_1
99335    ,xet.reference_date_2
99336    ,xet.reference_date_3
99337    ,xet.reference_date_4
99338    ,xet.event_created_by
99339    ,xet.budgetary_control_flag 
99340   , h2.EXPENDITURE_ITEM_ID    source_33
99341   , h2.GL_DATE    source_75
99342   FROM xla_events_gt     xet 
99343   , PA_XLA_EXP_HEADER_V  h2
99344  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
99345    and xet.event_class_code = C_EVENT_CLASS_CODE
99346    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
99347 
99348  ORDER BY event_id
99349 ;
99350 
99351 
99352 --
99353 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
99354 IS
99355 SELECT  /*+ leading(xet) cardinality(xet,1) */
99356 -- Event Class Code: TOT_BURDENED_COST_ADJ
99357     xet.entity_id
99358    ,xet.legal_entity_id
99359    ,xet.entity_code
99360    ,xet.transaction_number
99361    ,xet.event_id
99362    ,xet.event_class_code
99363    ,xet.event_type_code
99364    ,xet.event_number
99365    ,xet.event_date
99366    ,xet.transaction_date
99367    ,xet.reference_num_1
99368    ,xet.reference_num_2
99369    ,xet.reference_num_3
99370    ,xet.reference_num_4
99371    ,xet.reference_char_1
99372    ,xet.reference_char_2
99373    ,xet.reference_char_3
99374    ,xet.reference_char_4
99375    ,xet.reference_date_1
99376    ,xet.reference_date_2
99377    ,xet.reference_date_3
99378    ,xet.reference_date_4
99379    ,xet.event_created_by
99380    ,xet.budgetary_control_flag
99381  , l1.LINE_NUMBER  
99382   , l1.BUDGET_CCID    source_3
99383   , l1.COST_CCID    source_4
99384   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
99385   , l1.ADJ_COST_CCID    source_6
99386   , l1.COST_CLEARING_CCID    source_7
99387   , l1.ADJ_COST_CLEARING_CCID    source_8
99388   , l1.REVERSING_LINE_FLAG    source_23
99389   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
99390   , l1.ENTERED_CURRENCY_CODE    source_26
99391   , l1.EXCHANGE_RATE_DATE    source_28
99392   , l1.EXCHANGE_RATE    source_29
99393   , l1.EXCHANGE_RATE_TYPE    source_30
99394   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
99395   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
99396   , l1.LINE_NUMBER    source_34
99397   , l1.LINE_TYPE    source_35
99398   , fvl35.meaning   source_35_meaning
99399   , l1.LINE_NUM_REVERSED    source_36
99400   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_44
99401   , l1.ENTERED_BURDENED_COST    source_52
99402   , l1.ACCT_BURDENED_COST    source_53
99403   , l1.ENCUMBRANCE_AMOUNT    source_54
99404   , l1.PA_APPLICATION_ID    source_55
99405   , l1.PA_DISTRIBUTION_TYPE    source_56
99406   , l1.PA_ENTITY_CODE    source_57
99407   , l1.PA_FIRST_DIST_ID    source_58
99408   , l1.PA_FIRST_SYS_TRANS_ID    source_59
99409   , l1.PA_SECOND_DIST_ID    source_60
99410   , l1.ENC_UPG_CR_ACCT_CLASS    source_61
99411   , l1.ENCUMBRANCE_TYPE_ID    source_62
99412   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_63
99413   FROM xla_events_gt     xet 
99414   , PA_XLA_CDL_LINES_V  l1
99415   , fnd_lookup_values    fvl35
99416  WHERE xet.event_id between x_first_event_id and x_last_event_id
99417    and xet.event_date between p_pad_start_date and p_pad_end_date
99418    and xet.event_class_code = C_EVENT_CLASS_CODE
99419    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
99420    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
99421   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
99422   AND fvl35.view_application_id(+) = 275
99423   AND fvl35.language(+)            = USERENV('LANG')
99424   ;
99425 
99426 --
99427 BEGIN
99428 IF g_log_enabled THEN
99429    l_log_module := C_DEFAULT_MODULE||'.EventClass_165';
99430 END IF;
99431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
99432    trace
99433       (p_msg      => 'BEGIN of EventClass_165'
99434       ,p_level    => C_LEVEL_PROCEDURE
99435       ,p_module   => l_log_module);
99436 END IF;
99437 
99438 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
99439    trace
99440       (p_msg      => 'p_application_id = '||p_application_id||
99441                      ' - p_base_ledger_id = '||p_base_ledger_id||
99442                      ' - p_target_ledger_id  = '||p_target_ledger_id||
99443                      ' - p_language = '||p_language||
99444                      ' - p_currency_code = '||p_currency_code||
99445                      ' - p_sla_ledger_id = '||p_sla_ledger_id
99449 --
99446       ,p_level    => C_LEVEL_STATEMENT
99447       ,p_module   => l_log_module);
99448 END IF;
99450 -- initialze arrays
99451 --
99452 g_array_event.DELETE;
99453 l_rec_array_event := l_null_rec_array_event;
99454 --
99455 --------------------------------------
99456 -- 4262811 Initialze MPA Line Number
99457 --------------------------------------
99458 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
99459 
99460 --
99461 
99462 --
99463 OPEN header_cur;
99464 --
99465 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
99466    trace
99467    (p_msg      => 'SQL - FETCH header_cur'
99468    ,p_level    => C_LEVEL_STATEMENT
99469    ,p_module   => l_log_module);
99470 END IF;
99471 --
99472 LOOP
99473 FETCH header_cur BULK COLLECT INTO
99474         l_array_entity_id
99475       , l_array_legal_entity_id
99476       , l_array_entity_code
99477       , l_array_transaction_num
99478       , l_array_event_id
99479       , l_array_class_code
99480       , l_array_event_type
99481       , l_array_event_number
99482       , l_array_event_date
99483       , l_array_transaction_date
99484       , l_array_reference_num_1
99485       , l_array_reference_num_2
99486       , l_array_reference_num_3
99487       , l_array_reference_num_4
99488       , l_array_reference_char_1
99489       , l_array_reference_char_2
99490       , l_array_reference_char_3
99491       , l_array_reference_char_4
99492       , l_array_reference_date_1
99493       , l_array_reference_date_2
99494       , l_array_reference_date_3
99495       , l_array_reference_date_4
99496       , l_array_event_created_by
99497       , l_array_budgetary_control_flag 
99498       , l_array_source_33
99499       , l_array_source_75
99500       LIMIT l_rows;
99501 --
99502 IF (C_LEVEL_EVENT >= g_log_level) THEN
99503    trace
99504    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
99505    ,p_level    => C_LEVEL_EVENT
99506    ,p_module   => l_log_module);
99507 END IF;
99508 --
99509 EXIT WHEN l_array_entity_id.COUNT = 0;
99510 
99511 -- initialize arrays
99512 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
99513 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
99514 
99515 --
99516 -- Bug 4458708
99517 --
99518 XLA_AE_LINES_PKG.g_LineNumber := 0;
99519 
99520 
99521 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
99522 g_last_hdr_idx := l_array_event_id.LAST;
99523 --
99524 -- loop for the headers. Each iteration is for each header extract row
99525 -- fetched in header cursor
99526 --
99527 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
99528 
99529 --
99530 -- set event info as cache for other routines to refer event attributes
99531 --
99532 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
99533    (p_application_id           => p_application_id
99534    ,p_primary_ledger_id        => p_primary_ledger_id
99535    ,p_base_ledger_id           => p_base_ledger_id
99536    ,p_target_ledger_id         => p_target_ledger_id
99537    ,p_entity_id                => l_array_entity_id(hdr_idx)
99538    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
99539    ,p_entity_code              => l_array_entity_code(hdr_idx)
99540    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
99541    ,p_event_id                 => l_array_event_id(hdr_idx)
99542    ,p_event_class_code         => l_array_class_code(hdr_idx)
99543    ,p_event_type_code          => l_array_event_type(hdr_idx)
99544    ,p_event_number             => l_array_event_number(hdr_idx)
99545    ,p_event_date               => l_array_event_date(hdr_idx)
99546    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
99547    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
99548    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
99549    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
99550    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
99551    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
99552    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
99553    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
99554    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
99555    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
99556    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
99557    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
99558    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
99559    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
99560    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
99561 
99562 --
99563 -- set the status of entry to C_VALID (0)
99564 --
99565 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
99566 
99567 --
99568 -- initialize a row for ae header
99569 --
99570 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
99571 
99572 l_event_id := l_array_event_id(hdr_idx);
99573 
99574 --
99575 -- storing the hdr_idx for event. May be used by line cursor.
99576 --
99577 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
99578 
99579 --
99580 -- store sources from header extract. This can be improved to
99581 -- store only those sources from header extract that may be used in lines
99582 --
99583 
99584 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
99585 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
99586 
99587 --
99588 -- initilaize the status of ae headers for diffrent balance types
99589 -- the status is initialised to C_NOT_CREATED (2)
99590 --
99594 
99591 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
99592 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
99593 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
99595 --
99596 -- call api to validate and store accounting attributes for header
99597 --
99598 
99599 ------------------------------------------------------------
99600 -- Accrual Reversal : to get date for Standard Source (NONE)
99601 ------------------------------------------------------------
99602 l_acc_rev_gl_date_source := NULL;
99603 
99604      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
99605       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
99606 
99607 
99608 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
99609 
99610 XLA_AE_HEADER_PKG.SetJeCategoryName;
99611 
99612 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
99613 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
99614 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
99615 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
99616 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
99617 
99618 
99619 -- No header level analytical criteria
99620 
99621 --
99622 --accounting attribute enhancement, bug 3612931
99623 --
99624 l_trx_reversal_source := SUBSTR(NULL, 1,30);
99625 
99626 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
99627    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
99628 
99629    xla_accounting_err_pkg.build_message
99630       (p_appli_s_name            => 'XLA'
99631       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
99632       ,p_token_1                 => 'ACCT_ATTR_NAME'
99633       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
99634       ,p_token_2                 => 'PRODUCT_NAME'
99635       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
99636       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
99637       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
99638       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
99639 
99640 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
99641    --
99642    -- following sets the accounting attributes needed to reverse
99643    -- accounting for a distributeion
99644    --
99645    xla_ae_lines_pkg.SetTrxReversalAttrs
99646       (p_event_id              => l_event_id
99647       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
99648       ,p_trx_reversal_source   => l_trx_reversal_source);
99649 
99650 END IF;
99651 
99652 
99653 ----------------------------------------------------------------
99654 -- 4262811 -  update the header statuses to invalid in need be
99655 ----------------------------------------------------------------
99656 --
99657 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
99658 
99659 
99660   -----------------------------------------------
99661   -- No accrual reversal for the event class/type
99662   -----------------------------------------------
99663 ----------------------------------------------------------------
99664 
99665 --
99666 -- this ends the header loop iteration for one bulk fetch
99667 --
99668 END LOOP;
99669 
99670 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
99671 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
99672 
99673 --
99674 -- insert dummy rows into lines gt table that were created due to
99675 -- transaction reversals
99676 --
99677 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
99678    l_result := XLA_AE_LINES_PKG.InsertLines;
99679 END IF;
99680 
99681 --
99682 -- reset the temp_line_num for each set of events fetched from header
99683 -- cursor rather than doing it for each new event in line cursor
99684 -- Bug 3939231
99685 --
99686 xla_ae_lines_pkg.g_temp_line_num := 0;
99687 
99688 
99689 
99690 --
99691 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
99692 --
99693 --
99694 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
99695 
99696       trace
99697          (p_msg      => 'SQL - FETCH line_cur'
99698          ,p_level    => C_LEVEL_STATEMENT
99699          ,p_module   => l_log_module);
99700 
99701 END IF;
99702 --
99703 --
99704 LOOP
99705   --
99706   FETCH line_cur BULK COLLECT INTO
99707         l_array_entity_id
99708       , l_array_legal_entity_id
99709       , l_array_entity_code
99710       , l_array_transaction_num
99711       , l_array_event_id
99712       , l_array_class_code
99713       , l_array_event_type
99714       , l_array_event_number
99715       , l_array_event_date
99716       , l_array_transaction_date
99717       , l_array_reference_num_1
99718       , l_array_reference_num_2
99719       , l_array_reference_num_3
99720       , l_array_reference_num_4
99721       , l_array_reference_char_1
99722       , l_array_reference_char_2
99723       , l_array_reference_char_3
99724       , l_array_reference_char_4
99725       , l_array_reference_date_1
99726       , l_array_reference_date_2
99727       , l_array_reference_date_3
99728       , l_array_reference_date_4
99729       , l_array_event_created_by
99730       , l_array_budgetary_control_flag
99731       , l_array_extract_line_num 
99735       , l_array_source_6
99732       , l_array_source_3
99733       , l_array_source_4
99734       , l_array_source_5
99736       , l_array_source_7
99737       , l_array_source_8
99738       , l_array_source_23
99739       , l_array_source_24
99740       , l_array_source_26
99741       , l_array_source_28
99742       , l_array_source_29
99743       , l_array_source_30
99744       , l_array_source_31
99745       , l_array_source_32
99746       , l_array_source_34
99747       , l_array_source_35
99748       , l_array_source_35_meaning
99749       , l_array_source_36
99750       , l_array_source_44
99751       , l_array_source_52
99752       , l_array_source_53
99753       , l_array_source_54
99754       , l_array_source_55
99755       , l_array_source_56
99756       , l_array_source_57
99757       , l_array_source_58
99758       , l_array_source_59
99759       , l_array_source_60
99760       , l_array_source_61
99761       , l_array_source_62
99762       , l_array_source_63
99763       LIMIT l_rows;
99764 
99765   --
99766   IF (C_LEVEL_EVENT >= g_log_level) THEN
99767             trace
99768                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
99769                ,p_level    => C_LEVEL_EVENT
99770                ,p_module   => l_log_module);
99771   END IF;
99772   --
99773   EXIT WHEN l_array_entity_id.count = 0;
99774 
99775   XLA_AE_LINES_PKG.g_rec_lines := null;
99776 
99777 --
99778 -- Bug 4458708
99779 --
99780 XLA_AE_LINES_PKG.g_LineNumber := 0;
99781 --
99782 --
99783 
99784 FOR Idx IN 1..l_array_event_id.count LOOP
99785    --
99786    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
99787    --
99788    l_event_id := l_array_event_id(idx);  -- 5648433
99789 
99790    --
99791    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
99792    --
99793 
99794    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
99795              (g_array_event(l_event_id).array_value_num('header_index'))
99796          ,'N'
99797          ) <> 'Y'
99798    THEN
99799       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
99800          trace
99801             (p_msg      => 'Trancaction revesal option is not Y '
99802             ,p_level    => C_LEVEL_STATEMENT
99803             ,p_module   => l_log_module);
99804       END IF;
99805 
99806 --
99807 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
99808 --
99809 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
99810 --
99811 -- set event info as cache for other routines to refer event attributes
99812 --
99813 
99814 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
99815    l_previous_event_id := l_event_id;
99816 
99817    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
99818       (p_application_id           => p_application_id
99819       ,p_primary_ledger_id        => p_primary_ledger_id
99820       ,p_base_ledger_id           => p_base_ledger_id
99821       ,p_target_ledger_id         => p_target_ledger_id
99822       ,p_entity_id                => l_array_entity_id(Idx)
99823       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
99824       ,p_entity_code              => l_array_entity_code(Idx)
99825       ,p_transaction_num          => l_array_transaction_num(Idx)
99826       ,p_event_id                 => l_array_event_id(Idx)
99827       ,p_event_class_code         => l_array_class_code(Idx)
99828       ,p_event_type_code          => l_array_event_type(Idx)
99829       ,p_event_number             => l_array_event_number(Idx)
99830       ,p_event_date               => l_array_event_date(Idx)
99831       ,p_transaction_date         => l_array_transaction_date(Idx)
99832       ,p_reference_num_1          => l_array_reference_num_1(Idx)
99833       ,p_reference_num_2          => l_array_reference_num_2(Idx)
99834       ,p_reference_num_3          => l_array_reference_num_3(Idx)
99835       ,p_reference_num_4          => l_array_reference_num_4(Idx)
99836       ,p_reference_char_1         => l_array_reference_char_1(Idx)
99837       ,p_reference_char_2         => l_array_reference_char_2(Idx)
99838       ,p_reference_char_3         => l_array_reference_char_3(Idx)
99839       ,p_reference_char_4         => l_array_reference_char_4(Idx)
99840       ,p_reference_date_1         => l_array_reference_date_1(Idx)
99841       ,p_reference_date_2         => l_array_reference_date_2(Idx)
99842       ,p_reference_date_3         => l_array_reference_date_3(Idx)
99843       ,p_reference_date_4         => l_array_reference_date_4(Idx)
99844       ,p_event_created_by         => l_array_event_created_by(Idx)
99845       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
99846        --
99847 END IF;
99848 
99849 
99850 
99851 --
99852 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
99853 
99854 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
99855 
99856 IF l_continue_with_lines THEN
99857    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
99858       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
99859 
99860       xla_accounting_err_pkg.build_message
99861          (p_appli_s_name            => 'XLA'
99862          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
99863          ,p_token_1                 => 'LINE_NUMBER'
99864          ,p_value_1                 => l_array_extract_line_num(Idx)
99865          ,p_token_2                 => 'PRODUCT_NAME'
99866          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
99867          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
99868          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
99872       --
99869          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
99870 
99871    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
99873       -- following sets the accounting attributes needed to reverse
99874       -- accounting for a distributeion
99875       --
99876 
99877       --
99878       -- 5217187
99879       --
99880       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
99881       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
99882                                        g_array_event(l_event_id).array_value_num('header_index'));
99883       --
99884       --
99885 
99886       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
99887       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
99888       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
99889       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
99890       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
99891       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
99892       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
99893       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_52(Idx);
99894       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
99895       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
99896       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
99897       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_53(Idx);
99898       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
99899       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
99900       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
99901       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
99902       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
99903       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
99904       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
99905       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
99906       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
99907       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
99908       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
99909       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_52(Idx);
99910       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
99911       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
99912       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
99913       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_53(Idx);
99914       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
99915       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
99916       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
99917       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
99918       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
99919       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
99920       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
99921       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
99922       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
99923       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
99924       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
99925       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
99926       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
99927       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
99928       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_DR_ACCT_CLASS';
99929       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_61(Idx);
99930       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_DR_CCID';
99931       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_3(Idx);
99932       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_DR_ENTERED_AMT';
99933       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_54(Idx);
99934       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_DR_ENTERED_CURR';
99935       l_rec_rev_acct_attrs.array_char_value(26)  := 
99936 xla_ae_sources_pkg.GetSystemSourceChar(
99937    p_source_code           => 'XLA_CURRENCY_CODE'
99938  , p_source_type_code      => 'Y'
99939  , p_source_application_id =>  602
99940 );
99941       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_DR_LEDGER_AMT';
99942       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_54(Idx);
99943       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_OPTION';
99944       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_44(Idx);
99945       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'REVERSED_DISTRIBUTION_ID1';
99946       l_rec_rev_acct_attrs.array_num_value(29)  := g_array_event(l_event_id).array_value_num('source_33');
99947       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'REVERSED_DISTRIBUTION_ID2';
99948       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_36(Idx);
99949       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'REVERSED_DISTRIBUTION_TYPE';
99950       l_rec_rev_acct_attrs.array_char_value(31)  := l_array_source_35(Idx);
99951       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'UPG_CR_ENC_TYPE_ID';
99952       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_62(Idx);
99953       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'UPG_DR_ENC_TYPE_ID';
99954       l_rec_rev_acct_attrs.array_num_value(33)  := l_array_source_63(Idx);
99955 
99956 
99957       xla_ae_lines_pkg.SetAcctReversalAttrs
99961          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
99958          (p_event_id             => l_event_id
99959          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
99960          ,p_calculate_acctd_flag => l_calculate_acctd_flag
99962    END IF;
99963 
99964    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
99965        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
99966 
99967 --
99968 AcctLineType_128 (
99969  p_application_id  => p_application_id
99970  ,p_event_id     => l_event_id
99971  ,p_calculate_acctd_flag => l_calculate_acctd_flag
99972  ,p_calculate_g_l_flag => l_calculate_g_l_flag
99973  ,p_actual_flag => l_actual_flag
99974  ,p_balance_type_code => l_balance_type_code
99975  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
99976  
99977  , p_source_3 => l_array_source_3(Idx)
99978  , p_source_4 => l_array_source_4(Idx)
99979  , p_source_5 => l_array_source_5(Idx)
99980  , p_source_6 => l_array_source_6(Idx)
99981  , p_source_7 => l_array_source_7(Idx)
99982  , p_source_23 => l_array_source_23(Idx)
99983  , p_source_24 => l_array_source_24(Idx)
99984  , p_source_26 => l_array_source_26(Idx)
99985  , p_source_28 => l_array_source_28(Idx)
99986  , p_source_29 => l_array_source_29(Idx)
99987  , p_source_30 => l_array_source_30(Idx)
99988  , p_source_31 => l_array_source_31(Idx)
99989  , p_source_32 => l_array_source_32(Idx)
99990  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
99991  , p_source_34 => l_array_source_34(Idx)
99992  , p_source_35 => l_array_source_35(Idx)
99993  , p_source_35_meaning => l_array_source_35_meaning(Idx)
99994  , p_source_36 => l_array_source_36(Idx)
99995  , p_source_44 => l_array_source_44(Idx)
99996  , p_source_52 => l_array_source_52(Idx)
99997  , p_source_53 => l_array_source_53(Idx)
99998  , p_source_54 => l_array_source_54(Idx)
99999  , p_source_55 => l_array_source_55(Idx)
100000  , p_source_56 => l_array_source_56(Idx)
100001  , p_source_57 => l_array_source_57(Idx)
100002  , p_source_58 => l_array_source_58(Idx)
100003  , p_source_59 => l_array_source_59(Idx)
100004  , p_source_60 => l_array_source_60(Idx)
100005  , p_source_61 => l_array_source_61(Idx)
100006  , p_source_62 => l_array_source_62(Idx)
100007  , p_source_63 => l_array_source_63(Idx)
100008  );
100009 If(l_balance_type_code = 'A') THEN
100010   l_actual_gain_loss_ref := l_gain_or_loss_ref;
100011 END IF;
100012 
100013 --
100014 
100015 
100016 --
100017 AcctLineType_130 (
100018  p_application_id  => p_application_id
100019  ,p_event_id     => l_event_id
100020  ,p_calculate_acctd_flag => l_calculate_acctd_flag
100021  ,p_calculate_g_l_flag => l_calculate_g_l_flag
100022  ,p_actual_flag => l_actual_flag
100023  ,p_balance_type_code => l_balance_type_code
100024  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
100025  
100026  , p_source_3 => l_array_source_3(Idx)
100027  , p_source_4 => l_array_source_4(Idx)
100028  , p_source_5 => l_array_source_5(Idx)
100029  , p_source_7 => l_array_source_7(Idx)
100030  , p_source_8 => l_array_source_8(Idx)
100031  , p_source_23 => l_array_source_23(Idx)
100032  , p_source_24 => l_array_source_24(Idx)
100033  , p_source_26 => l_array_source_26(Idx)
100034  , p_source_28 => l_array_source_28(Idx)
100035  , p_source_29 => l_array_source_29(Idx)
100036  , p_source_30 => l_array_source_30(Idx)
100037  , p_source_31 => l_array_source_31(Idx)
100038  , p_source_32 => l_array_source_32(Idx)
100039  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
100040  , p_source_34 => l_array_source_34(Idx)
100041  , p_source_35 => l_array_source_35(Idx)
100042  , p_source_35_meaning => l_array_source_35_meaning(Idx)
100043  , p_source_36 => l_array_source_36(Idx)
100044  , p_source_44 => l_array_source_44(Idx)
100045  , p_source_52 => l_array_source_52(Idx)
100046  , p_source_53 => l_array_source_53(Idx)
100047  , p_source_54 => l_array_source_54(Idx)
100048  , p_source_55 => l_array_source_55(Idx)
100049  , p_source_56 => l_array_source_56(Idx)
100050  , p_source_57 => l_array_source_57(Idx)
100051  , p_source_58 => l_array_source_58(Idx)
100052  , p_source_59 => l_array_source_59(Idx)
100053  , p_source_60 => l_array_source_60(Idx)
100054  , p_source_61 => l_array_source_61(Idx)
100055  , p_source_62 => l_array_source_62(Idx)
100056  , p_source_63 => l_array_source_63(Idx)
100057  );
100058 If(l_balance_type_code = 'A') THEN
100059   l_actual_gain_loss_ref := l_gain_or_loss_ref;
100060 END IF;
100061 
100062 --
100063 
100064 
100065 --
100066 AcctLineType_131 (
100067  p_application_id  => p_application_id
100068  ,p_event_id     => l_event_id
100069  ,p_calculate_acctd_flag => l_calculate_acctd_flag
100070  ,p_calculate_g_l_flag => l_calculate_g_l_flag
100071  ,p_actual_flag => l_actual_flag
100072  ,p_balance_type_code => l_balance_type_code
100073  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
100074  
100075  , p_source_3 => l_array_source_3(Idx)
100076  , p_source_4 => l_array_source_4(Idx)
100077  , p_source_5 => l_array_source_5(Idx)
100078  , p_source_6 => l_array_source_6(Idx)
100079  , p_source_7 => l_array_source_7(Idx)
100080  , p_source_23 => l_array_source_23(Idx)
100081  , p_source_24 => l_array_source_24(Idx)
100082  , p_source_26 => l_array_source_26(Idx)
100083  , p_source_28 => l_array_source_28(Idx)
100084  , p_source_29 => l_array_source_29(Idx)
100085  , p_source_30 => l_array_source_30(Idx)
100086  , p_source_31 => l_array_source_31(Idx)
100087  , p_source_32 => l_array_source_32(Idx)
100088  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
100089  , p_source_34 => l_array_source_34(Idx)
100090  , p_source_35 => l_array_source_35(Idx)
100091  , p_source_35_meaning => l_array_source_35_meaning(Idx)
100092  , p_source_36 => l_array_source_36(Idx)
100093  , p_source_44 => l_array_source_44(Idx)
100094  , p_source_52 => l_array_source_52(Idx)
100095  , p_source_53 => l_array_source_53(Idx)
100096  , p_source_54 => l_array_source_54(Idx)
100100  , p_source_58 => l_array_source_58(Idx)
100097  , p_source_55 => l_array_source_55(Idx)
100098  , p_source_56 => l_array_source_56(Idx)
100099  , p_source_57 => l_array_source_57(Idx)
100101  , p_source_59 => l_array_source_59(Idx)
100102  , p_source_60 => l_array_source_60(Idx)
100103  , p_source_61 => l_array_source_61(Idx)
100104  , p_source_62 => l_array_source_62(Idx)
100105  , p_source_63 => l_array_source_63(Idx)
100106  );
100107 If(l_balance_type_code = 'A') THEN
100108   l_actual_gain_loss_ref := l_gain_or_loss_ref;
100109 END IF;
100110 
100111 --
100112 
100113 
100114 --
100115 AcctLineType_134 (
100116  p_application_id  => p_application_id
100117  ,p_event_id     => l_event_id
100118  ,p_calculate_acctd_flag => l_calculate_acctd_flag
100119  ,p_calculate_g_l_flag => l_calculate_g_l_flag
100120  ,p_actual_flag => l_actual_flag
100121  ,p_balance_type_code => l_balance_type_code
100122  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
100123  
100124  , p_source_3 => l_array_source_3(Idx)
100125  , p_source_4 => l_array_source_4(Idx)
100126  , p_source_5 => l_array_source_5(Idx)
100127  , p_source_7 => l_array_source_7(Idx)
100128  , p_source_8 => l_array_source_8(Idx)
100129  , p_source_23 => l_array_source_23(Idx)
100130  , p_source_24 => l_array_source_24(Idx)
100131  , p_source_26 => l_array_source_26(Idx)
100132  , p_source_28 => l_array_source_28(Idx)
100133  , p_source_29 => l_array_source_29(Idx)
100134  , p_source_30 => l_array_source_30(Idx)
100135  , p_source_31 => l_array_source_31(Idx)
100136  , p_source_32 => l_array_source_32(Idx)
100137  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
100138  , p_source_34 => l_array_source_34(Idx)
100139  , p_source_35 => l_array_source_35(Idx)
100140  , p_source_35_meaning => l_array_source_35_meaning(Idx)
100141  , p_source_36 => l_array_source_36(Idx)
100142  , p_source_44 => l_array_source_44(Idx)
100143  , p_source_52 => l_array_source_52(Idx)
100144  , p_source_53 => l_array_source_53(Idx)
100145  , p_source_54 => l_array_source_54(Idx)
100146  , p_source_55 => l_array_source_55(Idx)
100147  , p_source_56 => l_array_source_56(Idx)
100148  , p_source_57 => l_array_source_57(Idx)
100149  , p_source_58 => l_array_source_58(Idx)
100150  , p_source_59 => l_array_source_59(Idx)
100151  , p_source_60 => l_array_source_60(Idx)
100152  , p_source_61 => l_array_source_61(Idx)
100153  , p_source_62 => l_array_source_62(Idx)
100154  , p_source_63 => l_array_source_63(Idx)
100155  );
100156 If(l_balance_type_code = 'A') THEN
100157   l_actual_gain_loss_ref := l_gain_or_loss_ref;
100158 END IF;
100159 
100160 --
100161 
100162       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
100163       -- or secondary ledger that has different currency with primary
100164       -- or alc that is calculated by sla
100165       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
100166             (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'))
100167 
100168 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
100169 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
100170           AND (l_actual_flag = 'A')) THEN
100171         XLA_AE_LINES_PKG.CreateGainOrLossLines(
100172           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
100173          ,p_application_id   => p_application_id
100174          ,p_amb_context_code => 'DEFAULT'
100175          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
100176          ,p_event_class_code => C_EVENT_CLASS_CODE
100177          ,p_event_type_code  => C_EVENT_TYPE_CODE
100178          
100179          ,p_gain_ccid        => -1
100180          ,p_loss_ccid        => -1
100181 
100182          ,p_actual_flag      => l_actual_flag
100183          ,p_enc_flag         => null
100184          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
100185          ,p_enc_g_l_ref      => null
100186          );
100187       END IF;
100188    END IF;
100189 END IF;
100190 
100191    ELSE
100192       --
100193       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
100194       --
100195       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
100196          trace
100197             (p_msg      => 'Trancaction revesal option is Y'
100198             ,p_level    => C_LEVEL_STATEMENT
100199             ,p_module   => l_log_module);
100200       END IF;
100201    END IF;
100202 
100203 END LOOP;
100204 l_result := XLA_AE_LINES_PKG.InsertLines ;
100205 end loop;
100206 close line_cur;
100207 
100208 
100209 --
100210 -- insert headers into xla_ae_headers_gt table
100211 --
100212 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
100213 
100214 -- insert into errors table here.
100215 
100216 END LOOP;
100217 
100218 --
100219 -- 4865292
100220 --
100221 -- Compare g_hdr_extract_count with event count in
100222 -- CreateHeadersAndLines.
100223 --
100224 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
100225 
100226 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
100227    trace (p_msg     => '# rows extracted from header extract objects '
100228                     || ' (running total): '
100229                     || g_hdr_extract_count
100230          ,p_level   => C_LEVEL_STATEMENT
100231          ,p_module  => l_log_module);
100232 END IF;
100233 
100234 CLOSE header_cur;
100235 --
100236 
100237 --
100238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100239    trace
100240       (p_msg      => 'END of EventClass_165'
100241       ,p_level    => C_LEVEL_PROCEDURE
100242       ,p_module   => l_log_module);
100243 END IF;
100244 --
100245 RETURN l_result;
100246 EXCEPTION
100250 
100247 WHEN xla_exceptions_pkg.application_exception THEN
100248    
100249 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
100251    
100252 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
100253 
100254    RAISE;
100255 WHEN OTHERS THEN
100256    xla_exceptions_pkg.raise_message
100257       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_165');
100258 END EventClass_165;
100259 --
100260 
100261 ---------------------------------------
100262 --
100263 -- PRIVATE PROCEDURE
100264 --         insert_sources_166
100265 --
100266 ----------------------------------------
100267 --
100268 PROCEDURE insert_sources_166(
100269                                 p_target_ledger_id       IN NUMBER
100270                               , p_language               IN VARCHAR2
100271                               , p_sla_ledger_id          IN NUMBER
100272                               , p_pad_start_date         IN DATE
100273                               , p_pad_end_date           IN DATE
100274                          )
100275 IS
100276 
100277 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ALL';
100278 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST';
100279 p_apps_owner                   VARCHAR2(30);
100280 l_log_module                   VARCHAR2(240);
100281 BEGIN
100282 IF g_log_enabled THEN
100283       l_log_module := C_DEFAULT_MODULE||'.insert_sources_166';
100284 END IF;
100285 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100286 
100287       trace
100288          (p_msg      => 'BEGIN of insert_sources_166'
100289          ,p_level    => C_LEVEL_PROCEDURE
100290          ,p_module   => l_log_module);
100291 
100292 END IF;
100293 
100294 -- select APPS owner
100295 SELECT oracle_username
100296   INTO p_apps_owner
100297   FROM fnd_oracle_userid
100298  WHERE read_only_flag = 'U'
100299 ;
100300 
100301 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
100302       trace
100303          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
100304                         ' - p_language = '||p_language||
100305                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
100306                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
100307                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
100308                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
100309          ,p_level    => C_LEVEL_STATEMENT
100310          ,p_module   => l_log_module);
100311 END IF;
100312 
100313 
100314 --
100315 INSERT INTO xla_diag_sources --hdr2
100316 (
100317         event_id
100318       , ledger_id
100319       , sla_ledger_id
100320       , description_language
100321       , object_name
100322       , object_type_code
100323       , line_number
100324       , source_application_id
100325       , source_type_code
100326       , source_code
100327       , source_value
100328       , source_meaning
100329       , created_by
100330       , creation_date
100331       , last_update_date
100332       , last_updated_by
100333       , last_update_login
100334       , program_update_date
100335       , program_application_id
100336       , program_id
100337       , request_id
100338 )
100339 SELECT
100340         event_id
100341       , p_target_ledger_id
100342       , p_sla_ledger_id
100343       , p_language
100344       , object_name
100345       , object_type_code
100346       , line_number
100347       , source_application_id
100348       , source_type_code
100349       , source_code
100350       , SUBSTR(source_value ,1,1996)
100351       , SUBSTR(source_meaning ,1,200)
100352       , xla_environment_pkg.g_Usr_Id
100353       , TRUNC(SYSDATE)
100354       , TRUNC(SYSDATE)
100355       , xla_environment_pkg.g_Usr_Id
100356       , xla_environment_pkg.g_Login_Id
100357       , TRUNC(SYSDATE)
100358       , xla_environment_pkg.g_Prog_Appl_Id
100359       , xla_environment_pkg.g_Prog_Id
100360       , xla_environment_pkg.g_Req_Id
100361   FROM (
100362        SELECT xet.event_id                  event_id
100363             , 0                          line_number
100364             , CASE r
100365                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
100366                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
100367                 
100368                ELSE null
100369               END                           object_name
100370             , CASE r
100371                 WHEN 1 THEN 'HEADER' 
100372                 WHEN 2 THEN 'HEADER' 
100373                 
100374                 ELSE null
100375               END                           object_type_code
100376             , CASE r
100377                 WHEN 1 THEN '275' 
100378                 WHEN 2 THEN '275' 
100379                 
100380                 ELSE null
100381               END                           source_application_id
100382             , 'S'             source_type_code
100383             , CASE r
100384                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
100385                 WHEN 2 THEN 'GL_DATE' 
100386                 
100387                 ELSE null
100388               END                           source_code
100389             , CASE r
100390                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
100391                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
100392                 
100393                 ELSE null
100394               END                           source_value
100395             , null              source_meaning
100396          FROM xla_events_gt     xet  
100397       , PA_XLA_EXP_HEADER_V  h2
100398              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
100399          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
100400            AND xet.event_class_code = C_EVENT_CLASS_CODE
100401               AND h2.event_id = xet.event_id
100405 --
100402 
100403 )
100404 ;
100406 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
100407 
100408       trace
100409          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
100410          ,p_level    => C_LEVEL_STATEMENT
100411          ,p_module   => l_log_module);
100412 
100413 END IF;
100414 --
100415 
100416 
100417 
100418 --
100419 INSERT INTO xla_diag_sources  --line2
100420 (
100421         event_id
100422       , ledger_id
100423       , sla_ledger_id
100424       , description_language
100425       , object_name
100426       , object_type_code
100427       , line_number
100428       , source_application_id
100429       , source_type_code
100430       , source_code
100431       , source_value
100432       , source_meaning
100433       , created_by
100434       , creation_date
100435       , last_update_date
100436       , last_updated_by
100437       , last_update_login
100438       , program_update_date
100439       , program_application_id
100440       , program_id
100441       , request_id
100442 )
100443 SELECT  event_id
100444       , p_target_ledger_id
100445       , p_sla_ledger_id
100446       , p_language
100447       , object_name
100448       , object_type_code
100449       , line_number
100450       , source_application_id
100451       , source_type_code
100452       , source_code
100453       , SUBSTR(source_value,1,1996)
100454       , SUBSTR(source_meaning ,1,200)
100455       , xla_environment_pkg.g_Usr_Id
100456       , TRUNC(SYSDATE)
100457       , TRUNC(SYSDATE)
100458       , xla_environment_pkg.g_Usr_Id
100459       , xla_environment_pkg.g_Login_Id
100460       , TRUNC(SYSDATE)
100461       , xla_environment_pkg.g_Prog_Appl_Id
100462       , xla_environment_pkg.g_Prog_Id
100463       , xla_environment_pkg.g_Req_Id
100464   FROM (
100465        SELECT xet.event_id                  event_id
100466             , l1.line_number                 line_number
100467             , CASE r
100468                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
100469                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
100470                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
100471                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
100472                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
100473                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
100474                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
100475                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
100476                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
100477                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
100478                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
100479                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
100480                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
100481                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
100482                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
100483                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
100484                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
100485                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
100486                 WHEN 19 THEN 'PA_XLA_CDL_LINES_V' 
100487                 WHEN 20 THEN 'PA_XLA_CDL_LINES_V' 
100488                 WHEN 21 THEN 'PA_XLA_CDL_LINES_V' 
100489                 WHEN 22 THEN 'PA_XLA_CDL_LINES_V' 
100490                 WHEN 23 THEN 'PA_XLA_CDL_LINES_V' 
100491                 WHEN 24 THEN 'PA_XLA_CDL_LINES_V' 
100492                 WHEN 25 THEN 'PA_XLA_CDL_LINES_V' 
100493                 WHEN 26 THEN 'PA_XLA_CDL_LINES_V' 
100494                 WHEN 27 THEN 'PA_XLA_CDL_LINES_V' 
100495                 WHEN 28 THEN 'PA_XLA_CDL_LINES_V' 
100496                 WHEN 29 THEN 'PA_XLA_CDL_LINES_V' 
100497                 WHEN 30 THEN 'PA_XLA_CDL_LINES_V' 
100498                 WHEN 31 THEN 'PA_XLA_CDL_LINES_V' 
100499                 
100500                ELSE null
100501               END                           object_name
100502             , CASE r
100503                 WHEN 1 THEN 'LINE' 
100504                 WHEN 2 THEN 'LINE' 
100505                 WHEN 3 THEN 'LINE' 
100506                 WHEN 4 THEN 'LINE' 
100507                 WHEN 5 THEN 'LINE' 
100508                 WHEN 6 THEN 'LINE' 
100509                 WHEN 7 THEN 'LINE' 
100510                 WHEN 8 THEN 'LINE' 
100511                 WHEN 9 THEN 'LINE' 
100512                 WHEN 10 THEN 'LINE' 
100513                 WHEN 11 THEN 'LINE' 
100514                 WHEN 12 THEN 'LINE' 
100515                 WHEN 13 THEN 'LINE' 
100516                 WHEN 14 THEN 'LINE' 
100517                 WHEN 15 THEN 'LINE' 
100518                 WHEN 16 THEN 'LINE' 
100519                 WHEN 17 THEN 'LINE' 
100520                 WHEN 18 THEN 'LINE' 
100521                 WHEN 19 THEN 'LINE' 
100522                 WHEN 20 THEN 'LINE' 
100523                 WHEN 21 THEN 'LINE' 
100524                 WHEN 22 THEN 'LINE' 
100525                 WHEN 23 THEN 'LINE' 
100526                 WHEN 24 THEN 'LINE' 
100527                 WHEN 25 THEN 'LINE' 
100528                 WHEN 26 THEN 'LINE' 
100529                 WHEN 27 THEN 'LINE' 
100530                 WHEN 28 THEN 'LINE' 
100531                 WHEN 29 THEN 'LINE' 
100532                 WHEN 30 THEN 'LINE' 
100533                 WHEN 31 THEN 'LINE' 
100534                 
100535                 ELSE null
100536               END                           object_type_code
100537             , CASE r
100538                 WHEN 1 THEN '275' 
100539                 WHEN 2 THEN '275' 
100540                 WHEN 3 THEN '275' 
100541                 WHEN 4 THEN '275' 
100542                 WHEN 5 THEN '275' 
100543                 WHEN 6 THEN '275' 
100544                 WHEN 7 THEN '275' 
100545                 WHEN 8 THEN '275' 
100546                 WHEN 9 THEN '275' 
100547                 WHEN 10 THEN '275' 
100548                 WHEN 11 THEN '275' 
100549                 WHEN 12 THEN '275' 
100553                 WHEN 16 THEN '275' 
100550                 WHEN 13 THEN '275' 
100551                 WHEN 14 THEN '275' 
100552                 WHEN 15 THEN '275' 
100554                 WHEN 17 THEN '275' 
100555                 WHEN 18 THEN '275' 
100556                 WHEN 19 THEN '275' 
100557                 WHEN 20 THEN '275' 
100558                 WHEN 21 THEN '275' 
100559                 WHEN 22 THEN '275' 
100560                 WHEN 23 THEN '275' 
100561                 WHEN 24 THEN '275' 
100562                 WHEN 25 THEN '275' 
100563                 WHEN 26 THEN '275' 
100564                 WHEN 27 THEN '275' 
100565                 WHEN 28 THEN '275' 
100566                 WHEN 29 THEN '275' 
100567                 WHEN 30 THEN '275' 
100568                 WHEN 31 THEN '275' 
100569                 
100570                 ELSE null
100571               END                           source_application_id
100572             , 'S'             source_type_code
100573             , CASE r
100574                 WHEN 1 THEN 'BUDGET_CCID' 
100575                 WHEN 2 THEN 'COST_CCID' 
100576                 WHEN 3 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
100577                 WHEN 4 THEN 'ADJ_COST_CCID' 
100578                 WHEN 5 THEN 'COST_CLEARING_CCID' 
100579                 WHEN 6 THEN 'ADJ_COST_CLEARING_CCID' 
100580                 WHEN 7 THEN 'REVERSING_LINE_FLAG' 
100581                 WHEN 8 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
100582                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
100583                 WHEN 10 THEN 'EXCHANGE_RATE_DATE' 
100584                 WHEN 11 THEN 'EXCHANGE_RATE' 
100585                 WHEN 12 THEN 'EXCHANGE_RATE_TYPE' 
100586                 WHEN 13 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
100587                 WHEN 14 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
100588                 WHEN 15 THEN 'LINE_NUMBER' 
100589                 WHEN 16 THEN 'LINE_TYPE' 
100590                 WHEN 17 THEN 'LINE_NUM_REVERSED' 
100591                 WHEN 18 THEN 'ENC_UPG_DR_ACCT_CLASS' 
100592                 WHEN 19 THEN 'USE_ENC_UPG_ATTRIB_FLAG' 
100593                 WHEN 20 THEN 'ENTERED_BURDENED_COST' 
100594                 WHEN 21 THEN 'ACCT_BURDENED_COST' 
100595                 WHEN 22 THEN 'ENCUMBRANCE_AMOUNT' 
100596                 WHEN 23 THEN 'PA_APPLICATION_ID' 
100597                 WHEN 24 THEN 'PA_DISTRIBUTION_TYPE' 
100598                 WHEN 25 THEN 'PA_ENTITY_CODE' 
100599                 WHEN 26 THEN 'PA_FIRST_DIST_ID' 
100600                 WHEN 27 THEN 'PA_FIRST_SYS_TRANS_ID' 
100601                 WHEN 28 THEN 'PA_SECOND_DIST_ID' 
100602                 WHEN 29 THEN 'ENC_UPG_CR_ACCT_CLASS' 
100603                 WHEN 30 THEN 'ENCUMBRANCE_TYPE_ID' 
100604                 WHEN 31 THEN 'PROJ_ENCUMBRANCE_TYPE_ID' 
100605                 
100606                 ELSE null
100607               END                           source_code
100608             , CASE r
100609                 WHEN 1 THEN TO_CHAR(l1.BUDGET_CCID)
100610                 WHEN 2 THEN TO_CHAR(l1.COST_CCID)
100611                 WHEN 3 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
100612                 WHEN 4 THEN TO_CHAR(l1.ADJ_COST_CCID)
100613                 WHEN 5 THEN TO_CHAR(l1.COST_CLEARING_CCID)
100614                 WHEN 6 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
100615                 WHEN 7 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
100616                 WHEN 8 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
100617                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
100618                 WHEN 10 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
100619                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE)
100620                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
100621                 WHEN 13 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
100622                 WHEN 14 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
100623                 WHEN 15 THEN TO_CHAR(l1.LINE_NUMBER)
100624                 WHEN 16 THEN TO_CHAR(l1.LINE_TYPE)
100625                 WHEN 17 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
100626                 WHEN 18 THEN TO_CHAR(l1.ENC_UPG_DR_ACCT_CLASS)
100627                 WHEN 19 THEN TO_CHAR(l1.USE_ENC_UPG_ATTRIB_FLAG)
100628                 WHEN 20 THEN TO_CHAR(l1.ENTERED_BURDENED_COST)
100629                 WHEN 21 THEN TO_CHAR(l1.ACCT_BURDENED_COST)
100630                 WHEN 22 THEN TO_CHAR(l1.ENCUMBRANCE_AMOUNT)
100631                 WHEN 23 THEN TO_CHAR(l1.PA_APPLICATION_ID)
100632                 WHEN 24 THEN TO_CHAR(l1.PA_DISTRIBUTION_TYPE)
100633                 WHEN 25 THEN TO_CHAR(l1.PA_ENTITY_CODE)
100634                 WHEN 26 THEN TO_CHAR(l1.PA_FIRST_DIST_ID)
100635                 WHEN 27 THEN TO_CHAR(l1.PA_FIRST_SYS_TRANS_ID)
100636                 WHEN 28 THEN TO_CHAR(l1.PA_SECOND_DIST_ID)
100637                 WHEN 29 THEN TO_CHAR(l1.ENC_UPG_CR_ACCT_CLASS)
100638                 WHEN 30 THEN TO_CHAR(l1.ENCUMBRANCE_TYPE_ID)
100639                 WHEN 31 THEN TO_CHAR(l1.PROJ_ENCUMBRANCE_TYPE_ID)
100640                 
100641                 ELSE null
100642               END                           source_value
100643             , CASE r
100644                 WHEN 3 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
100645                           103371
100646                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
100647                          ,'ALLOW_OVERRIDE_CCID_FLAG'
100648                          ,'S'
100649                          ,275)
100650                 WHEN 16 THEN fvl35.meaning
100651                 
100652                 ELSE null
100653               END               source_meaning
100654          FROM  xla_events_gt     xet  
100655         , PA_XLA_CDL_LINES_V  l1
100656   , fnd_lookup_values    fvl35
100657             , (select rownum r from all_objects where rownum <= 31 and owner = p_apps_owner)
100658         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
100659           AND xet.event_class_code = C_EVENT_CLASS_CODE
100660             AND l1.event_id          = xet.event_id
100661    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
100662   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
100666 )
100663   AND fvl35.view_application_id(+) = 275
100664   AND fvl35.language(+)            = USERENV('LANG')
100665   
100667 ;
100668 --
100669 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
100670 
100671       trace
100672          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
100673          ,p_level    => C_LEVEL_STATEMENT
100674          ,p_module   => l_log_module);
100675 
100676 END IF;
100677 
100678 
100679 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100680       trace
100681          (p_msg      => 'END of insert_sources_166'
100682          ,p_level    => C_LEVEL_PROCEDURE
100683          ,p_module   => l_log_module);
100684 END IF;
100685 EXCEPTION
100686   WHEN xla_exceptions_pkg.application_exception THEN
100687       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
100688             trace
100689                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
100690                ,p_level    => C_LEVEL_EXCEPTION
100691                ,p_module   => l_log_module);
100692       END IF;
100693       RAISE;
100694   WHEN OTHERS THEN
100695       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
100696             trace
100697                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
100698                ,p_level    => C_LEVEL_EXCEPTION
100699                ,p_module   => l_log_module);
100700        END IF;
100701        xla_exceptions_pkg.raise_message
100702            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_166');
100703 END insert_sources_166;
100704 --
100705 
100706 ---------------------------------------
100707 --
100708 -- PRIVATE FUNCTION
100709 --         EventClass_166
100710 --
100711 ----------------------------------------
100712 --
100713 FUNCTION EventClass_166
100714        (p_application_id         IN NUMBER
100715        ,p_base_ledger_id         IN NUMBER
100716        ,p_target_ledger_id       IN NUMBER
100717        ,p_language               IN VARCHAR2
100718        ,p_currency_code          IN VARCHAR2
100719        ,p_sla_ledger_id          IN NUMBER
100720        ,p_pad_start_date         IN DATE
100721        ,p_pad_end_date           IN DATE
100722        ,p_primary_ledger_id      IN NUMBER)
100723 RETURN BOOLEAN IS
100724 --
100725 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'TOT_BURDENED_COST_ALL';
100726 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'TOT_BURDENED_COST';
100727 
100728 l_calculate_acctd_flag   VARCHAR2(1) :='N';
100729 l_calculate_g_l_flag     VARCHAR2(1) :='N';
100730 --
100731 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100732 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100733 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
100734 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
100735 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100736 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
100737 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
100738 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100739 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
100740 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
100741 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100742 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100743 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100744 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
100745 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
100746 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
100747 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
100748 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
100749 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
100750 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
100751 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
100752 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
100753 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
100754 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
100755 
100756 l_event_id                             NUMBER;
100757 l_previous_event_id                    NUMBER;
100758 l_first_event_id                       NUMBER;
100759 l_last_event_id                        NUMBER;
100760 
100761 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
100762 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
100763 --
100764 --
100765 l_result                    BOOLEAN := TRUE;
100766 l_rows                      NUMBER  := 1000;
100767 l_event_type_name           VARCHAR2(80) := 'All';
100768 l_event_class_name          VARCHAR2(80) := 'Total Burdened Cost';
100769 l_description               VARCHAR2(4000);
100770 l_transaction_reversal      NUMBER;
100771 l_ae_header_id              NUMBER;
100772 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
100773 l_log_module                VARCHAR2(240);
100774 --
100775 l_acct_reversal_source      VARCHAR2(30);
100776 l_trx_reversal_source       VARCHAR2(30);
100777 
100778 l_continue_with_lines       BOOLEAN := TRUE;
100779 --
100780 l_acc_rev_gl_date_source    DATE;                      -- 4262811
100781 --
100782 type t_array_event_id is table of number index by binary_integer;
100783 
100784 l_rec_array_event                    t_rec_array_event;
100785 l_null_rec_array_event               t_rec_array_event;
100786 l_array_ae_header_id                 xla_number_array_type;
100787 l_actual_flag                        VARCHAR2(1) := NULL;
100788 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
100792 --
100789 l_balance_type_code                  VARCHAR2(1) :=NULL;
100790 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
100791 
100793 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
100794 --
100795 
100796 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
100797 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
100798 
100799 TYPE t_array_source_3 IS TABLE OF PA_XLA_CDL_LINES_V.BUDGET_CCID%TYPE INDEX BY BINARY_INTEGER;
100800 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
100801 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
100802 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
100803 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
100804 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
100805 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
100806 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
100807 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
100808 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
100809 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
100810 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
100811 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
100812 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
100813 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
100814 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
100815 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
100816 TYPE t_array_source_41 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
100817 TYPE t_array_source_44 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ENC_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
100818 TYPE t_array_source_52 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
100819 TYPE t_array_source_53 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_BURDENED_COST%TYPE INDEX BY BINARY_INTEGER;
100820 TYPE t_array_source_54 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_AMOUNT%TYPE INDEX BY BINARY_INTEGER;
100821 TYPE t_array_source_55 IS TABLE OF PA_XLA_CDL_LINES_V.PA_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
100822 TYPE t_array_source_56 IS TABLE OF PA_XLA_CDL_LINES_V.PA_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
100823 TYPE t_array_source_57 IS TABLE OF PA_XLA_CDL_LINES_V.PA_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
100824 TYPE t_array_source_58 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
100825 TYPE t_array_source_59 IS TABLE OF PA_XLA_CDL_LINES_V.PA_FIRST_SYS_TRANS_ID%TYPE INDEX BY BINARY_INTEGER;
100826 TYPE t_array_source_60 IS TABLE OF PA_XLA_CDL_LINES_V.PA_SECOND_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
100827 TYPE t_array_source_61 IS TABLE OF PA_XLA_CDL_LINES_V.ENC_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
100828 TYPE t_array_source_62 IS TABLE OF PA_XLA_CDL_LINES_V.ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
100829 TYPE t_array_source_63 IS TABLE OF PA_XLA_CDL_LINES_V.PROJ_ENCUMBRANCE_TYPE_ID%TYPE INDEX BY BINARY_INTEGER;
100830 
100831 l_array_source_33              t_array_source_33;
100832 l_array_source_75              t_array_source_75;
100833 
100834 l_array_source_3      t_array_source_3;
100835 l_array_source_4      t_array_source_4;
100836 l_array_source_5      t_array_source_5;
100837 l_array_source_6      t_array_source_6;
100838 l_array_source_7      t_array_source_7;
100839 l_array_source_8      t_array_source_8;
100840 l_array_source_23      t_array_source_23;
100841 l_array_source_24      t_array_source_24;
100842 l_array_source_26      t_array_source_26;
100843 l_array_source_28      t_array_source_28;
100844 l_array_source_29      t_array_source_29;
100845 l_array_source_30      t_array_source_30;
100846 l_array_source_31      t_array_source_31;
100847 l_array_source_32      t_array_source_32;
100848 l_array_source_34      t_array_source_34;
100849 l_array_source_35      t_array_source_35;
100850 l_array_source_35_meaning      t_array_lookup_meaning;
100851 l_array_source_36      t_array_source_36;
100852 l_array_source_41      t_array_source_41;
100853 l_array_source_44      t_array_source_44;
100854 l_array_source_52      t_array_source_52;
100855 l_array_source_53      t_array_source_53;
100856 l_array_source_54      t_array_source_54;
100857 l_array_source_55      t_array_source_55;
100858 l_array_source_56      t_array_source_56;
100859 l_array_source_57      t_array_source_57;
100860 l_array_source_58      t_array_source_58;
100861 l_array_source_59      t_array_source_59;
100862 l_array_source_60      t_array_source_60;
100863 l_array_source_61      t_array_source_61;
100864 l_array_source_62      t_array_source_62;
100865 l_array_source_63      t_array_source_63;
100866 
100867 --
100868 CURSOR header_cur
100869 IS
100870 SELECT /*+ leading(xet) cardinality(xet,1) */
100871 -- Event Class Code: TOT_BURDENED_COST
100872     xet.entity_id
100873    ,xet.legal_entity_id
100874    ,xet.entity_code
100875    ,xet.transaction_number
100876    ,xet.event_id
100877    ,xet.event_class_code
100878    ,xet.event_type_code
100879    ,xet.event_number
100880    ,xet.event_date
100881    ,xet.transaction_date
100882    ,xet.reference_num_1
100883    ,xet.reference_num_2
100884    ,xet.reference_num_3
100885    ,xet.reference_num_4
100886    ,xet.reference_char_1
100887    ,xet.reference_char_2
100888    ,xet.reference_char_3
100889    ,xet.reference_char_4
100890    ,xet.reference_date_1
100891    ,xet.reference_date_2
100895    ,xet.budgetary_control_flag 
100892    ,xet.reference_date_3
100893    ,xet.reference_date_4
100894    ,xet.event_created_by
100896   , h2.EXPENDITURE_ITEM_ID    source_33
100897   , h2.GL_DATE    source_75
100898   FROM xla_events_gt     xet 
100899   , PA_XLA_EXP_HEADER_V  h2
100900  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
100901    and xet.event_class_code = C_EVENT_CLASS_CODE
100902    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
100903 
100904  ORDER BY event_id
100905 ;
100906 
100907 
100908 --
100909 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
100910 IS
100911 SELECT  /*+ leading(xet) cardinality(xet,1) */
100912 -- Event Class Code: TOT_BURDENED_COST
100913     xet.entity_id
100914    ,xet.legal_entity_id
100915    ,xet.entity_code
100916    ,xet.transaction_number
100917    ,xet.event_id
100918    ,xet.event_class_code
100919    ,xet.event_type_code
100920    ,xet.event_number
100921    ,xet.event_date
100922    ,xet.transaction_date
100923    ,xet.reference_num_1
100924    ,xet.reference_num_2
100925    ,xet.reference_num_3
100926    ,xet.reference_num_4
100927    ,xet.reference_char_1
100928    ,xet.reference_char_2
100929    ,xet.reference_char_3
100930    ,xet.reference_char_4
100931    ,xet.reference_date_1
100932    ,xet.reference_date_2
100933    ,xet.reference_date_3
100934    ,xet.reference_date_4
100935    ,xet.event_created_by
100936    ,xet.budgetary_control_flag
100937  , l1.LINE_NUMBER  
100938   , l1.BUDGET_CCID    source_3
100939   , l1.COST_CCID    source_4
100940   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
100941   , l1.ADJ_COST_CCID    source_6
100942   , l1.COST_CLEARING_CCID    source_7
100943   , l1.ADJ_COST_CLEARING_CCID    source_8
100944   , l1.REVERSING_LINE_FLAG    source_23
100945   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
100946   , l1.ENTERED_CURRENCY_CODE    source_26
100947   , l1.EXCHANGE_RATE_DATE    source_28
100948   , l1.EXCHANGE_RATE    source_29
100949   , l1.EXCHANGE_RATE_TYPE    source_30
100950   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
100951   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
100952   , l1.LINE_NUMBER    source_34
100953   , l1.LINE_TYPE    source_35
100954   , fvl35.meaning   source_35_meaning
100955   , l1.LINE_NUM_REVERSED    source_36
100956   , l1.ENC_UPG_DR_ACCT_CLASS    source_41
100957   , l1.USE_ENC_UPG_ATTRIB_FLAG    source_44
100958   , l1.ENTERED_BURDENED_COST    source_52
100959   , l1.ACCT_BURDENED_COST    source_53
100960   , l1.ENCUMBRANCE_AMOUNT    source_54
100961   , l1.PA_APPLICATION_ID    source_55
100962   , l1.PA_DISTRIBUTION_TYPE    source_56
100963   , l1.PA_ENTITY_CODE    source_57
100964   , l1.PA_FIRST_DIST_ID    source_58
100965   , l1.PA_FIRST_SYS_TRANS_ID    source_59
100966   , l1.PA_SECOND_DIST_ID    source_60
100967   , l1.ENC_UPG_CR_ACCT_CLASS    source_61
100968   , l1.ENCUMBRANCE_TYPE_ID    source_62
100969   , l1.PROJ_ENCUMBRANCE_TYPE_ID    source_63
100970   FROM xla_events_gt     xet 
100971   , PA_XLA_CDL_LINES_V  l1
100972   , fnd_lookup_values    fvl35
100973  WHERE xet.event_id between x_first_event_id and x_last_event_id
100974    and xet.event_date between p_pad_start_date and p_pad_end_date
100975    and xet.event_class_code = C_EVENT_CLASS_CODE
100976    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
100977    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
100978   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
100979   AND fvl35.view_application_id(+) = 275
100980   AND fvl35.language(+)            = USERENV('LANG')
100981   ;
100982 
100983 --
100984 BEGIN
100985 IF g_log_enabled THEN
100986    l_log_module := C_DEFAULT_MODULE||'.EventClass_166';
100987 END IF;
100988 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
100989    trace
100990       (p_msg      => 'BEGIN of EventClass_166'
100991       ,p_level    => C_LEVEL_PROCEDURE
100992       ,p_module   => l_log_module);
100993 END IF;
100994 
100995 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
100996    trace
100997       (p_msg      => 'p_application_id = '||p_application_id||
100998                      ' - p_base_ledger_id = '||p_base_ledger_id||
100999                      ' - p_target_ledger_id  = '||p_target_ledger_id||
101000                      ' - p_language = '||p_language||
101001                      ' - p_currency_code = '||p_currency_code||
101002                      ' - p_sla_ledger_id = '||p_sla_ledger_id
101003       ,p_level    => C_LEVEL_STATEMENT
101004       ,p_module   => l_log_module);
101005 END IF;
101006 --
101007 -- initialze arrays
101008 --
101009 g_array_event.DELETE;
101010 l_rec_array_event := l_null_rec_array_event;
101011 --
101012 --------------------------------------
101013 -- 4262811 Initialze MPA Line Number
101014 --------------------------------------
101015 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
101016 
101017 --
101018 
101019 --
101020 OPEN header_cur;
101021 --
101022 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
101023    trace
101024    (p_msg      => 'SQL - FETCH header_cur'
101025    ,p_level    => C_LEVEL_STATEMENT
101026    ,p_module   => l_log_module);
101027 END IF;
101028 --
101029 LOOP
101030 FETCH header_cur BULK COLLECT INTO
101031         l_array_entity_id
101032       , l_array_legal_entity_id
101033       , l_array_entity_code
101034       , l_array_transaction_num
101035       , l_array_event_id
101036       , l_array_class_code
101037       , l_array_event_type
101038       , l_array_event_number
101039       , l_array_event_date
101040       , l_array_transaction_date
101041       , l_array_reference_num_1
101042       , l_array_reference_num_2
101043       , l_array_reference_num_3
101044       , l_array_reference_num_4
101045       , l_array_reference_char_1
101046       , l_array_reference_char_2
101050       , l_array_reference_date_2
101047       , l_array_reference_char_3
101048       , l_array_reference_char_4
101049       , l_array_reference_date_1
101051       , l_array_reference_date_3
101052       , l_array_reference_date_4
101053       , l_array_event_created_by
101054       , l_array_budgetary_control_flag 
101055       , l_array_source_33
101056       , l_array_source_75
101057       LIMIT l_rows;
101058 --
101059 IF (C_LEVEL_EVENT >= g_log_level) THEN
101060    trace
101061    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
101062    ,p_level    => C_LEVEL_EVENT
101063    ,p_module   => l_log_module);
101064 END IF;
101065 --
101066 EXIT WHEN l_array_entity_id.COUNT = 0;
101067 
101068 -- initialize arrays
101069 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
101070 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
101071 
101072 --
101073 -- Bug 4458708
101074 --
101075 XLA_AE_LINES_PKG.g_LineNumber := 0;
101076 
101077 
101078 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
101079 g_last_hdr_idx := l_array_event_id.LAST;
101080 --
101081 -- loop for the headers. Each iteration is for each header extract row
101082 -- fetched in header cursor
101083 --
101084 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
101085 
101086 --
101087 -- set event info as cache for other routines to refer event attributes
101088 --
101089 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
101090    (p_application_id           => p_application_id
101091    ,p_primary_ledger_id        => p_primary_ledger_id
101092    ,p_base_ledger_id           => p_base_ledger_id
101093    ,p_target_ledger_id         => p_target_ledger_id
101094    ,p_entity_id                => l_array_entity_id(hdr_idx)
101095    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
101096    ,p_entity_code              => l_array_entity_code(hdr_idx)
101097    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
101098    ,p_event_id                 => l_array_event_id(hdr_idx)
101099    ,p_event_class_code         => l_array_class_code(hdr_idx)
101100    ,p_event_type_code          => l_array_event_type(hdr_idx)
101101    ,p_event_number             => l_array_event_number(hdr_idx)
101102    ,p_event_date               => l_array_event_date(hdr_idx)
101103    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
101104    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
101105    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
101106    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
101107    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
101108    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
101109    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
101110    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
101111    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
101112    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
101113    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
101114    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
101115    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
101116    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
101117    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
101118 
101119 --
101120 -- set the status of entry to C_VALID (0)
101121 --
101122 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
101123 
101124 --
101125 -- initialize a row for ae header
101126 --
101127 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
101128 
101129 l_event_id := l_array_event_id(hdr_idx);
101130 
101131 --
101132 -- storing the hdr_idx for event. May be used by line cursor.
101133 --
101134 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
101135 
101136 --
101137 -- store sources from header extract. This can be improved to
101138 -- store only those sources from header extract that may be used in lines
101139 --
101140 
101141 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
101142 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
101143 
101144 --
101145 -- initilaize the status of ae headers for diffrent balance types
101146 -- the status is initialised to C_NOT_CREATED (2)
101147 --
101148 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
101149 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
101150 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
101151 
101152 --
101153 -- call api to validate and store accounting attributes for header
101154 --
101155 
101156 ------------------------------------------------------------
101157 -- Accrual Reversal : to get date for Standard Source (NONE)
101158 ------------------------------------------------------------
101159 l_acc_rev_gl_date_source := NULL;
101160 
101161      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
101162       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
101163 
101164 
101165 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
101166 
101167 XLA_AE_HEADER_PKG.SetJeCategoryName;
101168 
101169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
101170 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
101171 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
101172 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
101173 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
101174 
101175 
101179 --accounting attribute enhancement, bug 3612931
101176 -- No header level analytical criteria
101177 
101178 --
101180 --
101181 l_trx_reversal_source := SUBSTR(NULL, 1,30);
101182 
101183 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
101184    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
101185 
101186    xla_accounting_err_pkg.build_message
101187       (p_appli_s_name            => 'XLA'
101188       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
101189       ,p_token_1                 => 'ACCT_ATTR_NAME'
101190       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
101191       ,p_token_2                 => 'PRODUCT_NAME'
101192       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
101193       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
101194       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
101195       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
101196 
101197 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
101198    --
101199    -- following sets the accounting attributes needed to reverse
101200    -- accounting for a distributeion
101201    --
101202    xla_ae_lines_pkg.SetTrxReversalAttrs
101203       (p_event_id              => l_event_id
101204       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
101205       ,p_trx_reversal_source   => l_trx_reversal_source);
101206 
101207 END IF;
101208 
101209 
101210 ----------------------------------------------------------------
101211 -- 4262811 -  update the header statuses to invalid in need be
101212 ----------------------------------------------------------------
101213 --
101214 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
101215 
101216 
101217   -----------------------------------------------
101218   -- No accrual reversal for the event class/type
101219   -----------------------------------------------
101220 ----------------------------------------------------------------
101221 
101222 --
101223 -- this ends the header loop iteration for one bulk fetch
101224 --
101225 END LOOP;
101226 
101227 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
101228 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
101229 
101230 --
101231 -- insert dummy rows into lines gt table that were created due to
101232 -- transaction reversals
101233 --
101234 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
101235    l_result := XLA_AE_LINES_PKG.InsertLines;
101236 END IF;
101237 
101238 --
101239 -- reset the temp_line_num for each set of events fetched from header
101240 -- cursor rather than doing it for each new event in line cursor
101241 -- Bug 3939231
101242 --
101243 xla_ae_lines_pkg.g_temp_line_num := 0;
101244 
101245 
101246 
101247 --
101248 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
101249 --
101250 --
101251 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
101252 
101253       trace
101254          (p_msg      => 'SQL - FETCH line_cur'
101255          ,p_level    => C_LEVEL_STATEMENT
101256          ,p_module   => l_log_module);
101257 
101258 END IF;
101259 --
101260 --
101261 LOOP
101262   --
101263   FETCH line_cur BULK COLLECT INTO
101264         l_array_entity_id
101265       , l_array_legal_entity_id
101266       , l_array_entity_code
101267       , l_array_transaction_num
101268       , l_array_event_id
101269       , l_array_class_code
101270       , l_array_event_type
101271       , l_array_event_number
101272       , l_array_event_date
101273       , l_array_transaction_date
101274       , l_array_reference_num_1
101275       , l_array_reference_num_2
101276       , l_array_reference_num_3
101277       , l_array_reference_num_4
101278       , l_array_reference_char_1
101279       , l_array_reference_char_2
101280       , l_array_reference_char_3
101281       , l_array_reference_char_4
101282       , l_array_reference_date_1
101283       , l_array_reference_date_2
101284       , l_array_reference_date_3
101285       , l_array_reference_date_4
101286       , l_array_event_created_by
101287       , l_array_budgetary_control_flag
101288       , l_array_extract_line_num 
101289       , l_array_source_3
101290       , l_array_source_4
101291       , l_array_source_5
101292       , l_array_source_6
101293       , l_array_source_7
101294       , l_array_source_8
101295       , l_array_source_23
101296       , l_array_source_24
101297       , l_array_source_26
101298       , l_array_source_28
101299       , l_array_source_29
101300       , l_array_source_30
101301       , l_array_source_31
101302       , l_array_source_32
101303       , l_array_source_34
101304       , l_array_source_35
101305       , l_array_source_35_meaning
101306       , l_array_source_36
101307       , l_array_source_41
101308       , l_array_source_44
101309       , l_array_source_52
101310       , l_array_source_53
101311       , l_array_source_54
101312       , l_array_source_55
101313       , l_array_source_56
101314       , l_array_source_57
101315       , l_array_source_58
101316       , l_array_source_59
101317       , l_array_source_60
101318       , l_array_source_61
101319       , l_array_source_62
101320       , l_array_source_63
101321       LIMIT l_rows;
101322 
101323   --
101324   IF (C_LEVEL_EVENT >= g_log_level) THEN
101325             trace
101326                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
101327                ,p_level    => C_LEVEL_EVENT
101328                ,p_module   => l_log_module);
101329   END IF;
101330   --
101334 
101331   EXIT WHEN l_array_entity_id.count = 0;
101332 
101333   XLA_AE_LINES_PKG.g_rec_lines := null;
101335 --
101336 -- Bug 4458708
101337 --
101338 XLA_AE_LINES_PKG.g_LineNumber := 0;
101339 --
101340 --
101341 
101342 FOR Idx IN 1..l_array_event_id.count LOOP
101343    --
101344    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
101345    --
101346    l_event_id := l_array_event_id(idx);  -- 5648433
101347 
101348    --
101349    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
101350    --
101351 
101352    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
101353              (g_array_event(l_event_id).array_value_num('header_index'))
101354          ,'N'
101355          ) <> 'Y'
101356    THEN
101357       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
101358          trace
101359             (p_msg      => 'Trancaction revesal option is not Y '
101360             ,p_level    => C_LEVEL_STATEMENT
101361             ,p_module   => l_log_module);
101362       END IF;
101363 
101364 --
101365 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
101366 --
101367 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
101368 --
101369 -- set event info as cache for other routines to refer event attributes
101370 --
101371 
101372 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
101373    l_previous_event_id := l_event_id;
101374 
101375    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
101376       (p_application_id           => p_application_id
101377       ,p_primary_ledger_id        => p_primary_ledger_id
101378       ,p_base_ledger_id           => p_base_ledger_id
101379       ,p_target_ledger_id         => p_target_ledger_id
101380       ,p_entity_id                => l_array_entity_id(Idx)
101381       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
101382       ,p_entity_code              => l_array_entity_code(Idx)
101383       ,p_transaction_num          => l_array_transaction_num(Idx)
101384       ,p_event_id                 => l_array_event_id(Idx)
101385       ,p_event_class_code         => l_array_class_code(Idx)
101386       ,p_event_type_code          => l_array_event_type(Idx)
101387       ,p_event_number             => l_array_event_number(Idx)
101388       ,p_event_date               => l_array_event_date(Idx)
101389       ,p_transaction_date         => l_array_transaction_date(Idx)
101390       ,p_reference_num_1          => l_array_reference_num_1(Idx)
101391       ,p_reference_num_2          => l_array_reference_num_2(Idx)
101392       ,p_reference_num_3          => l_array_reference_num_3(Idx)
101393       ,p_reference_num_4          => l_array_reference_num_4(Idx)
101394       ,p_reference_char_1         => l_array_reference_char_1(Idx)
101395       ,p_reference_char_2         => l_array_reference_char_2(Idx)
101396       ,p_reference_char_3         => l_array_reference_char_3(Idx)
101397       ,p_reference_char_4         => l_array_reference_char_4(Idx)
101398       ,p_reference_date_1         => l_array_reference_date_1(Idx)
101399       ,p_reference_date_2         => l_array_reference_date_2(Idx)
101400       ,p_reference_date_3         => l_array_reference_date_3(Idx)
101401       ,p_reference_date_4         => l_array_reference_date_4(Idx)
101402       ,p_event_created_by         => l_array_event_created_by(Idx)
101403       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
101404        --
101405 END IF;
101406 
101407 
101408 
101409 --
101410 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
101411 
101412 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
101413 
101414 IF l_continue_with_lines THEN
101415    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
101416       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
101417 
101418       xla_accounting_err_pkg.build_message
101419          (p_appli_s_name            => 'XLA'
101420          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
101421          ,p_token_1                 => 'LINE_NUMBER'
101422          ,p_value_1                 => l_array_extract_line_num(Idx)
101423          ,p_token_2                 => 'PRODUCT_NAME'
101424          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
101425          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
101426          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
101427          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
101428 
101429    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
101430       --
101431       -- following sets the accounting attributes needed to reverse
101432       -- accounting for a distributeion
101433       --
101434 
101435       --
101436       -- 5217187
101437       --
101438       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
101439       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
101440                                        g_array_event(l_event_id).array_value_num('header_index'));
101441       --
101442       --
101443 
101444       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
101445       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
101446       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
101447       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
101448       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
101449       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
101450       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
101451       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_52(Idx);
101452       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
101456       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
101453       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
101454       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
101455       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_53(Idx);
101457       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
101458       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
101459       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
101460       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
101461       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
101462       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
101463       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
101464       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
101465       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
101466       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
101467       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_52(Idx);
101468       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
101469       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
101470       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
101471       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_53(Idx);
101472       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
101473       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
101474       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
101475       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
101476       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
101477       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
101478       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
101479       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
101480       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
101481       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
101482       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
101483       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
101484       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
101485       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
101486       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'ENC_UPG_CR_ACCT_CLASS';
101487       l_rec_rev_acct_attrs.array_char_value(23)  := l_array_source_41(Idx);
101488       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'ENC_UPG_CR_CCID';
101489       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_3(Idx);
101490       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'ENC_UPG_CR_ENTERED_AMT';
101491       l_rec_rev_acct_attrs.array_num_value(25)  := l_array_source_54(Idx);
101492       l_rec_rev_acct_attrs.array_acct_attr_code(26) := 'ENC_UPG_CR_ENTERED_CURR';
101493       l_rec_rev_acct_attrs.array_char_value(26)  := 
101494 xla_ae_sources_pkg.GetSystemSourceChar(
101495    p_source_code           => 'XLA_CURRENCY_CODE'
101496  , p_source_type_code      => 'Y'
101497  , p_source_application_id =>  602
101498 );
101499       l_rec_rev_acct_attrs.array_acct_attr_code(27) := 'ENC_UPG_CR_LEDGER_AMT';
101500       l_rec_rev_acct_attrs.array_num_value(27)  := l_array_source_54(Idx);
101501       l_rec_rev_acct_attrs.array_acct_attr_code(28) := 'ENC_UPG_DR_ACCT_CLASS';
101502       l_rec_rev_acct_attrs.array_char_value(28)  := l_array_source_61(Idx);
101503       l_rec_rev_acct_attrs.array_acct_attr_code(29) := 'ENC_UPG_DR_CCID';
101504       l_rec_rev_acct_attrs.array_num_value(29)  := l_array_source_3(Idx);
101505       l_rec_rev_acct_attrs.array_acct_attr_code(30) := 'ENC_UPG_DR_ENTERED_AMT';
101506       l_rec_rev_acct_attrs.array_num_value(30)  := l_array_source_54(Idx);
101507       l_rec_rev_acct_attrs.array_acct_attr_code(31) := 'ENC_UPG_DR_ENTERED_CURR';
101508       l_rec_rev_acct_attrs.array_char_value(31)  := 
101509 xla_ae_sources_pkg.GetSystemSourceChar(
101510    p_source_code           => 'XLA_CURRENCY_CODE'
101511  , p_source_type_code      => 'Y'
101512  , p_source_application_id =>  602
101513 );
101514       l_rec_rev_acct_attrs.array_acct_attr_code(32) := 'ENC_UPG_DR_LEDGER_AMT';
101515       l_rec_rev_acct_attrs.array_num_value(32)  := l_array_source_54(Idx);
101516       l_rec_rev_acct_attrs.array_acct_attr_code(33) := 'ENC_UPG_OPTION';
101517       l_rec_rev_acct_attrs.array_char_value(33)  := l_array_source_44(Idx);
101518       l_rec_rev_acct_attrs.array_acct_attr_code(34) := 'GAIN_LOSS_REFERENCE';
101519       l_rec_rev_acct_attrs.array_num_value(34)  := g_array_event(l_event_id).array_value_num('source_33');
101520       l_rec_rev_acct_attrs.array_acct_attr_code(35) := 'REVERSED_DISTRIBUTION_ID1';
101521       l_rec_rev_acct_attrs.array_num_value(35)  := g_array_event(l_event_id).array_value_num('source_33');
101522       l_rec_rev_acct_attrs.array_acct_attr_code(36) := 'REVERSED_DISTRIBUTION_ID2';
101523       l_rec_rev_acct_attrs.array_num_value(36)  := l_array_source_36(Idx);
101524       l_rec_rev_acct_attrs.array_acct_attr_code(37) := 'REVERSED_DISTRIBUTION_TYPE';
101525       l_rec_rev_acct_attrs.array_char_value(37)  := l_array_source_35(Idx);
101526       l_rec_rev_acct_attrs.array_acct_attr_code(38) := 'UPG_CR_ENC_TYPE_ID';
101527       l_rec_rev_acct_attrs.array_num_value(38)  := l_array_source_62(Idx);
101528       l_rec_rev_acct_attrs.array_acct_attr_code(39) := 'UPG_DR_ENC_TYPE_ID';
101529       l_rec_rev_acct_attrs.array_num_value(39)  := l_array_source_63(Idx);
101530 
101531 
101532       xla_ae_lines_pkg.SetAcctReversalAttrs
101533          (p_event_id             => l_event_id
101534          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
101535          ,p_calculate_acctd_flag => l_calculate_acctd_flag
101536          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
101537    END IF;
101538 
101542 --
101539    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
101540        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
101541 
101543 AcctLineType_127 (
101544  p_application_id  => p_application_id
101545  ,p_event_id     => l_event_id
101546  ,p_calculate_acctd_flag => l_calculate_acctd_flag
101547  ,p_calculate_g_l_flag => l_calculate_g_l_flag
101548  ,p_actual_flag => l_actual_flag
101549  ,p_balance_type_code => l_balance_type_code
101550  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
101551  
101552  , p_source_3 => l_array_source_3(Idx)
101553  , p_source_4 => l_array_source_4(Idx)
101554  , p_source_5 => l_array_source_5(Idx)
101555  , p_source_6 => l_array_source_6(Idx)
101556  , p_source_7 => l_array_source_7(Idx)
101557  , p_source_23 => l_array_source_23(Idx)
101558  , p_source_24 => l_array_source_24(Idx)
101559  , p_source_26 => l_array_source_26(Idx)
101560  , p_source_28 => l_array_source_28(Idx)
101561  , p_source_29 => l_array_source_29(Idx)
101562  , p_source_30 => l_array_source_30(Idx)
101563  , p_source_31 => l_array_source_31(Idx)
101564  , p_source_32 => l_array_source_32(Idx)
101565  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
101566  , p_source_34 => l_array_source_34(Idx)
101567  , p_source_35 => l_array_source_35(Idx)
101568  , p_source_35_meaning => l_array_source_35_meaning(Idx)
101569  , p_source_36 => l_array_source_36(Idx)
101570  , p_source_41 => l_array_source_41(Idx)
101571  , p_source_44 => l_array_source_44(Idx)
101572  , p_source_52 => l_array_source_52(Idx)
101573  , p_source_53 => l_array_source_53(Idx)
101574  , p_source_54 => l_array_source_54(Idx)
101575  , p_source_55 => l_array_source_55(Idx)
101576  , p_source_56 => l_array_source_56(Idx)
101577  , p_source_57 => l_array_source_57(Idx)
101578  , p_source_58 => l_array_source_58(Idx)
101579  , p_source_59 => l_array_source_59(Idx)
101580  , p_source_60 => l_array_source_60(Idx)
101581  , p_source_61 => l_array_source_61(Idx)
101582  , p_source_62 => l_array_source_62(Idx)
101583  , p_source_63 => l_array_source_63(Idx)
101584  );
101585 If(l_balance_type_code = 'A') THEN
101586   l_actual_gain_loss_ref := l_gain_or_loss_ref;
101587 END IF;
101588 
101589 --
101590 
101591 
101592 --
101593 AcctLineType_129 (
101594  p_application_id  => p_application_id
101595  ,p_event_id     => l_event_id
101596  ,p_calculate_acctd_flag => l_calculate_acctd_flag
101597  ,p_calculate_g_l_flag => l_calculate_g_l_flag
101598  ,p_actual_flag => l_actual_flag
101599  ,p_balance_type_code => l_balance_type_code
101600  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
101601  
101602  , p_source_3 => l_array_source_3(Idx)
101603  , p_source_4 => l_array_source_4(Idx)
101604  , p_source_5 => l_array_source_5(Idx)
101605  , p_source_7 => l_array_source_7(Idx)
101606  , p_source_8 => l_array_source_8(Idx)
101607  , p_source_23 => l_array_source_23(Idx)
101608  , p_source_24 => l_array_source_24(Idx)
101609  , p_source_26 => l_array_source_26(Idx)
101610  , p_source_28 => l_array_source_28(Idx)
101611  , p_source_29 => l_array_source_29(Idx)
101612  , p_source_30 => l_array_source_30(Idx)
101613  , p_source_31 => l_array_source_31(Idx)
101614  , p_source_32 => l_array_source_32(Idx)
101615  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
101616  , p_source_34 => l_array_source_34(Idx)
101617  , p_source_35 => l_array_source_35(Idx)
101618  , p_source_35_meaning => l_array_source_35_meaning(Idx)
101619  , p_source_36 => l_array_source_36(Idx)
101620  , p_source_41 => l_array_source_41(Idx)
101621  , p_source_44 => l_array_source_44(Idx)
101622  , p_source_52 => l_array_source_52(Idx)
101623  , p_source_53 => l_array_source_53(Idx)
101624  , p_source_54 => l_array_source_54(Idx)
101625  , p_source_55 => l_array_source_55(Idx)
101626  , p_source_56 => l_array_source_56(Idx)
101627  , p_source_57 => l_array_source_57(Idx)
101628  , p_source_58 => l_array_source_58(Idx)
101629  , p_source_59 => l_array_source_59(Idx)
101630  , p_source_60 => l_array_source_60(Idx)
101631  , p_source_61 => l_array_source_61(Idx)
101632  , p_source_62 => l_array_source_62(Idx)
101633  , p_source_63 => l_array_source_63(Idx)
101634  );
101635 If(l_balance_type_code = 'A') THEN
101636   l_actual_gain_loss_ref := l_gain_or_loss_ref;
101637 END IF;
101638 
101639 --
101640 
101641 
101642 --
101643 AcctLineType_132 (
101644  p_application_id  => p_application_id
101645  ,p_event_id     => l_event_id
101646  ,p_calculate_acctd_flag => l_calculate_acctd_flag
101647  ,p_calculate_g_l_flag => l_calculate_g_l_flag
101648  ,p_actual_flag => l_actual_flag
101649  ,p_balance_type_code => l_balance_type_code
101650  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
101651  
101652  , p_source_3 => l_array_source_3(Idx)
101653  , p_source_4 => l_array_source_4(Idx)
101654  , p_source_5 => l_array_source_5(Idx)
101655  , p_source_7 => l_array_source_7(Idx)
101656  , p_source_8 => l_array_source_8(Idx)
101657  , p_source_23 => l_array_source_23(Idx)
101658  , p_source_24 => l_array_source_24(Idx)
101659  , p_source_26 => l_array_source_26(Idx)
101660  , p_source_28 => l_array_source_28(Idx)
101661  , p_source_29 => l_array_source_29(Idx)
101662  , p_source_30 => l_array_source_30(Idx)
101663  , p_source_31 => l_array_source_31(Idx)
101664  , p_source_32 => l_array_source_32(Idx)
101665  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
101666  , p_source_34 => l_array_source_34(Idx)
101667  , p_source_35 => l_array_source_35(Idx)
101668  , p_source_35_meaning => l_array_source_35_meaning(Idx)
101669  , p_source_36 => l_array_source_36(Idx)
101670  , p_source_41 => l_array_source_41(Idx)
101671  , p_source_44 => l_array_source_44(Idx)
101672  , p_source_52 => l_array_source_52(Idx)
101673  , p_source_53 => l_array_source_53(Idx)
101674  , p_source_54 => l_array_source_54(Idx)
101675  , p_source_55 => l_array_source_55(Idx)
101676  , p_source_56 => l_array_source_56(Idx)
101677  , p_source_57 => l_array_source_57(Idx)
101681  , p_source_61 => l_array_source_61(Idx)
101678  , p_source_58 => l_array_source_58(Idx)
101679  , p_source_59 => l_array_source_59(Idx)
101680  , p_source_60 => l_array_source_60(Idx)
101682  , p_source_62 => l_array_source_62(Idx)
101683  , p_source_63 => l_array_source_63(Idx)
101684  );
101685 If(l_balance_type_code = 'A') THEN
101686   l_actual_gain_loss_ref := l_gain_or_loss_ref;
101687 END IF;
101688 
101689 --
101690 
101691 
101692 --
101693 AcctLineType_133 (
101694  p_application_id  => p_application_id
101695  ,p_event_id     => l_event_id
101696  ,p_calculate_acctd_flag => l_calculate_acctd_flag
101697  ,p_calculate_g_l_flag => l_calculate_g_l_flag
101698  ,p_actual_flag => l_actual_flag
101699  ,p_balance_type_code => l_balance_type_code
101700  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
101701  
101702  , p_source_3 => l_array_source_3(Idx)
101703  , p_source_4 => l_array_source_4(Idx)
101704  , p_source_5 => l_array_source_5(Idx)
101705  , p_source_6 => l_array_source_6(Idx)
101706  , p_source_7 => l_array_source_7(Idx)
101707  , p_source_23 => l_array_source_23(Idx)
101708  , p_source_24 => l_array_source_24(Idx)
101709  , p_source_26 => l_array_source_26(Idx)
101710  , p_source_28 => l_array_source_28(Idx)
101711  , p_source_29 => l_array_source_29(Idx)
101712  , p_source_30 => l_array_source_30(Idx)
101713  , p_source_31 => l_array_source_31(Idx)
101714  , p_source_32 => l_array_source_32(Idx)
101715  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
101716  , p_source_34 => l_array_source_34(Idx)
101717  , p_source_35 => l_array_source_35(Idx)
101718  , p_source_35_meaning => l_array_source_35_meaning(Idx)
101719  , p_source_36 => l_array_source_36(Idx)
101720  , p_source_41 => l_array_source_41(Idx)
101721  , p_source_44 => l_array_source_44(Idx)
101722  , p_source_52 => l_array_source_52(Idx)
101723  , p_source_53 => l_array_source_53(Idx)
101724  , p_source_54 => l_array_source_54(Idx)
101725  , p_source_55 => l_array_source_55(Idx)
101726  , p_source_56 => l_array_source_56(Idx)
101727  , p_source_57 => l_array_source_57(Idx)
101728  , p_source_58 => l_array_source_58(Idx)
101729  , p_source_59 => l_array_source_59(Idx)
101730  , p_source_60 => l_array_source_60(Idx)
101731  , p_source_61 => l_array_source_61(Idx)
101732  , p_source_62 => l_array_source_62(Idx)
101733  , p_source_63 => l_array_source_63(Idx)
101734  );
101735 If(l_balance_type_code = 'A') THEN
101736   l_actual_gain_loss_ref := l_gain_or_loss_ref;
101737 END IF;
101738 
101739 --
101740 
101741       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
101742       -- or secondary ledger that has different currency with primary
101743       -- or alc that is calculated by sla
101744       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
101745             (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'))
101746 
101747 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
101748 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
101749           AND (l_actual_flag = 'A')) THEN
101750         XLA_AE_LINES_PKG.CreateGainOrLossLines(
101751           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
101752          ,p_application_id   => p_application_id
101753          ,p_amb_context_code => 'DEFAULT'
101754          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
101755          ,p_event_class_code => C_EVENT_CLASS_CODE
101756          ,p_event_type_code  => C_EVENT_TYPE_CODE
101757          
101758          ,p_gain_ccid        => -1
101759          ,p_loss_ccid        => -1
101760 
101761          ,p_actual_flag      => l_actual_flag
101762          ,p_enc_flag         => null
101763          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
101764          ,p_enc_g_l_ref      => null
101765          );
101766       END IF;
101767    END IF;
101768 END IF;
101769 
101770    ELSE
101771       --
101772       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
101773       --
101774       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
101775          trace
101776             (p_msg      => 'Trancaction revesal option is Y'
101777             ,p_level    => C_LEVEL_STATEMENT
101778             ,p_module   => l_log_module);
101779       END IF;
101780    END IF;
101781 
101782 END LOOP;
101783 l_result := XLA_AE_LINES_PKG.InsertLines ;
101784 end loop;
101785 close line_cur;
101786 
101787 
101788 --
101789 -- insert headers into xla_ae_headers_gt table
101790 --
101791 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
101792 
101793 -- insert into errors table here.
101794 
101795 END LOOP;
101796 
101797 --
101798 -- 4865292
101799 --
101800 -- Compare g_hdr_extract_count with event count in
101801 -- CreateHeadersAndLines.
101802 --
101803 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
101804 
101805 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
101806    trace (p_msg     => '# rows extracted from header extract objects '
101807                     || ' (running total): '
101808                     || g_hdr_extract_count
101809          ,p_level   => C_LEVEL_STATEMENT
101810          ,p_module  => l_log_module);
101811 END IF;
101812 
101813 CLOSE header_cur;
101814 --
101815 
101816 --
101817 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101818    trace
101819       (p_msg      => 'END of EventClass_166'
101820       ,p_level    => C_LEVEL_PROCEDURE
101821       ,p_module   => l_log_module);
101822 END IF;
101823 --
101824 RETURN l_result;
101825 EXCEPTION
101826 WHEN xla_exceptions_pkg.application_exception THEN
101827    
101831 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
101828 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
101829 
101830    
101832 
101833    RAISE;
101834 WHEN OTHERS THEN
101835    xla_exceptions_pkg.raise_message
101836       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_166');
101837 END EventClass_166;
101838 --
101839 
101840 ---------------------------------------
101841 --
101842 -- PRIVATE PROCEDURE
101843 --         insert_sources_167
101844 --
101845 ----------------------------------------
101846 --
101847 PROCEDURE insert_sources_167(
101848                                 p_target_ledger_id       IN NUMBER
101849                               , p_language               IN VARCHAR2
101850                               , p_sla_ledger_id          IN NUMBER
101851                               , p_pad_start_date         IN DATE
101852                               , p_pad_end_date           IN DATE
101853                          )
101854 IS
101855 
101856 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ADJ_ALL';
101857 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USG_COST_ADJ';
101858 p_apps_owner                   VARCHAR2(30);
101859 l_log_module                   VARCHAR2(240);
101860 BEGIN
101861 IF g_log_enabled THEN
101862       l_log_module := C_DEFAULT_MODULE||'.insert_sources_167';
101863 END IF;
101864 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
101865 
101866       trace
101867          (p_msg      => 'BEGIN of insert_sources_167'
101868          ,p_level    => C_LEVEL_PROCEDURE
101869          ,p_module   => l_log_module);
101870 
101871 END IF;
101872 
101873 -- select APPS owner
101874 SELECT oracle_username
101875   INTO p_apps_owner
101876   FROM fnd_oracle_userid
101877  WHERE read_only_flag = 'U'
101878 ;
101879 
101880 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
101881       trace
101882          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
101883                         ' - p_language = '||p_language||
101884                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
101885                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
101886                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
101887                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
101888          ,p_level    => C_LEVEL_STATEMENT
101889          ,p_module   => l_log_module);
101890 END IF;
101891 
101892 
101893 --
101894 INSERT INTO xla_diag_sources --hdr2
101895 (
101896         event_id
101897       , ledger_id
101898       , sla_ledger_id
101899       , description_language
101900       , object_name
101901       , object_type_code
101902       , line_number
101903       , source_application_id
101904       , source_type_code
101905       , source_code
101906       , source_value
101907       , source_meaning
101908       , created_by
101909       , creation_date
101910       , last_update_date
101911       , last_updated_by
101912       , last_update_login
101913       , program_update_date
101914       , program_application_id
101915       , program_id
101916       , request_id
101917 )
101918 SELECT
101919         event_id
101920       , p_target_ledger_id
101921       , p_sla_ledger_id
101922       , p_language
101923       , object_name
101924       , object_type_code
101925       , line_number
101926       , source_application_id
101927       , source_type_code
101928       , source_code
101929       , SUBSTR(source_value ,1,1996)
101930       , SUBSTR(source_meaning ,1,200)
101931       , xla_environment_pkg.g_Usr_Id
101932       , TRUNC(SYSDATE)
101933       , TRUNC(SYSDATE)
101934       , xla_environment_pkg.g_Usr_Id
101935       , xla_environment_pkg.g_Login_Id
101936       , TRUNC(SYSDATE)
101937       , xla_environment_pkg.g_Prog_Appl_Id
101938       , xla_environment_pkg.g_Prog_Id
101939       , xla_environment_pkg.g_Req_Id
101940   FROM (
101941        SELECT xet.event_id                  event_id
101942             , 0                          line_number
101943             , CASE r
101944                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
101945                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
101946                 
101947                ELSE null
101948               END                           object_name
101949             , CASE r
101950                 WHEN 1 THEN 'HEADER' 
101951                 WHEN 2 THEN 'HEADER' 
101952                 
101953                 ELSE null
101954               END                           object_type_code
101955             , CASE r
101956                 WHEN 1 THEN '275' 
101957                 WHEN 2 THEN '275' 
101958                 
101959                 ELSE null
101960               END                           source_application_id
101961             , 'S'             source_type_code
101962             , CASE r
101963                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
101964                 WHEN 2 THEN 'GL_DATE' 
101965                 
101966                 ELSE null
101967               END                           source_code
101968             , CASE r
101969                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
101970                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
101971                 
101972                 ELSE null
101973               END                           source_value
101974             , null              source_meaning
101975          FROM xla_events_gt     xet  
101976       , PA_XLA_EXP_HEADER_V  h2
101977              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
101978          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
101979            AND xet.event_class_code = C_EVENT_CLASS_CODE
101980               AND h2.event_id = xet.event_id
101981 
101982 )
101983 ;
101984 --
101988          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
101985 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
101986 
101987       trace
101989          ,p_level    => C_LEVEL_STATEMENT
101990          ,p_module   => l_log_module);
101991 
101992 END IF;
101993 --
101994 
101995 
101996 
101997 --
101998 INSERT INTO xla_diag_sources  --line2
101999 (
102000         event_id
102001       , ledger_id
102002       , sla_ledger_id
102003       , description_language
102004       , object_name
102005       , object_type_code
102006       , line_number
102007       , source_application_id
102008       , source_type_code
102009       , source_code
102010       , source_value
102011       , source_meaning
102012       , created_by
102013       , creation_date
102014       , last_update_date
102015       , last_updated_by
102016       , last_update_login
102017       , program_update_date
102018       , program_application_id
102019       , program_id
102020       , request_id
102021 )
102022 SELECT  event_id
102023       , p_target_ledger_id
102024       , p_sla_ledger_id
102025       , p_language
102026       , object_name
102027       , object_type_code
102028       , line_number
102029       , source_application_id
102030       , source_type_code
102031       , source_code
102032       , SUBSTR(source_value,1,1996)
102033       , SUBSTR(source_meaning ,1,200)
102034       , xla_environment_pkg.g_Usr_Id
102035       , TRUNC(SYSDATE)
102036       , TRUNC(SYSDATE)
102037       , xla_environment_pkg.g_Usr_Id
102038       , xla_environment_pkg.g_Login_Id
102039       , TRUNC(SYSDATE)
102040       , xla_environment_pkg.g_Prog_Appl_Id
102041       , xla_environment_pkg.g_Prog_Id
102042       , xla_environment_pkg.g_Req_Id
102043   FROM (
102044        SELECT xet.event_id                  event_id
102045             , l1.line_number                 line_number
102046             , CASE r
102047                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
102048                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
102049                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
102050                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
102051                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
102052                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
102053                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
102054                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
102055                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
102056                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
102057                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
102058                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
102059                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
102060                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
102061                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
102062                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
102063                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
102064                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
102065                 
102066                ELSE null
102067               END                           object_name
102068             , CASE r
102069                 WHEN 1 THEN 'LINE' 
102070                 WHEN 2 THEN 'LINE' 
102071                 WHEN 3 THEN 'LINE' 
102072                 WHEN 4 THEN 'LINE' 
102073                 WHEN 5 THEN 'LINE' 
102074                 WHEN 6 THEN 'LINE' 
102075                 WHEN 7 THEN 'LINE' 
102076                 WHEN 8 THEN 'LINE' 
102077                 WHEN 9 THEN 'LINE' 
102078                 WHEN 10 THEN 'LINE' 
102079                 WHEN 11 THEN 'LINE' 
102080                 WHEN 12 THEN 'LINE' 
102081                 WHEN 13 THEN 'LINE' 
102082                 WHEN 14 THEN 'LINE' 
102083                 WHEN 15 THEN 'LINE' 
102084                 WHEN 16 THEN 'LINE' 
102085                 WHEN 17 THEN 'LINE' 
102086                 WHEN 18 THEN 'LINE' 
102087                 
102088                 ELSE null
102089               END                           object_type_code
102090             , CASE r
102091                 WHEN 1 THEN '275' 
102092                 WHEN 2 THEN '275' 
102093                 WHEN 3 THEN '275' 
102094                 WHEN 4 THEN '275' 
102095                 WHEN 5 THEN '275' 
102096                 WHEN 6 THEN '275' 
102097                 WHEN 7 THEN '275' 
102098                 WHEN 8 THEN '275' 
102099                 WHEN 9 THEN '275' 
102100                 WHEN 10 THEN '275' 
102101                 WHEN 11 THEN '275' 
102102                 WHEN 12 THEN '275' 
102103                 WHEN 13 THEN '275' 
102104                 WHEN 14 THEN '275' 
102105                 WHEN 15 THEN '275' 
102106                 WHEN 16 THEN '275' 
102107                 WHEN 17 THEN '275' 
102108                 WHEN 18 THEN '275' 
102109                 
102110                 ELSE null
102111               END                           source_application_id
102112             , 'S'             source_type_code
102113             , CASE r
102114                 WHEN 1 THEN 'COST_CCID' 
102115                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
102116                 WHEN 3 THEN 'ADJ_COST_CCID' 
102117                 WHEN 4 THEN 'COST_CLEARING_CCID' 
102118                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
102119                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
102120                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
102121                 WHEN 8 THEN 'ENTERED_RAW_COST' 
102122                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
102123                 WHEN 10 THEN 'ACCT_RAW_COST' 
102124                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
102125                 WHEN 12 THEN 'EXCHANGE_RATE' 
102126                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
102127                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
102128                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
102129                 WHEN 16 THEN 'LINE_NUMBER' 
102133                 ELSE null
102130                 WHEN 17 THEN 'LINE_TYPE' 
102131                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
102132                 
102134               END                           source_code
102135             , CASE r
102136                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
102137                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
102138                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
102139                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
102140                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
102141                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
102142                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
102143                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
102144                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
102145                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
102146                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
102147                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
102148                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
102149                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
102150                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
102151                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
102152                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
102153                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
102154                 
102155                 ELSE null
102156               END                           source_value
102157             , CASE r
102158                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
102159                           103371
102160                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
102161                          ,'ALLOW_OVERRIDE_CCID_FLAG'
102162                          ,'S'
102163                          ,275)
102164                 WHEN 17 THEN fvl35.meaning
102165                 
102166                 ELSE null
102167               END               source_meaning
102168          FROM  xla_events_gt     xet  
102169         , PA_XLA_CDL_LINES_V  l1
102170   , fnd_lookup_values    fvl35
102171             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
102172         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
102173           AND xet.event_class_code = C_EVENT_CLASS_CODE
102174             AND l1.event_id          = xet.event_id
102175    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
102176   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
102177   AND fvl35.view_application_id(+) = 275
102178   AND fvl35.language(+)            = USERENV('LANG')
102179   
102180 )
102181 ;
102182 --
102183 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
102184 
102185       trace
102186          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
102187          ,p_level    => C_LEVEL_STATEMENT
102188          ,p_module   => l_log_module);
102189 
102190 END IF;
102191 
102192 
102193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102194       trace
102195          (p_msg      => 'END of insert_sources_167'
102196          ,p_level    => C_LEVEL_PROCEDURE
102197          ,p_module   => l_log_module);
102198 END IF;
102199 EXCEPTION
102200   WHEN xla_exceptions_pkg.application_exception THEN
102201       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
102202             trace
102203                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
102204                ,p_level    => C_LEVEL_EXCEPTION
102205                ,p_module   => l_log_module);
102206       END IF;
102207       RAISE;
102208   WHEN OTHERS THEN
102209       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
102210             trace
102211                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
102212                ,p_level    => C_LEVEL_EXCEPTION
102213                ,p_module   => l_log_module);
102214        END IF;
102215        xla_exceptions_pkg.raise_message
102216            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_167');
102217 END insert_sources_167;
102218 --
102219 
102220 ---------------------------------------
102221 --
102222 -- PRIVATE FUNCTION
102223 --         EventClass_167
102224 --
102225 ----------------------------------------
102226 --
102227 FUNCTION EventClass_167
102228        (p_application_id         IN NUMBER
102229        ,p_base_ledger_id         IN NUMBER
102230        ,p_target_ledger_id       IN NUMBER
102231        ,p_language               IN VARCHAR2
102232        ,p_currency_code          IN VARCHAR2
102233        ,p_sla_ledger_id          IN NUMBER
102234        ,p_pad_start_date         IN DATE
102235        ,p_pad_end_date           IN DATE
102236        ,p_primary_ledger_id      IN NUMBER)
102237 RETURN BOOLEAN IS
102238 --
102239 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ADJ_ALL';
102240 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USG_COST_ADJ';
102241 
102242 l_calculate_acctd_flag   VARCHAR2(1) :='N';
102243 l_calculate_g_l_flag     VARCHAR2(1) :='N';
102244 --
102245 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102246 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102247 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
102248 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
102249 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102250 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
102251 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
102252 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102253 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
102254 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
102255 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102259 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
102256 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102257 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102258 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
102260 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
102261 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
102262 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
102263 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
102264 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
102265 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
102266 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
102267 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
102268 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
102269 
102270 l_event_id                             NUMBER;
102271 l_previous_event_id                    NUMBER;
102272 l_first_event_id                       NUMBER;
102273 l_last_event_id                        NUMBER;
102274 
102275 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
102276 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
102277 --
102278 --
102279 l_result                    BOOLEAN := TRUE;
102280 l_rows                      NUMBER  := 1000;
102281 l_event_type_name           VARCHAR2(80) := 'All';
102282 l_event_class_name          VARCHAR2(80) := 'Usage Cost Adjustment';
102283 l_description               VARCHAR2(4000);
102284 l_transaction_reversal      NUMBER;
102285 l_ae_header_id              NUMBER;
102286 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
102287 l_log_module                VARCHAR2(240);
102288 --
102289 l_acct_reversal_source      VARCHAR2(30);
102290 l_trx_reversal_source       VARCHAR2(30);
102291 
102292 l_continue_with_lines       BOOLEAN := TRUE;
102293 --
102294 l_acc_rev_gl_date_source    DATE;                      -- 4262811
102295 --
102296 type t_array_event_id is table of number index by binary_integer;
102297 
102298 l_rec_array_event                    t_rec_array_event;
102299 l_null_rec_array_event               t_rec_array_event;
102300 l_array_ae_header_id                 xla_number_array_type;
102301 l_actual_flag                        VARCHAR2(1) := NULL;
102302 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
102303 l_balance_type_code                  VARCHAR2(1) :=NULL;
102304 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
102305 
102306 --
102307 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
102308 --
102309 
102310 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
102311 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
102312 
102313 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
102314 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
102315 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
102316 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
102317 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
102318 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
102319 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
102320 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
102321 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
102322 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
102323 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
102324 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
102325 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
102326 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
102327 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
102328 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
102329 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
102330 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
102331 
102332 l_array_source_33              t_array_source_33;
102333 l_array_source_75              t_array_source_75;
102334 
102335 l_array_source_4      t_array_source_4;
102336 l_array_source_5      t_array_source_5;
102337 l_array_source_6      t_array_source_6;
102338 l_array_source_7      t_array_source_7;
102339 l_array_source_8      t_array_source_8;
102340 l_array_source_23      t_array_source_23;
102341 l_array_source_24      t_array_source_24;
102342 l_array_source_25      t_array_source_25;
102343 l_array_source_26      t_array_source_26;
102344 l_array_source_27      t_array_source_27;
102345 l_array_source_28      t_array_source_28;
102346 l_array_source_29      t_array_source_29;
102347 l_array_source_30      t_array_source_30;
102348 l_array_source_31      t_array_source_31;
102349 l_array_source_32      t_array_source_32;
102350 l_array_source_34      t_array_source_34;
102351 l_array_source_35      t_array_source_35;
102352 l_array_source_35_meaning      t_array_lookup_meaning;
102353 l_array_source_36      t_array_source_36;
102354 
102355 --
102356 CURSOR header_cur
102357 IS
102358 SELECT /*+ leading(xet) cardinality(xet,1) */
102359 -- Event Class Code: USG_COST_ADJ
102363    ,xet.transaction_number
102360     xet.entity_id
102361    ,xet.legal_entity_id
102362    ,xet.entity_code
102364    ,xet.event_id
102365    ,xet.event_class_code
102366    ,xet.event_type_code
102367    ,xet.event_number
102368    ,xet.event_date
102369    ,xet.transaction_date
102370    ,xet.reference_num_1
102371    ,xet.reference_num_2
102372    ,xet.reference_num_3
102373    ,xet.reference_num_4
102374    ,xet.reference_char_1
102375    ,xet.reference_char_2
102376    ,xet.reference_char_3
102377    ,xet.reference_char_4
102378    ,xet.reference_date_1
102379    ,xet.reference_date_2
102380    ,xet.reference_date_3
102381    ,xet.reference_date_4
102382    ,xet.event_created_by
102383    ,xet.budgetary_control_flag 
102384   , h2.EXPENDITURE_ITEM_ID    source_33
102385   , h2.GL_DATE    source_75
102386   FROM xla_events_gt     xet 
102387   , PA_XLA_EXP_HEADER_V  h2
102388  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
102389    and xet.event_class_code = C_EVENT_CLASS_CODE
102390    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
102391 
102392  ORDER BY event_id
102393 ;
102394 
102395 
102396 --
102397 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
102398 IS
102399 SELECT  /*+ leading(xet) cardinality(xet,1) */
102400 -- Event Class Code: USG_COST_ADJ
102401     xet.entity_id
102402    ,xet.legal_entity_id
102403    ,xet.entity_code
102404    ,xet.transaction_number
102405    ,xet.event_id
102406    ,xet.event_class_code
102407    ,xet.event_type_code
102408    ,xet.event_number
102409    ,xet.event_date
102410    ,xet.transaction_date
102411    ,xet.reference_num_1
102412    ,xet.reference_num_2
102413    ,xet.reference_num_3
102414    ,xet.reference_num_4
102415    ,xet.reference_char_1
102416    ,xet.reference_char_2
102417    ,xet.reference_char_3
102418    ,xet.reference_char_4
102419    ,xet.reference_date_1
102420    ,xet.reference_date_2
102421    ,xet.reference_date_3
102422    ,xet.reference_date_4
102423    ,xet.event_created_by
102424    ,xet.budgetary_control_flag
102425  , l1.LINE_NUMBER  
102426   , l1.COST_CCID    source_4
102427   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
102428   , l1.ADJ_COST_CCID    source_6
102429   , l1.COST_CLEARING_CCID    source_7
102430   , l1.ADJ_COST_CLEARING_CCID    source_8
102431   , l1.REVERSING_LINE_FLAG    source_23
102432   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
102433   , l1.ENTERED_RAW_COST    source_25
102434   , l1.ENTERED_CURRENCY_CODE    source_26
102435   , l1.ACCT_RAW_COST    source_27
102436   , l1.EXCHANGE_RATE_DATE    source_28
102437   , l1.EXCHANGE_RATE    source_29
102438   , l1.EXCHANGE_RATE_TYPE    source_30
102439   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
102440   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
102441   , l1.LINE_NUMBER    source_34
102442   , l1.LINE_TYPE    source_35
102443   , fvl35.meaning   source_35_meaning
102444   , l1.LINE_NUM_REVERSED    source_36
102445   FROM xla_events_gt     xet 
102446   , PA_XLA_CDL_LINES_V  l1
102447   , fnd_lookup_values    fvl35
102448  WHERE xet.event_id between x_first_event_id and x_last_event_id
102449    and xet.event_date between p_pad_start_date and p_pad_end_date
102450    and xet.event_class_code = C_EVENT_CLASS_CODE
102451    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
102452    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
102453   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
102454   AND fvl35.view_application_id(+) = 275
102455   AND fvl35.language(+)            = USERENV('LANG')
102456   ;
102457 
102458 --
102459 BEGIN
102460 IF g_log_enabled THEN
102461    l_log_module := C_DEFAULT_MODULE||'.EventClass_167';
102462 END IF;
102463 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
102464    trace
102465       (p_msg      => 'BEGIN of EventClass_167'
102466       ,p_level    => C_LEVEL_PROCEDURE
102467       ,p_module   => l_log_module);
102468 END IF;
102469 
102470 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
102471    trace
102472       (p_msg      => 'p_application_id = '||p_application_id||
102473                      ' - p_base_ledger_id = '||p_base_ledger_id||
102474                      ' - p_target_ledger_id  = '||p_target_ledger_id||
102475                      ' - p_language = '||p_language||
102476                      ' - p_currency_code = '||p_currency_code||
102477                      ' - p_sla_ledger_id = '||p_sla_ledger_id
102478       ,p_level    => C_LEVEL_STATEMENT
102479       ,p_module   => l_log_module);
102480 END IF;
102481 --
102482 -- initialze arrays
102483 --
102484 g_array_event.DELETE;
102485 l_rec_array_event := l_null_rec_array_event;
102486 --
102487 --------------------------------------
102488 -- 4262811 Initialze MPA Line Number
102489 --------------------------------------
102490 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
102491 
102492 --
102493 
102494 --
102495 OPEN header_cur;
102496 --
102497 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
102498    trace
102499    (p_msg      => 'SQL - FETCH header_cur'
102500    ,p_level    => C_LEVEL_STATEMENT
102501    ,p_module   => l_log_module);
102502 END IF;
102503 --
102504 LOOP
102505 FETCH header_cur BULK COLLECT INTO
102506         l_array_entity_id
102507       , l_array_legal_entity_id
102508       , l_array_entity_code
102509       , l_array_transaction_num
102510       , l_array_event_id
102511       , l_array_class_code
102512       , l_array_event_type
102513       , l_array_event_number
102514       , l_array_event_date
102515       , l_array_transaction_date
102516       , l_array_reference_num_1
102517       , l_array_reference_num_2
102518       , l_array_reference_num_3
102519       , l_array_reference_num_4
102520       , l_array_reference_char_1
102524       , l_array_reference_date_1
102521       , l_array_reference_char_2
102522       , l_array_reference_char_3
102523       , l_array_reference_char_4
102525       , l_array_reference_date_2
102526       , l_array_reference_date_3
102527       , l_array_reference_date_4
102528       , l_array_event_created_by
102529       , l_array_budgetary_control_flag 
102530       , l_array_source_33
102531       , l_array_source_75
102532       LIMIT l_rows;
102533 --
102534 IF (C_LEVEL_EVENT >= g_log_level) THEN
102535    trace
102536    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
102537    ,p_level    => C_LEVEL_EVENT
102538    ,p_module   => l_log_module);
102539 END IF;
102540 --
102541 EXIT WHEN l_array_entity_id.COUNT = 0;
102542 
102543 -- initialize arrays
102544 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
102545 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
102546 
102547 --
102548 -- Bug 4458708
102549 --
102550 XLA_AE_LINES_PKG.g_LineNumber := 0;
102551 
102552 
102553 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
102554 g_last_hdr_idx := l_array_event_id.LAST;
102555 --
102556 -- loop for the headers. Each iteration is for each header extract row
102557 -- fetched in header cursor
102558 --
102559 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
102560 
102561 --
102562 -- set event info as cache for other routines to refer event attributes
102563 --
102564 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
102565    (p_application_id           => p_application_id
102566    ,p_primary_ledger_id        => p_primary_ledger_id
102567    ,p_base_ledger_id           => p_base_ledger_id
102568    ,p_target_ledger_id         => p_target_ledger_id
102569    ,p_entity_id                => l_array_entity_id(hdr_idx)
102570    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
102571    ,p_entity_code              => l_array_entity_code(hdr_idx)
102572    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
102573    ,p_event_id                 => l_array_event_id(hdr_idx)
102574    ,p_event_class_code         => l_array_class_code(hdr_idx)
102575    ,p_event_type_code          => l_array_event_type(hdr_idx)
102576    ,p_event_number             => l_array_event_number(hdr_idx)
102577    ,p_event_date               => l_array_event_date(hdr_idx)
102578    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
102579    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
102580    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
102581    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
102582    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
102583    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
102584    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
102585    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
102586    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
102587    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
102588    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
102589    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
102590    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
102591    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
102592    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
102593 
102594 --
102595 -- set the status of entry to C_VALID (0)
102596 --
102597 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
102598 
102599 --
102600 -- initialize a row for ae header
102601 --
102602 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
102603 
102604 l_event_id := l_array_event_id(hdr_idx);
102605 
102606 --
102607 -- storing the hdr_idx for event. May be used by line cursor.
102608 --
102609 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
102610 
102611 --
102612 -- store sources from header extract. This can be improved to
102613 -- store only those sources from header extract that may be used in lines
102614 --
102615 
102616 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
102617 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
102618 
102619 --
102620 -- initilaize the status of ae headers for diffrent balance types
102621 -- the status is initialised to C_NOT_CREATED (2)
102622 --
102623 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
102624 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
102625 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
102626 
102627 --
102628 -- call api to validate and store accounting attributes for header
102629 --
102630 
102631 ------------------------------------------------------------
102632 -- Accrual Reversal : to get date for Standard Source (NONE)
102633 ------------------------------------------------------------
102634 l_acc_rev_gl_date_source := NULL;
102635 
102636      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
102637       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
102638 
102639 
102640 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
102641 
102642 XLA_AE_HEADER_PKG.SetJeCategoryName;
102643 
102644 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
102645 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
102646 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
102647 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
102651 -- No header level analytical criteria
102648 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
102649 
102650 
102652 
102653 --
102654 --accounting attribute enhancement, bug 3612931
102655 --
102656 l_trx_reversal_source := SUBSTR(NULL, 1,30);
102657 
102658 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
102659    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
102660 
102661    xla_accounting_err_pkg.build_message
102662       (p_appli_s_name            => 'XLA'
102663       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
102664       ,p_token_1                 => 'ACCT_ATTR_NAME'
102665       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
102666       ,p_token_2                 => 'PRODUCT_NAME'
102667       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
102668       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
102669       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
102670       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
102671 
102672 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
102673    --
102674    -- following sets the accounting attributes needed to reverse
102675    -- accounting for a distributeion
102676    --
102677    xla_ae_lines_pkg.SetTrxReversalAttrs
102678       (p_event_id              => l_event_id
102679       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
102680       ,p_trx_reversal_source   => l_trx_reversal_source);
102681 
102682 END IF;
102683 
102684 
102685 ----------------------------------------------------------------
102686 -- 4262811 -  update the header statuses to invalid in need be
102687 ----------------------------------------------------------------
102688 --
102689 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
102690 
102691 
102692   -----------------------------------------------
102693   -- No accrual reversal for the event class/type
102694   -----------------------------------------------
102695 ----------------------------------------------------------------
102696 
102697 --
102698 -- this ends the header loop iteration for one bulk fetch
102699 --
102700 END LOOP;
102701 
102702 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
102703 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
102704 
102705 --
102706 -- insert dummy rows into lines gt table that were created due to
102707 -- transaction reversals
102708 --
102709 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
102710    l_result := XLA_AE_LINES_PKG.InsertLines;
102711 END IF;
102712 
102713 --
102714 -- reset the temp_line_num for each set of events fetched from header
102715 -- cursor rather than doing it for each new event in line cursor
102716 -- Bug 3939231
102717 --
102718 xla_ae_lines_pkg.g_temp_line_num := 0;
102719 
102720 
102721 
102722 --
102723 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
102724 --
102725 --
102726 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
102727 
102728       trace
102729          (p_msg      => 'SQL - FETCH line_cur'
102730          ,p_level    => C_LEVEL_STATEMENT
102731          ,p_module   => l_log_module);
102732 
102733 END IF;
102734 --
102735 --
102736 LOOP
102737   --
102738   FETCH line_cur BULK COLLECT INTO
102739         l_array_entity_id
102740       , l_array_legal_entity_id
102741       , l_array_entity_code
102742       , l_array_transaction_num
102743       , l_array_event_id
102744       , l_array_class_code
102745       , l_array_event_type
102746       , l_array_event_number
102747       , l_array_event_date
102748       , l_array_transaction_date
102749       , l_array_reference_num_1
102750       , l_array_reference_num_2
102751       , l_array_reference_num_3
102752       , l_array_reference_num_4
102753       , l_array_reference_char_1
102754       , l_array_reference_char_2
102755       , l_array_reference_char_3
102756       , l_array_reference_char_4
102757       , l_array_reference_date_1
102758       , l_array_reference_date_2
102759       , l_array_reference_date_3
102760       , l_array_reference_date_4
102761       , l_array_event_created_by
102762       , l_array_budgetary_control_flag
102763       , l_array_extract_line_num 
102764       , l_array_source_4
102765       , l_array_source_5
102766       , l_array_source_6
102767       , l_array_source_7
102768       , l_array_source_8
102769       , l_array_source_23
102770       , l_array_source_24
102771       , l_array_source_25
102772       , l_array_source_26
102773       , l_array_source_27
102774       , l_array_source_28
102775       , l_array_source_29
102776       , l_array_source_30
102777       , l_array_source_31
102778       , l_array_source_32
102779       , l_array_source_34
102780       , l_array_source_35
102781       , l_array_source_35_meaning
102782       , l_array_source_36
102783       LIMIT l_rows;
102784 
102785   --
102786   IF (C_LEVEL_EVENT >= g_log_level) THEN
102787             trace
102788                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
102789                ,p_level    => C_LEVEL_EVENT
102790                ,p_module   => l_log_module);
102791   END IF;
102792   --
102793   EXIT WHEN l_array_entity_id.count = 0;
102794 
102795   XLA_AE_LINES_PKG.g_rec_lines := null;
102796 
102797 --
102798 -- Bug 4458708
102799 --
102800 XLA_AE_LINES_PKG.g_LineNumber := 0;
102801 --
102802 --
102803 
102804 FOR Idx IN 1..l_array_event_id.count LOOP
102805    --
102809 
102806    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
102807    --
102808    l_event_id := l_array_event_id(idx);  -- 5648433
102810    --
102811    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
102812    --
102813 
102814    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
102815              (g_array_event(l_event_id).array_value_num('header_index'))
102816          ,'N'
102817          ) <> 'Y'
102818    THEN
102819       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
102820          trace
102821             (p_msg      => 'Trancaction revesal option is not Y '
102822             ,p_level    => C_LEVEL_STATEMENT
102823             ,p_module   => l_log_module);
102824       END IF;
102825 
102826 --
102827 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
102828 --
102829 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
102830 --
102831 -- set event info as cache for other routines to refer event attributes
102832 --
102833 
102834 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
102835    l_previous_event_id := l_event_id;
102836 
102837    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
102838       (p_application_id           => p_application_id
102839       ,p_primary_ledger_id        => p_primary_ledger_id
102840       ,p_base_ledger_id           => p_base_ledger_id
102841       ,p_target_ledger_id         => p_target_ledger_id
102842       ,p_entity_id                => l_array_entity_id(Idx)
102843       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
102844       ,p_entity_code              => l_array_entity_code(Idx)
102845       ,p_transaction_num          => l_array_transaction_num(Idx)
102846       ,p_event_id                 => l_array_event_id(Idx)
102847       ,p_event_class_code         => l_array_class_code(Idx)
102848       ,p_event_type_code          => l_array_event_type(Idx)
102849       ,p_event_number             => l_array_event_number(Idx)
102850       ,p_event_date               => l_array_event_date(Idx)
102851       ,p_transaction_date         => l_array_transaction_date(Idx)
102852       ,p_reference_num_1          => l_array_reference_num_1(Idx)
102853       ,p_reference_num_2          => l_array_reference_num_2(Idx)
102854       ,p_reference_num_3          => l_array_reference_num_3(Idx)
102855       ,p_reference_num_4          => l_array_reference_num_4(Idx)
102856       ,p_reference_char_1         => l_array_reference_char_1(Idx)
102857       ,p_reference_char_2         => l_array_reference_char_2(Idx)
102858       ,p_reference_char_3         => l_array_reference_char_3(Idx)
102859       ,p_reference_char_4         => l_array_reference_char_4(Idx)
102860       ,p_reference_date_1         => l_array_reference_date_1(Idx)
102861       ,p_reference_date_2         => l_array_reference_date_2(Idx)
102862       ,p_reference_date_3         => l_array_reference_date_3(Idx)
102863       ,p_reference_date_4         => l_array_reference_date_4(Idx)
102864       ,p_event_created_by         => l_array_event_created_by(Idx)
102865       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
102866        --
102867 END IF;
102868 
102869 
102870 
102871 --
102872 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
102873 
102874 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
102875 
102876 IF l_continue_with_lines THEN
102877    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
102878       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
102879 
102880       xla_accounting_err_pkg.build_message
102881          (p_appli_s_name            => 'XLA'
102882          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
102883          ,p_token_1                 => 'LINE_NUMBER'
102884          ,p_value_1                 => l_array_extract_line_num(Idx)
102885          ,p_token_2                 => 'PRODUCT_NAME'
102886          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
102887          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
102888          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
102889          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
102890 
102891    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
102892       --
102893       -- following sets the accounting attributes needed to reverse
102894       -- accounting for a distributeion
102895       --
102896 
102897       --
102898       -- 5217187
102899       --
102900       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
102901       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
102902                                        g_array_event(l_event_id).array_value_num('header_index'));
102903       --
102904       --
102905 
102906       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
102907       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
102908       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
102909       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
102910       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
102911       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
102912       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
102913       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
102914       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
102915       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
102916       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
102917       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
102918       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
102922       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
102919       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
102920       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
102921       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
102923       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
102924       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
102925       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
102926       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
102927       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
102928       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
102929       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
102930       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
102931       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
102932       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
102933       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
102934       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
102935       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
102936       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
102937       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
102938       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
102939       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
102940       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
102941       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
102942       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
102943       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
102944       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
102945       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
102946       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
102947       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
102948       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
102949       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
102950       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
102951       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
102952       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
102953       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
102954 
102955 
102956       xla_ae_lines_pkg.SetAcctReversalAttrs
102957          (p_event_id             => l_event_id
102958          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
102959          ,p_calculate_acctd_flag => l_calculate_acctd_flag
102960          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
102961    END IF;
102962 
102963    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
102964        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
102965 
102966 --
102967 AcctLineType_76 (
102968  p_application_id  => p_application_id
102969  ,p_event_id     => l_event_id
102970  ,p_calculate_acctd_flag => l_calculate_acctd_flag
102971  ,p_calculate_g_l_flag => l_calculate_g_l_flag
102972  ,p_actual_flag => l_actual_flag
102973  ,p_balance_type_code => l_balance_type_code
102974  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
102975  
102976  , p_source_4 => l_array_source_4(Idx)
102977  , p_source_5 => l_array_source_5(Idx)
102978  , p_source_6 => l_array_source_6(Idx)
102979  , p_source_7 => l_array_source_7(Idx)
102980  , p_source_23 => l_array_source_23(Idx)
102981  , p_source_24 => l_array_source_24(Idx)
102982  , p_source_25 => l_array_source_25(Idx)
102983  , p_source_26 => l_array_source_26(Idx)
102984  , p_source_27 => l_array_source_27(Idx)
102985  , p_source_28 => l_array_source_28(Idx)
102986  , p_source_29 => l_array_source_29(Idx)
102987  , p_source_30 => l_array_source_30(Idx)
102988  , p_source_31 => l_array_source_31(Idx)
102989  , p_source_32 => l_array_source_32(Idx)
102990  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
102991  , p_source_34 => l_array_source_34(Idx)
102992  , p_source_35 => l_array_source_35(Idx)
102993  , p_source_35_meaning => l_array_source_35_meaning(Idx)
102994  , p_source_36 => l_array_source_36(Idx)
102995  );
102996 If(l_balance_type_code = 'A') THEN
102997   l_actual_gain_loss_ref := l_gain_or_loss_ref;
102998 END IF;
102999 
103000 --
103001 
103002 
103003 --
103004 AcctLineType_81 (
103005  p_application_id  => p_application_id
103006  ,p_event_id     => l_event_id
103007  ,p_calculate_acctd_flag => l_calculate_acctd_flag
103008  ,p_calculate_g_l_flag => l_calculate_g_l_flag
103009  ,p_actual_flag => l_actual_flag
103010  ,p_balance_type_code => l_balance_type_code
103011  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
103012  
103013  , p_source_4 => l_array_source_4(Idx)
103014  , p_source_5 => l_array_source_5(Idx)
103015  , p_source_6 => l_array_source_6(Idx)
103016  , p_source_7 => l_array_source_7(Idx)
103017  , p_source_23 => l_array_source_23(Idx)
103018  , p_source_24 => l_array_source_24(Idx)
103019  , p_source_25 => l_array_source_25(Idx)
103020  , p_source_26 => l_array_source_26(Idx)
103021  , p_source_27 => l_array_source_27(Idx)
103022  , p_source_28 => l_array_source_28(Idx)
103023  , p_source_29 => l_array_source_29(Idx)
103024  , p_source_30 => l_array_source_30(Idx)
103025  , p_source_31 => l_array_source_31(Idx)
103026  , p_source_32 => l_array_source_32(Idx)
103027  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
103028  , p_source_34 => l_array_source_34(Idx)
103029  , p_source_35 => l_array_source_35(Idx)
103033 If(l_balance_type_code = 'A') THEN
103030  , p_source_35_meaning => l_array_source_35_meaning(Idx)
103031  , p_source_36 => l_array_source_36(Idx)
103032  );
103034   l_actual_gain_loss_ref := l_gain_or_loss_ref;
103035 END IF;
103036 
103037 --
103038 
103039 
103040 --
103041 AcctLineType_92 (
103042  p_application_id  => p_application_id
103043  ,p_event_id     => l_event_id
103044  ,p_calculate_acctd_flag => l_calculate_acctd_flag
103045  ,p_calculate_g_l_flag => l_calculate_g_l_flag
103046  ,p_actual_flag => l_actual_flag
103047  ,p_balance_type_code => l_balance_type_code
103048  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
103049  
103050  , p_source_4 => l_array_source_4(Idx)
103051  , p_source_5 => l_array_source_5(Idx)
103052  , p_source_7 => l_array_source_7(Idx)
103053  , p_source_8 => l_array_source_8(Idx)
103054  , p_source_23 => l_array_source_23(Idx)
103055  , p_source_24 => l_array_source_24(Idx)
103056  , p_source_25 => l_array_source_25(Idx)
103057  , p_source_26 => l_array_source_26(Idx)
103058  , p_source_27 => l_array_source_27(Idx)
103059  , p_source_28 => l_array_source_28(Idx)
103060  , p_source_29 => l_array_source_29(Idx)
103061  , p_source_30 => l_array_source_30(Idx)
103062  , p_source_31 => l_array_source_31(Idx)
103063  , p_source_32 => l_array_source_32(Idx)
103064  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
103065  , p_source_34 => l_array_source_34(Idx)
103066  , p_source_35 => l_array_source_35(Idx)
103067  , p_source_35_meaning => l_array_source_35_meaning(Idx)
103068  , p_source_36 => l_array_source_36(Idx)
103069  );
103070 If(l_balance_type_code = 'A') THEN
103071   l_actual_gain_loss_ref := l_gain_or_loss_ref;
103072 END IF;
103073 
103074 --
103075 
103076 
103077 --
103078 AcctLineType_101 (
103079  p_application_id  => p_application_id
103080  ,p_event_id     => l_event_id
103081  ,p_calculate_acctd_flag => l_calculate_acctd_flag
103082  ,p_calculate_g_l_flag => l_calculate_g_l_flag
103083  ,p_actual_flag => l_actual_flag
103084  ,p_balance_type_code => l_balance_type_code
103085  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
103086  
103087  , p_source_4 => l_array_source_4(Idx)
103088  , p_source_5 => l_array_source_5(Idx)
103089  , p_source_7 => l_array_source_7(Idx)
103090  , p_source_8 => l_array_source_8(Idx)
103091  , p_source_23 => l_array_source_23(Idx)
103092  , p_source_24 => l_array_source_24(Idx)
103093  , p_source_25 => l_array_source_25(Idx)
103094  , p_source_26 => l_array_source_26(Idx)
103095  , p_source_27 => l_array_source_27(Idx)
103096  , p_source_28 => l_array_source_28(Idx)
103097  , p_source_29 => l_array_source_29(Idx)
103098  , p_source_30 => l_array_source_30(Idx)
103099  , p_source_31 => l_array_source_31(Idx)
103100  , p_source_32 => l_array_source_32(Idx)
103101  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
103102  , p_source_34 => l_array_source_34(Idx)
103103  , p_source_35 => l_array_source_35(Idx)
103104  , p_source_35_meaning => l_array_source_35_meaning(Idx)
103105  , p_source_36 => l_array_source_36(Idx)
103106  );
103107 If(l_balance_type_code = 'A') THEN
103108   l_actual_gain_loss_ref := l_gain_or_loss_ref;
103109 END IF;
103110 
103111 --
103112 
103113       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
103114       -- or secondary ledger that has different currency with primary
103115       -- or alc that is calculated by sla
103116       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
103117             (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'))
103118 
103119 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
103120 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
103121           AND (l_actual_flag = 'A')) THEN
103122         XLA_AE_LINES_PKG.CreateGainOrLossLines(
103123           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
103124          ,p_application_id   => p_application_id
103125          ,p_amb_context_code => 'DEFAULT'
103126          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
103127          ,p_event_class_code => C_EVENT_CLASS_CODE
103128          ,p_event_type_code  => C_EVENT_TYPE_CODE
103129          
103130          ,p_gain_ccid        => -1
103131          ,p_loss_ccid        => -1
103132 
103133          ,p_actual_flag      => l_actual_flag
103134          ,p_enc_flag         => null
103135          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
103136          ,p_enc_g_l_ref      => null
103137          );
103138       END IF;
103139    END IF;
103140 END IF;
103141 
103142    ELSE
103143       --
103144       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
103145       --
103146       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103147          trace
103148             (p_msg      => 'Trancaction revesal option is Y'
103149             ,p_level    => C_LEVEL_STATEMENT
103150             ,p_module   => l_log_module);
103151       END IF;
103152    END IF;
103153 
103154 END LOOP;
103155 l_result := XLA_AE_LINES_PKG.InsertLines ;
103156 end loop;
103157 close line_cur;
103158 
103159 
103160 --
103161 -- insert headers into xla_ae_headers_gt table
103162 --
103163 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
103164 
103165 -- insert into errors table here.
103166 
103167 END LOOP;
103168 
103169 --
103170 -- 4865292
103171 --
103172 -- Compare g_hdr_extract_count with event count in
103173 -- CreateHeadersAndLines.
103174 --
103175 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
103176 
103177 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103181          ,p_level   => C_LEVEL_STATEMENT
103178    trace (p_msg     => '# rows extracted from header extract objects '
103179                     || ' (running total): '
103180                     || g_hdr_extract_count
103182          ,p_module  => l_log_module);
103183 END IF;
103184 
103185 CLOSE header_cur;
103186 --
103187 
103188 --
103189 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103190    trace
103191       (p_msg      => 'END of EventClass_167'
103192       ,p_level    => C_LEVEL_PROCEDURE
103193       ,p_module   => l_log_module);
103194 END IF;
103195 --
103196 RETURN l_result;
103197 EXCEPTION
103198 WHEN xla_exceptions_pkg.application_exception THEN
103199    
103200 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
103201 
103202    
103203 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
103204 
103205    RAISE;
103206 WHEN OTHERS THEN
103207    xla_exceptions_pkg.raise_message
103208       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_167');
103209 END EventClass_167;
103210 --
103211 
103212 ---------------------------------------
103213 --
103214 -- PRIVATE PROCEDURE
103215 --         insert_sources_168
103216 --
103217 ----------------------------------------
103218 --
103219 PROCEDURE insert_sources_168(
103220                                 p_target_ledger_id       IN NUMBER
103221                               , p_language               IN VARCHAR2
103222                               , p_sla_ledger_id          IN NUMBER
103223                               , p_pad_start_date         IN DATE
103224                               , p_pad_end_date           IN DATE
103225                          )
103226 IS
103227 
103228 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ALL';
103229 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'USG_COST';
103230 p_apps_owner                   VARCHAR2(30);
103231 l_log_module                   VARCHAR2(240);
103232 BEGIN
103233 IF g_log_enabled THEN
103234       l_log_module := C_DEFAULT_MODULE||'.insert_sources_168';
103235 END IF;
103236 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103237 
103238       trace
103239          (p_msg      => 'BEGIN of insert_sources_168'
103240          ,p_level    => C_LEVEL_PROCEDURE
103241          ,p_module   => l_log_module);
103242 
103243 END IF;
103244 
103245 -- select APPS owner
103246 SELECT oracle_username
103247   INTO p_apps_owner
103248   FROM fnd_oracle_userid
103249  WHERE read_only_flag = 'U'
103250 ;
103251 
103252 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103253       trace
103254          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
103255                         ' - p_language = '||p_language||
103256                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
103257                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
103258                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
103259                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
103260          ,p_level    => C_LEVEL_STATEMENT
103261          ,p_module   => l_log_module);
103262 END IF;
103263 
103264 
103265 --
103266 INSERT INTO xla_diag_sources --hdr2
103267 (
103268         event_id
103269       , ledger_id
103270       , sla_ledger_id
103271       , description_language
103272       , object_name
103273       , object_type_code
103274       , line_number
103275       , source_application_id
103276       , source_type_code
103277       , source_code
103278       , source_value
103279       , source_meaning
103280       , created_by
103281       , creation_date
103282       , last_update_date
103283       , last_updated_by
103284       , last_update_login
103285       , program_update_date
103286       , program_application_id
103287       , program_id
103288       , request_id
103289 )
103290 SELECT
103291         event_id
103292       , p_target_ledger_id
103293       , p_sla_ledger_id
103294       , p_language
103295       , object_name
103296       , object_type_code
103297       , line_number
103298       , source_application_id
103299       , source_type_code
103300       , source_code
103301       , SUBSTR(source_value ,1,1996)
103302       , SUBSTR(source_meaning ,1,200)
103303       , xla_environment_pkg.g_Usr_Id
103304       , TRUNC(SYSDATE)
103305       , TRUNC(SYSDATE)
103306       , xla_environment_pkg.g_Usr_Id
103307       , xla_environment_pkg.g_Login_Id
103308       , TRUNC(SYSDATE)
103309       , xla_environment_pkg.g_Prog_Appl_Id
103310       , xla_environment_pkg.g_Prog_Id
103311       , xla_environment_pkg.g_Req_Id
103312   FROM (
103313        SELECT xet.event_id                  event_id
103314             , 0                          line_number
103315             , CASE r
103316                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
103317                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
103318                 
103319                ELSE null
103320               END                           object_name
103321             , CASE r
103322                 WHEN 1 THEN 'HEADER' 
103323                 WHEN 2 THEN 'HEADER' 
103324                 
103325                 ELSE null
103326               END                           object_type_code
103327             , CASE r
103328                 WHEN 1 THEN '275' 
103329                 WHEN 2 THEN '275' 
103330                 
103331                 ELSE null
103332               END                           source_application_id
103333             , 'S'             source_type_code
103334             , CASE r
103335                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
103336                 WHEN 2 THEN 'GL_DATE' 
103337                 
103338                 ELSE null
103339               END                           source_code
103340             , CASE r
103344                 ELSE null
103341                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
103342                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
103343                 
103345               END                           source_value
103346             , null              source_meaning
103347          FROM xla_events_gt     xet  
103348       , PA_XLA_EXP_HEADER_V  h2
103349              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
103350          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
103351            AND xet.event_class_code = C_EVENT_CLASS_CODE
103352               AND h2.event_id = xet.event_id
103353 
103354 )
103355 ;
103356 --
103357 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103358 
103359       trace
103360          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
103361          ,p_level    => C_LEVEL_STATEMENT
103362          ,p_module   => l_log_module);
103363 
103364 END IF;
103365 --
103366 
103367 
103368 
103369 --
103370 INSERT INTO xla_diag_sources  --line2
103371 (
103372         event_id
103373       , ledger_id
103374       , sla_ledger_id
103375       , description_language
103376       , object_name
103377       , object_type_code
103378       , line_number
103379       , source_application_id
103380       , source_type_code
103381       , source_code
103382       , source_value
103383       , source_meaning
103384       , created_by
103385       , creation_date
103386       , last_update_date
103387       , last_updated_by
103388       , last_update_login
103389       , program_update_date
103390       , program_application_id
103391       , program_id
103392       , request_id
103393 )
103394 SELECT  event_id
103395       , p_target_ledger_id
103396       , p_sla_ledger_id
103397       , p_language
103398       , object_name
103399       , object_type_code
103400       , line_number
103401       , source_application_id
103402       , source_type_code
103403       , source_code
103404       , SUBSTR(source_value,1,1996)
103405       , SUBSTR(source_meaning ,1,200)
103406       , xla_environment_pkg.g_Usr_Id
103407       , TRUNC(SYSDATE)
103408       , TRUNC(SYSDATE)
103409       , xla_environment_pkg.g_Usr_Id
103410       , xla_environment_pkg.g_Login_Id
103411       , TRUNC(SYSDATE)
103412       , xla_environment_pkg.g_Prog_Appl_Id
103413       , xla_environment_pkg.g_Prog_Id
103414       , xla_environment_pkg.g_Req_Id
103415   FROM (
103416        SELECT xet.event_id                  event_id
103417             , l1.line_number                 line_number
103418             , CASE r
103419                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
103420                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
103421                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
103422                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
103423                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
103424                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
103425                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
103426                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
103427                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
103428                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
103429                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
103430                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
103431                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
103432                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
103433                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
103434                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
103435                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
103436                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
103437                 
103438                ELSE null
103439               END                           object_name
103440             , CASE r
103441                 WHEN 1 THEN 'LINE' 
103442                 WHEN 2 THEN 'LINE' 
103443                 WHEN 3 THEN 'LINE' 
103444                 WHEN 4 THEN 'LINE' 
103445                 WHEN 5 THEN 'LINE' 
103446                 WHEN 6 THEN 'LINE' 
103447                 WHEN 7 THEN 'LINE' 
103448                 WHEN 8 THEN 'LINE' 
103449                 WHEN 9 THEN 'LINE' 
103450                 WHEN 10 THEN 'LINE' 
103451                 WHEN 11 THEN 'LINE' 
103452                 WHEN 12 THEN 'LINE' 
103453                 WHEN 13 THEN 'LINE' 
103454                 WHEN 14 THEN 'LINE' 
103455                 WHEN 15 THEN 'LINE' 
103456                 WHEN 16 THEN 'LINE' 
103457                 WHEN 17 THEN 'LINE' 
103458                 WHEN 18 THEN 'LINE' 
103459                 
103460                 ELSE null
103461               END                           object_type_code
103462             , CASE r
103463                 WHEN 1 THEN '275' 
103464                 WHEN 2 THEN '275' 
103465                 WHEN 3 THEN '275' 
103466                 WHEN 4 THEN '275' 
103467                 WHEN 5 THEN '275' 
103468                 WHEN 6 THEN '275' 
103469                 WHEN 7 THEN '275' 
103470                 WHEN 8 THEN '275' 
103471                 WHEN 9 THEN '275' 
103472                 WHEN 10 THEN '275' 
103473                 WHEN 11 THEN '275' 
103474                 WHEN 12 THEN '275' 
103475                 WHEN 13 THEN '275' 
103476                 WHEN 14 THEN '275' 
103477                 WHEN 15 THEN '275' 
103478                 WHEN 16 THEN '275' 
103479                 WHEN 17 THEN '275' 
103480                 WHEN 18 THEN '275' 
103481                 
103482                 ELSE null
103483               END                           source_application_id
103484             , 'S'             source_type_code
103485             , CASE r
103486                 WHEN 1 THEN 'COST_CCID' 
103487                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
103488                 WHEN 3 THEN 'ADJ_COST_CCID' 
103492                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
103489                 WHEN 4 THEN 'COST_CLEARING_CCID' 
103490                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
103491                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
103493                 WHEN 8 THEN 'ENTERED_RAW_COST' 
103494                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
103495                 WHEN 10 THEN 'ACCT_RAW_COST' 
103496                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
103497                 WHEN 12 THEN 'EXCHANGE_RATE' 
103498                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
103499                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
103500                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
103501                 WHEN 16 THEN 'LINE_NUMBER' 
103502                 WHEN 17 THEN 'LINE_TYPE' 
103503                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
103504                 
103505                 ELSE null
103506               END                           source_code
103507             , CASE r
103508                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
103509                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
103510                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
103511                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
103512                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
103513                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
103514                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
103515                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
103516                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
103517                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
103518                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
103519                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
103520                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
103521                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
103522                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
103523                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
103524                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
103525                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
103526                 
103527                 ELSE null
103528               END                           source_value
103529             , CASE r
103530                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
103531                           103371
103532                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
103533                          ,'ALLOW_OVERRIDE_CCID_FLAG'
103534                          ,'S'
103535                          ,275)
103536                 WHEN 17 THEN fvl35.meaning
103537                 
103538                 ELSE null
103539               END               source_meaning
103540          FROM  xla_events_gt     xet  
103541         , PA_XLA_CDL_LINES_V  l1
103542   , fnd_lookup_values    fvl35
103543             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
103544         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
103545           AND xet.event_class_code = C_EVENT_CLASS_CODE
103546             AND l1.event_id          = xet.event_id
103547    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
103548   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
103549   AND fvl35.view_application_id(+) = 275
103550   AND fvl35.language(+)            = USERENV('LANG')
103551   
103552 )
103553 ;
103554 --
103555 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103556 
103557       trace
103558          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
103559          ,p_level    => C_LEVEL_STATEMENT
103560          ,p_module   => l_log_module);
103561 
103562 END IF;
103563 
103564 
103565 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103566       trace
103567          (p_msg      => 'END of insert_sources_168'
103568          ,p_level    => C_LEVEL_PROCEDURE
103569          ,p_module   => l_log_module);
103570 END IF;
103571 EXCEPTION
103572   WHEN xla_exceptions_pkg.application_exception THEN
103573       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
103574             trace
103575                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
103576                ,p_level    => C_LEVEL_EXCEPTION
103577                ,p_module   => l_log_module);
103578       END IF;
103579       RAISE;
103580   WHEN OTHERS THEN
103581       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
103582             trace
103583                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
103584                ,p_level    => C_LEVEL_EXCEPTION
103585                ,p_module   => l_log_module);
103586        END IF;
103587        xla_exceptions_pkg.raise_message
103588            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_168');
103589 END insert_sources_168;
103590 --
103591 
103592 ---------------------------------------
103593 --
103594 -- PRIVATE FUNCTION
103595 --         EventClass_168
103596 --
103597 ----------------------------------------
103598 --
103599 FUNCTION EventClass_168
103600        (p_application_id         IN NUMBER
103601        ,p_base_ledger_id         IN NUMBER
103602        ,p_target_ledger_id       IN NUMBER
103603        ,p_language               IN VARCHAR2
103604        ,p_currency_code          IN VARCHAR2
103605        ,p_sla_ledger_id          IN NUMBER
103606        ,p_pad_start_date         IN DATE
103607        ,p_pad_end_date           IN DATE
103608        ,p_primary_ledger_id      IN NUMBER)
103609 RETURN BOOLEAN IS
103610 --
103611 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'USG_COST_ALL';
103612 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'USG_COST';
103613 
103614 l_calculate_acctd_flag   VARCHAR2(1) :='N';
103615 l_calculate_g_l_flag     VARCHAR2(1) :='N';
103616 --
103617 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103618 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103622 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
103619 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
103620 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
103621 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103623 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
103624 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103625 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
103626 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
103627 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103628 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103629 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103630 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
103631 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
103632 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
103633 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
103634 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
103635 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
103636 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
103637 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
103638 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
103639 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
103640 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
103641 
103642 l_event_id                             NUMBER;
103643 l_previous_event_id                    NUMBER;
103644 l_first_event_id                       NUMBER;
103645 l_last_event_id                        NUMBER;
103646 
103647 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
103648 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
103649 --
103650 --
103651 l_result                    BOOLEAN := TRUE;
103652 l_rows                      NUMBER  := 1000;
103653 l_event_type_name           VARCHAR2(80) := 'All';
103654 l_event_class_name          VARCHAR2(80) := 'Usage Cost';
103655 l_description               VARCHAR2(4000);
103656 l_transaction_reversal      NUMBER;
103657 l_ae_header_id              NUMBER;
103658 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
103659 l_log_module                VARCHAR2(240);
103660 --
103661 l_acct_reversal_source      VARCHAR2(30);
103662 l_trx_reversal_source       VARCHAR2(30);
103663 
103664 l_continue_with_lines       BOOLEAN := TRUE;
103665 --
103666 l_acc_rev_gl_date_source    DATE;                      -- 4262811
103667 --
103668 type t_array_event_id is table of number index by binary_integer;
103669 
103670 l_rec_array_event                    t_rec_array_event;
103671 l_null_rec_array_event               t_rec_array_event;
103672 l_array_ae_header_id                 xla_number_array_type;
103673 l_actual_flag                        VARCHAR2(1) := NULL;
103674 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
103675 l_balance_type_code                  VARCHAR2(1) :=NULL;
103676 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
103677 
103678 --
103679 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
103680 --
103681 
103682 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
103683 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
103684 
103685 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
103686 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
103687 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
103688 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
103689 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
103690 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
103691 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
103692 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
103693 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
103694 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
103695 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
103696 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
103697 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
103698 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
103699 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
103700 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
103701 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
103702 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
103703 
103704 l_array_source_33              t_array_source_33;
103705 l_array_source_75              t_array_source_75;
103706 
103707 l_array_source_4      t_array_source_4;
103708 l_array_source_5      t_array_source_5;
103709 l_array_source_6      t_array_source_6;
103710 l_array_source_7      t_array_source_7;
103711 l_array_source_8      t_array_source_8;
103712 l_array_source_23      t_array_source_23;
103713 l_array_source_24      t_array_source_24;
103714 l_array_source_25      t_array_source_25;
103718 l_array_source_29      t_array_source_29;
103715 l_array_source_26      t_array_source_26;
103716 l_array_source_27      t_array_source_27;
103717 l_array_source_28      t_array_source_28;
103719 l_array_source_30      t_array_source_30;
103720 l_array_source_31      t_array_source_31;
103721 l_array_source_32      t_array_source_32;
103722 l_array_source_34      t_array_source_34;
103723 l_array_source_35      t_array_source_35;
103724 l_array_source_35_meaning      t_array_lookup_meaning;
103725 l_array_source_36      t_array_source_36;
103726 
103727 --
103728 CURSOR header_cur
103729 IS
103730 SELECT /*+ leading(xet) cardinality(xet,1) */
103731 -- Event Class Code: USG_COST
103732     xet.entity_id
103733    ,xet.legal_entity_id
103734    ,xet.entity_code
103735    ,xet.transaction_number
103736    ,xet.event_id
103737    ,xet.event_class_code
103738    ,xet.event_type_code
103739    ,xet.event_number
103740    ,xet.event_date
103741    ,xet.transaction_date
103742    ,xet.reference_num_1
103743    ,xet.reference_num_2
103744    ,xet.reference_num_3
103745    ,xet.reference_num_4
103746    ,xet.reference_char_1
103747    ,xet.reference_char_2
103748    ,xet.reference_char_3
103749    ,xet.reference_char_4
103750    ,xet.reference_date_1
103751    ,xet.reference_date_2
103752    ,xet.reference_date_3
103753    ,xet.reference_date_4
103754    ,xet.event_created_by
103755    ,xet.budgetary_control_flag 
103756   , h2.EXPENDITURE_ITEM_ID    source_33
103757   , h2.GL_DATE    source_75
103758   FROM xla_events_gt     xet 
103759   , PA_XLA_EXP_HEADER_V  h2
103760  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
103761    and xet.event_class_code = C_EVENT_CLASS_CODE
103762    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
103763 
103764  ORDER BY event_id
103765 ;
103766 
103767 
103768 --
103769 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
103770 IS
103771 SELECT  /*+ leading(xet) cardinality(xet,1) */
103772 -- Event Class Code: USG_COST
103773     xet.entity_id
103774    ,xet.legal_entity_id
103775    ,xet.entity_code
103776    ,xet.transaction_number
103777    ,xet.event_id
103778    ,xet.event_class_code
103779    ,xet.event_type_code
103780    ,xet.event_number
103781    ,xet.event_date
103782    ,xet.transaction_date
103783    ,xet.reference_num_1
103784    ,xet.reference_num_2
103785    ,xet.reference_num_3
103786    ,xet.reference_num_4
103787    ,xet.reference_char_1
103788    ,xet.reference_char_2
103789    ,xet.reference_char_3
103790    ,xet.reference_char_4
103791    ,xet.reference_date_1
103792    ,xet.reference_date_2
103793    ,xet.reference_date_3
103794    ,xet.reference_date_4
103795    ,xet.event_created_by
103796    ,xet.budgetary_control_flag
103797  , l1.LINE_NUMBER  
103798   , l1.COST_CCID    source_4
103799   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
103800   , l1.ADJ_COST_CCID    source_6
103801   , l1.COST_CLEARING_CCID    source_7
103802   , l1.ADJ_COST_CLEARING_CCID    source_8
103803   , l1.REVERSING_LINE_FLAG    source_23
103804   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
103805   , l1.ENTERED_RAW_COST    source_25
103806   , l1.ENTERED_CURRENCY_CODE    source_26
103807   , l1.ACCT_RAW_COST    source_27
103808   , l1.EXCHANGE_RATE_DATE    source_28
103809   , l1.EXCHANGE_RATE    source_29
103810   , l1.EXCHANGE_RATE_TYPE    source_30
103811   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
103812   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
103813   , l1.LINE_NUMBER    source_34
103814   , l1.LINE_TYPE    source_35
103815   , fvl35.meaning   source_35_meaning
103816   , l1.LINE_NUM_REVERSED    source_36
103817   FROM xla_events_gt     xet 
103818   , PA_XLA_CDL_LINES_V  l1
103819   , fnd_lookup_values    fvl35
103820  WHERE xet.event_id between x_first_event_id and x_last_event_id
103821    and xet.event_date between p_pad_start_date and p_pad_end_date
103822    and xet.event_class_code = C_EVENT_CLASS_CODE
103823    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
103824    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
103825   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
103826   AND fvl35.view_application_id(+) = 275
103827   AND fvl35.language(+)            = USERENV('LANG')
103828   ;
103829 
103830 --
103831 BEGIN
103832 IF g_log_enabled THEN
103833    l_log_module := C_DEFAULT_MODULE||'.EventClass_168';
103834 END IF;
103835 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
103836    trace
103837       (p_msg      => 'BEGIN of EventClass_168'
103838       ,p_level    => C_LEVEL_PROCEDURE
103839       ,p_module   => l_log_module);
103840 END IF;
103841 
103842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103843    trace
103844       (p_msg      => 'p_application_id = '||p_application_id||
103845                      ' - p_base_ledger_id = '||p_base_ledger_id||
103846                      ' - p_target_ledger_id  = '||p_target_ledger_id||
103847                      ' - p_language = '||p_language||
103848                      ' - p_currency_code = '||p_currency_code||
103849                      ' - p_sla_ledger_id = '||p_sla_ledger_id
103850       ,p_level    => C_LEVEL_STATEMENT
103851       ,p_module   => l_log_module);
103852 END IF;
103853 --
103854 -- initialze arrays
103855 --
103856 g_array_event.DELETE;
103857 l_rec_array_event := l_null_rec_array_event;
103858 --
103859 --------------------------------------
103860 -- 4262811 Initialze MPA Line Number
103861 --------------------------------------
103862 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
103863 
103864 --
103865 
103866 --
103867 OPEN header_cur;
103868 --
103869 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
103870    trace
103871    (p_msg      => 'SQL - FETCH header_cur'
103872    ,p_level    => C_LEVEL_STATEMENT
103876 LOOP
103873    ,p_module   => l_log_module);
103874 END IF;
103875 --
103877 FETCH header_cur BULK COLLECT INTO
103878         l_array_entity_id
103879       , l_array_legal_entity_id
103880       , l_array_entity_code
103881       , l_array_transaction_num
103882       , l_array_event_id
103883       , l_array_class_code
103884       , l_array_event_type
103885       , l_array_event_number
103886       , l_array_event_date
103887       , l_array_transaction_date
103888       , l_array_reference_num_1
103889       , l_array_reference_num_2
103890       , l_array_reference_num_3
103891       , l_array_reference_num_4
103892       , l_array_reference_char_1
103893       , l_array_reference_char_2
103894       , l_array_reference_char_3
103895       , l_array_reference_char_4
103896       , l_array_reference_date_1
103897       , l_array_reference_date_2
103898       , l_array_reference_date_3
103899       , l_array_reference_date_4
103900       , l_array_event_created_by
103901       , l_array_budgetary_control_flag 
103902       , l_array_source_33
103903       , l_array_source_75
103904       LIMIT l_rows;
103905 --
103906 IF (C_LEVEL_EVENT >= g_log_level) THEN
103907    trace
103908    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
103909    ,p_level    => C_LEVEL_EVENT
103910    ,p_module   => l_log_module);
103911 END IF;
103912 --
103913 EXIT WHEN l_array_entity_id.COUNT = 0;
103914 
103915 -- initialize arrays
103916 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
103917 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
103918 
103919 --
103920 -- Bug 4458708
103921 --
103922 XLA_AE_LINES_PKG.g_LineNumber := 0;
103923 
103924 
103925 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
103926 g_last_hdr_idx := l_array_event_id.LAST;
103927 --
103928 -- loop for the headers. Each iteration is for each header extract row
103929 -- fetched in header cursor
103930 --
103931 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
103932 
103933 --
103934 -- set event info as cache for other routines to refer event attributes
103935 --
103936 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
103937    (p_application_id           => p_application_id
103938    ,p_primary_ledger_id        => p_primary_ledger_id
103939    ,p_base_ledger_id           => p_base_ledger_id
103940    ,p_target_ledger_id         => p_target_ledger_id
103941    ,p_entity_id                => l_array_entity_id(hdr_idx)
103942    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
103943    ,p_entity_code              => l_array_entity_code(hdr_idx)
103944    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
103945    ,p_event_id                 => l_array_event_id(hdr_idx)
103946    ,p_event_class_code         => l_array_class_code(hdr_idx)
103947    ,p_event_type_code          => l_array_event_type(hdr_idx)
103948    ,p_event_number             => l_array_event_number(hdr_idx)
103949    ,p_event_date               => l_array_event_date(hdr_idx)
103950    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
103951    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
103952    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
103953    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
103954    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
103955    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
103956    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
103957    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
103958    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
103959    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
103960    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
103961    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
103962    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
103963    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
103964    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
103965 
103966 --
103967 -- set the status of entry to C_VALID (0)
103968 --
103969 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
103970 
103971 --
103972 -- initialize a row for ae header
103973 --
103974 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
103975 
103976 l_event_id := l_array_event_id(hdr_idx);
103977 
103978 --
103979 -- storing the hdr_idx for event. May be used by line cursor.
103980 --
103981 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
103982 
103983 --
103984 -- store sources from header extract. This can be improved to
103985 -- store only those sources from header extract that may be used in lines
103986 --
103987 
103988 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
103989 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
103990 
103991 --
103992 -- initilaize the status of ae headers for diffrent balance types
103993 -- the status is initialised to C_NOT_CREATED (2)
103994 --
103995 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
103996 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
103997 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
103998 
103999 --
104000 -- call api to validate and store accounting attributes for header
104001 --
104002 
104003 ------------------------------------------------------------
104004 -- Accrual Reversal : to get date for Standard Source (NONE)
104005 ------------------------------------------------------------
104006 l_acc_rev_gl_date_source := NULL;
104007 
104008      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
104012 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
104009       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
104010 
104011 
104013 
104014 XLA_AE_HEADER_PKG.SetJeCategoryName;
104015 
104016 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
104017 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
104018 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
104019 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
104020 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
104021 
104022 
104023 -- No header level analytical criteria
104024 
104025 --
104026 --accounting attribute enhancement, bug 3612931
104027 --
104028 l_trx_reversal_source := SUBSTR(NULL, 1,30);
104029 
104030 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
104031    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
104032 
104033    xla_accounting_err_pkg.build_message
104034       (p_appli_s_name            => 'XLA'
104035       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
104036       ,p_token_1                 => 'ACCT_ATTR_NAME'
104037       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
104038       ,p_token_2                 => 'PRODUCT_NAME'
104039       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
104040       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
104041       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
104042       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
104043 
104044 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
104045    --
104046    -- following sets the accounting attributes needed to reverse
104047    -- accounting for a distributeion
104048    --
104049    xla_ae_lines_pkg.SetTrxReversalAttrs
104050       (p_event_id              => l_event_id
104051       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
104052       ,p_trx_reversal_source   => l_trx_reversal_source);
104053 
104054 END IF;
104055 
104056 
104057 ----------------------------------------------------------------
104058 -- 4262811 -  update the header statuses to invalid in need be
104059 ----------------------------------------------------------------
104060 --
104061 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
104062 
104063 
104064   -----------------------------------------------
104065   -- No accrual reversal for the event class/type
104066   -----------------------------------------------
104067 ----------------------------------------------------------------
104068 
104069 --
104070 -- this ends the header loop iteration for one bulk fetch
104071 --
104072 END LOOP;
104073 
104074 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
104075 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
104076 
104077 --
104078 -- insert dummy rows into lines gt table that were created due to
104079 -- transaction reversals
104080 --
104081 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
104082    l_result := XLA_AE_LINES_PKG.InsertLines;
104083 END IF;
104084 
104085 --
104086 -- reset the temp_line_num for each set of events fetched from header
104087 -- cursor rather than doing it for each new event in line cursor
104088 -- Bug 3939231
104089 --
104090 xla_ae_lines_pkg.g_temp_line_num := 0;
104091 
104092 
104093 
104094 --
104095 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
104096 --
104097 --
104098 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
104099 
104100       trace
104101          (p_msg      => 'SQL - FETCH line_cur'
104102          ,p_level    => C_LEVEL_STATEMENT
104103          ,p_module   => l_log_module);
104104 
104105 END IF;
104106 --
104107 --
104108 LOOP
104109   --
104110   FETCH line_cur BULK COLLECT INTO
104111         l_array_entity_id
104112       , l_array_legal_entity_id
104113       , l_array_entity_code
104114       , l_array_transaction_num
104115       , l_array_event_id
104116       , l_array_class_code
104117       , l_array_event_type
104118       , l_array_event_number
104119       , l_array_event_date
104120       , l_array_transaction_date
104121       , l_array_reference_num_1
104122       , l_array_reference_num_2
104123       , l_array_reference_num_3
104124       , l_array_reference_num_4
104125       , l_array_reference_char_1
104126       , l_array_reference_char_2
104127       , l_array_reference_char_3
104128       , l_array_reference_char_4
104129       , l_array_reference_date_1
104130       , l_array_reference_date_2
104131       , l_array_reference_date_3
104132       , l_array_reference_date_4
104133       , l_array_event_created_by
104134       , l_array_budgetary_control_flag
104135       , l_array_extract_line_num 
104136       , l_array_source_4
104137       , l_array_source_5
104138       , l_array_source_6
104139       , l_array_source_7
104140       , l_array_source_8
104141       , l_array_source_23
104142       , l_array_source_24
104143       , l_array_source_25
104144       , l_array_source_26
104145       , l_array_source_27
104146       , l_array_source_28
104147       , l_array_source_29
104148       , l_array_source_30
104149       , l_array_source_31
104150       , l_array_source_32
104151       , l_array_source_34
104152       , l_array_source_35
104153       , l_array_source_35_meaning
104154       , l_array_source_36
104155       LIMIT l_rows;
104156 
104157   --
104158   IF (C_LEVEL_EVENT >= g_log_level) THEN
104162                ,p_module   => l_log_module);
104159             trace
104160                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
104161                ,p_level    => C_LEVEL_EVENT
104163   END IF;
104164   --
104165   EXIT WHEN l_array_entity_id.count = 0;
104166 
104167   XLA_AE_LINES_PKG.g_rec_lines := null;
104168 
104169 --
104170 -- Bug 4458708
104171 --
104172 XLA_AE_LINES_PKG.g_LineNumber := 0;
104173 --
104174 --
104175 
104176 FOR Idx IN 1..l_array_event_id.count LOOP
104177    --
104178    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
104179    --
104180    l_event_id := l_array_event_id(idx);  -- 5648433
104181 
104182    --
104183    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
104184    --
104185 
104186    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
104187              (g_array_event(l_event_id).array_value_num('header_index'))
104188          ,'N'
104189          ) <> 'Y'
104190    THEN
104191       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
104192          trace
104193             (p_msg      => 'Trancaction revesal option is not Y '
104194             ,p_level    => C_LEVEL_STATEMENT
104195             ,p_module   => l_log_module);
104196       END IF;
104197 
104198 --
104199 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
104200 --
104201 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
104202 --
104203 -- set event info as cache for other routines to refer event attributes
104204 --
104205 
104206 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
104207    l_previous_event_id := l_event_id;
104208 
104209    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
104210       (p_application_id           => p_application_id
104211       ,p_primary_ledger_id        => p_primary_ledger_id
104212       ,p_base_ledger_id           => p_base_ledger_id
104213       ,p_target_ledger_id         => p_target_ledger_id
104214       ,p_entity_id                => l_array_entity_id(Idx)
104215       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
104216       ,p_entity_code              => l_array_entity_code(Idx)
104217       ,p_transaction_num          => l_array_transaction_num(Idx)
104218       ,p_event_id                 => l_array_event_id(Idx)
104219       ,p_event_class_code         => l_array_class_code(Idx)
104220       ,p_event_type_code          => l_array_event_type(Idx)
104221       ,p_event_number             => l_array_event_number(Idx)
104222       ,p_event_date               => l_array_event_date(Idx)
104223       ,p_transaction_date         => l_array_transaction_date(Idx)
104224       ,p_reference_num_1          => l_array_reference_num_1(Idx)
104225       ,p_reference_num_2          => l_array_reference_num_2(Idx)
104226       ,p_reference_num_3          => l_array_reference_num_3(Idx)
104227       ,p_reference_num_4          => l_array_reference_num_4(Idx)
104228       ,p_reference_char_1         => l_array_reference_char_1(Idx)
104229       ,p_reference_char_2         => l_array_reference_char_2(Idx)
104230       ,p_reference_char_3         => l_array_reference_char_3(Idx)
104231       ,p_reference_char_4         => l_array_reference_char_4(Idx)
104232       ,p_reference_date_1         => l_array_reference_date_1(Idx)
104233       ,p_reference_date_2         => l_array_reference_date_2(Idx)
104234       ,p_reference_date_3         => l_array_reference_date_3(Idx)
104235       ,p_reference_date_4         => l_array_reference_date_4(Idx)
104236       ,p_event_created_by         => l_array_event_created_by(Idx)
104237       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
104238        --
104239 END IF;
104240 
104241 
104242 
104243 --
104244 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
104245 
104246 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
104247 
104248 IF l_continue_with_lines THEN
104249    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
104250       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
104251 
104252       xla_accounting_err_pkg.build_message
104253          (p_appli_s_name            => 'XLA'
104254          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
104255          ,p_token_1                 => 'LINE_NUMBER'
104256          ,p_value_1                 => l_array_extract_line_num(Idx)
104257          ,p_token_2                 => 'PRODUCT_NAME'
104258          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
104259          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
104260          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
104261          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
104262 
104263    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
104264       --
104265       -- following sets the accounting attributes needed to reverse
104266       -- accounting for a distributeion
104267       --
104268 
104269       --
104270       -- 5217187
104271       --
104272       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
104273       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
104274                                        g_array_event(l_event_id).array_value_num('header_index'));
104275       --
104276       --
104277 
104278       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
104279       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
104280       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
104281       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
104282       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
104283       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
104287       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
104284       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
104285       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
104286       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
104288       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
104289       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
104290       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
104291       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
104292       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
104293       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
104294       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
104295       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
104296       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
104297       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
104298       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
104299       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
104300       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
104301       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
104302       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
104303       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
104304       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
104305       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
104306       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
104307       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
104308       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
104309       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
104310       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
104311       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
104312       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
104313       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
104314       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
104315       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
104316       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
104317       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
104318       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
104319       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
104320       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
104321       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
104322       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
104323       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
104324       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
104325       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
104326 
104327 
104328       xla_ae_lines_pkg.SetAcctReversalAttrs
104329          (p_event_id             => l_event_id
104330          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
104331          ,p_calculate_acctd_flag => l_calculate_acctd_flag
104332          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
104333    END IF;
104334 
104335    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
104336        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
104337 
104338 --
104339 AcctLineType_69 (
104340  p_application_id  => p_application_id
104341  ,p_event_id     => l_event_id
104342  ,p_calculate_acctd_flag => l_calculate_acctd_flag
104343  ,p_calculate_g_l_flag => l_calculate_g_l_flag
104344  ,p_actual_flag => l_actual_flag
104345  ,p_balance_type_code => l_balance_type_code
104346  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
104347  
104348  , p_source_4 => l_array_source_4(Idx)
104349  , p_source_5 => l_array_source_5(Idx)
104350  , p_source_6 => l_array_source_6(Idx)
104351  , p_source_7 => l_array_source_7(Idx)
104352  , p_source_23 => l_array_source_23(Idx)
104353  , p_source_24 => l_array_source_24(Idx)
104354  , p_source_25 => l_array_source_25(Idx)
104355  , p_source_26 => l_array_source_26(Idx)
104356  , p_source_27 => l_array_source_27(Idx)
104357  , p_source_28 => l_array_source_28(Idx)
104358  , p_source_29 => l_array_source_29(Idx)
104359  , p_source_30 => l_array_source_30(Idx)
104360  , p_source_31 => l_array_source_31(Idx)
104361  , p_source_32 => l_array_source_32(Idx)
104362  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
104363  , p_source_34 => l_array_source_34(Idx)
104364  , p_source_35 => l_array_source_35(Idx)
104365  , p_source_35_meaning => l_array_source_35_meaning(Idx)
104366  , p_source_36 => l_array_source_36(Idx)
104367  );
104368 If(l_balance_type_code = 'A') THEN
104369   l_actual_gain_loss_ref := l_gain_or_loss_ref;
104370 END IF;
104371 
104372 --
104373 
104374 
104375 --
104376 AcctLineType_87 (
104377  p_application_id  => p_application_id
104378  ,p_event_id     => l_event_id
104379  ,p_calculate_acctd_flag => l_calculate_acctd_flag
104380  ,p_calculate_g_l_flag => l_calculate_g_l_flag
104381  ,p_actual_flag => l_actual_flag
104382  ,p_balance_type_code => l_balance_type_code
104383  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
104384  
104385  , p_source_4 => l_array_source_4(Idx)
104386  , p_source_5 => l_array_source_5(Idx)
104387  , p_source_7 => l_array_source_7(Idx)
104388  , p_source_8 => l_array_source_8(Idx)
104389  , p_source_23 => l_array_source_23(Idx)
104390  , p_source_24 => l_array_source_24(Idx)
104394  , p_source_28 => l_array_source_28(Idx)
104391  , p_source_25 => l_array_source_25(Idx)
104392  , p_source_26 => l_array_source_26(Idx)
104393  , p_source_27 => l_array_source_27(Idx)
104395  , p_source_29 => l_array_source_29(Idx)
104396  , p_source_30 => l_array_source_30(Idx)
104397  , p_source_31 => l_array_source_31(Idx)
104398  , p_source_32 => l_array_source_32(Idx)
104399  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
104400  , p_source_34 => l_array_source_34(Idx)
104401  , p_source_35 => l_array_source_35(Idx)
104402  , p_source_35_meaning => l_array_source_35_meaning(Idx)
104403  , p_source_36 => l_array_source_36(Idx)
104404  );
104405 If(l_balance_type_code = 'A') THEN
104406   l_actual_gain_loss_ref := l_gain_or_loss_ref;
104407 END IF;
104408 
104409 --
104410 
104411 
104412 --
104413 AcctLineType_107 (
104414  p_application_id  => p_application_id
104415  ,p_event_id     => l_event_id
104416  ,p_calculate_acctd_flag => l_calculate_acctd_flag
104417  ,p_calculate_g_l_flag => l_calculate_g_l_flag
104418  ,p_actual_flag => l_actual_flag
104419  ,p_balance_type_code => l_balance_type_code
104420  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
104421  
104422  , p_source_4 => l_array_source_4(Idx)
104423  , p_source_5 => l_array_source_5(Idx)
104424  , p_source_7 => l_array_source_7(Idx)
104425  , p_source_8 => l_array_source_8(Idx)
104426  , p_source_23 => l_array_source_23(Idx)
104427  , p_source_24 => l_array_source_24(Idx)
104428  , p_source_25 => l_array_source_25(Idx)
104429  , p_source_26 => l_array_source_26(Idx)
104430  , p_source_27 => l_array_source_27(Idx)
104431  , p_source_28 => l_array_source_28(Idx)
104432  , p_source_29 => l_array_source_29(Idx)
104433  , p_source_30 => l_array_source_30(Idx)
104434  , p_source_31 => l_array_source_31(Idx)
104435  , p_source_32 => l_array_source_32(Idx)
104436  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
104437  , p_source_34 => l_array_source_34(Idx)
104438  , p_source_35 => l_array_source_35(Idx)
104439  , p_source_35_meaning => l_array_source_35_meaning(Idx)
104440  , p_source_36 => l_array_source_36(Idx)
104441  );
104442 If(l_balance_type_code = 'A') THEN
104443   l_actual_gain_loss_ref := l_gain_or_loss_ref;
104444 END IF;
104445 
104446 --
104447 
104448 
104449 --
104450 AcctLineType_108 (
104451  p_application_id  => p_application_id
104452  ,p_event_id     => l_event_id
104453  ,p_calculate_acctd_flag => l_calculate_acctd_flag
104454  ,p_calculate_g_l_flag => l_calculate_g_l_flag
104455  ,p_actual_flag => l_actual_flag
104456  ,p_balance_type_code => l_balance_type_code
104457  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
104458  
104459  , p_source_4 => l_array_source_4(Idx)
104460  , p_source_5 => l_array_source_5(Idx)
104461  , p_source_6 => l_array_source_6(Idx)
104462  , p_source_7 => l_array_source_7(Idx)
104463  , p_source_23 => l_array_source_23(Idx)
104464  , p_source_24 => l_array_source_24(Idx)
104465  , p_source_25 => l_array_source_25(Idx)
104466  , p_source_26 => l_array_source_26(Idx)
104467  , p_source_27 => l_array_source_27(Idx)
104468  , p_source_28 => l_array_source_28(Idx)
104469  , p_source_29 => l_array_source_29(Idx)
104470  , p_source_30 => l_array_source_30(Idx)
104471  , p_source_31 => l_array_source_31(Idx)
104472  , p_source_32 => l_array_source_32(Idx)
104473  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
104474  , p_source_34 => l_array_source_34(Idx)
104475  , p_source_35 => l_array_source_35(Idx)
104476  , p_source_35_meaning => l_array_source_35_meaning(Idx)
104477  , p_source_36 => l_array_source_36(Idx)
104478  );
104479 If(l_balance_type_code = 'A') THEN
104480   l_actual_gain_loss_ref := l_gain_or_loss_ref;
104481 END IF;
104482 
104483 --
104484 
104485       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
104486       -- or secondary ledger that has different currency with primary
104487       -- or alc that is calculated by sla
104488       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
104489             (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'))
104490 
104491 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
104492 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
104493           AND (l_actual_flag = 'A')) THEN
104494         XLA_AE_LINES_PKG.CreateGainOrLossLines(
104495           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
104496          ,p_application_id   => p_application_id
104497          ,p_amb_context_code => 'DEFAULT'
104498          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
104499          ,p_event_class_code => C_EVENT_CLASS_CODE
104500          ,p_event_type_code  => C_EVENT_TYPE_CODE
104501          
104502          ,p_gain_ccid        => -1
104503          ,p_loss_ccid        => -1
104504 
104505          ,p_actual_flag      => l_actual_flag
104506          ,p_enc_flag         => null
104507          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
104508          ,p_enc_g_l_ref      => null
104509          );
104510       END IF;
104511    END IF;
104512 END IF;
104513 
104514    ELSE
104515       --
104516       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
104517       --
104518       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
104519          trace
104520             (p_msg      => 'Trancaction revesal option is Y'
104521             ,p_level    => C_LEVEL_STATEMENT
104522             ,p_module   => l_log_module);
104523       END IF;
104524    END IF;
104525 
104526 END LOOP;
104527 l_result := XLA_AE_LINES_PKG.InsertLines ;
104528 end loop;
104529 close line_cur;
104530 
104531 
104532 --
104536 
104533 -- insert headers into xla_ae_headers_gt table
104534 --
104535 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
104537 -- insert into errors table here.
104538 
104539 END LOOP;
104540 
104541 --
104542 -- 4865292
104543 --
104544 -- Compare g_hdr_extract_count with event count in
104545 -- CreateHeadersAndLines.
104546 --
104547 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
104548 
104549 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
104550    trace (p_msg     => '# rows extracted from header extract objects '
104551                     || ' (running total): '
104552                     || g_hdr_extract_count
104553          ,p_level   => C_LEVEL_STATEMENT
104554          ,p_module  => l_log_module);
104555 END IF;
104556 
104557 CLOSE header_cur;
104558 --
104559 
104560 --
104561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104562    trace
104563       (p_msg      => 'END of EventClass_168'
104564       ,p_level    => C_LEVEL_PROCEDURE
104565       ,p_module   => l_log_module);
104566 END IF;
104567 --
104568 RETURN l_result;
104569 EXCEPTION
104570 WHEN xla_exceptions_pkg.application_exception THEN
104571    
104572 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
104573 
104574    
104575 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
104576 
104577    RAISE;
104578 WHEN OTHERS THEN
104579    xla_exceptions_pkg.raise_message
104580       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_168');
104581 END EventClass_168;
104582 --
104583 
104584 ---------------------------------------
104585 --
104586 -- PRIVATE PROCEDURE
104587 --         insert_sources_169
104588 --
104589 ----------------------------------------
104590 --
104591 PROCEDURE insert_sources_169(
104592                                 p_target_ledger_id       IN NUMBER
104593                               , p_language               IN VARCHAR2
104594                               , p_sla_ledger_id          IN NUMBER
104595                               , p_pad_start_date         IN DATE
104596                               , p_pad_end_date           IN DATE
104597                          )
104598 IS
104599 
104600 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ADJ_ALL';
104601 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST_ADJ';
104602 p_apps_owner                   VARCHAR2(30);
104603 l_log_module                   VARCHAR2(240);
104604 BEGIN
104605 IF g_log_enabled THEN
104606       l_log_module := C_DEFAULT_MODULE||'.insert_sources_169';
104607 END IF;
104608 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104609 
104610       trace
104611          (p_msg      => 'BEGIN of insert_sources_169'
104612          ,p_level    => C_LEVEL_PROCEDURE
104613          ,p_module   => l_log_module);
104614 
104615 END IF;
104616 
104617 -- select APPS owner
104618 SELECT oracle_username
104619   INTO p_apps_owner
104620   FROM fnd_oracle_userid
104621  WHERE read_only_flag = 'U'
104622 ;
104623 
104624 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
104625       trace
104626          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
104627                         ' - p_language = '||p_language||
104628                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
104629                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
104630                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
104631                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
104632          ,p_level    => C_LEVEL_STATEMENT
104633          ,p_module   => l_log_module);
104634 END IF;
104635 
104636 
104637 --
104638 INSERT INTO xla_diag_sources --hdr2
104639 (
104640         event_id
104641       , ledger_id
104642       , sla_ledger_id
104643       , description_language
104644       , object_name
104645       , object_type_code
104646       , line_number
104647       , source_application_id
104648       , source_type_code
104649       , source_code
104650       , source_value
104651       , source_meaning
104652       , created_by
104653       , creation_date
104654       , last_update_date
104655       , last_updated_by
104656       , last_update_login
104657       , program_update_date
104658       , program_application_id
104659       , program_id
104660       , request_id
104661 )
104662 SELECT
104663         event_id
104664       , p_target_ledger_id
104665       , p_sla_ledger_id
104666       , p_language
104667       , object_name
104668       , object_type_code
104669       , line_number
104670       , source_application_id
104671       , source_type_code
104672       , source_code
104673       , SUBSTR(source_value ,1,1996)
104674       , SUBSTR(source_meaning ,1,200)
104675       , xla_environment_pkg.g_Usr_Id
104676       , TRUNC(SYSDATE)
104677       , TRUNC(SYSDATE)
104678       , xla_environment_pkg.g_Usr_Id
104679       , xla_environment_pkg.g_Login_Id
104680       , TRUNC(SYSDATE)
104681       , xla_environment_pkg.g_Prog_Appl_Id
104682       , xla_environment_pkg.g_Prog_Id
104683       , xla_environment_pkg.g_Req_Id
104684   FROM (
104685        SELECT xet.event_id                  event_id
104686             , 0                          line_number
104687             , CASE r
104688                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
104689                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
104690                 
104691                ELSE null
104692               END                           object_name
104693             , CASE r
104694                 WHEN 1 THEN 'HEADER' 
104695                 WHEN 2 THEN 'HEADER' 
104696                 
104697                 ELSE null
104698               END                           object_type_code
104699             , CASE r
104703                 ELSE null
104700                 WHEN 1 THEN '275' 
104701                 WHEN 2 THEN '275' 
104702                 
104704               END                           source_application_id
104705             , 'S'             source_type_code
104706             , CASE r
104707                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
104708                 WHEN 2 THEN 'GL_DATE' 
104709                 
104710                 ELSE null
104711               END                           source_code
104712             , CASE r
104713                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
104714                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
104715                 
104716                 ELSE null
104717               END                           source_value
104718             , null              source_meaning
104719          FROM xla_events_gt     xet  
104720       , PA_XLA_EXP_HEADER_V  h2
104721              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
104722          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
104723            AND xet.event_class_code = C_EVENT_CLASS_CODE
104724               AND h2.event_id = xet.event_id
104725 
104726 )
104727 ;
104728 --
104729 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
104730 
104731       trace
104732          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
104733          ,p_level    => C_LEVEL_STATEMENT
104734          ,p_module   => l_log_module);
104735 
104736 END IF;
104737 --
104738 
104739 
104740 
104741 --
104742 INSERT INTO xla_diag_sources  --line2
104743 (
104744         event_id
104745       , ledger_id
104746       , sla_ledger_id
104747       , description_language
104748       , object_name
104749       , object_type_code
104750       , line_number
104751       , source_application_id
104752       , source_type_code
104753       , source_code
104754       , source_value
104755       , source_meaning
104756       , created_by
104757       , creation_date
104758       , last_update_date
104759       , last_updated_by
104760       , last_update_login
104761       , program_update_date
104762       , program_application_id
104763       , program_id
104764       , request_id
104765 )
104766 SELECT  event_id
104767       , p_target_ledger_id
104768       , p_sla_ledger_id
104769       , p_language
104770       , object_name
104771       , object_type_code
104772       , line_number
104773       , source_application_id
104774       , source_type_code
104775       , source_code
104776       , SUBSTR(source_value,1,1996)
104777       , SUBSTR(source_meaning ,1,200)
104778       , xla_environment_pkg.g_Usr_Id
104779       , TRUNC(SYSDATE)
104780       , TRUNC(SYSDATE)
104781       , xla_environment_pkg.g_Usr_Id
104782       , xla_environment_pkg.g_Login_Id
104783       , TRUNC(SYSDATE)
104784       , xla_environment_pkg.g_Prog_Appl_Id
104785       , xla_environment_pkg.g_Prog_Id
104786       , xla_environment_pkg.g_Req_Id
104787   FROM (
104788        SELECT xet.event_id                  event_id
104789             , l1.line_number                 line_number
104790             , CASE r
104791                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
104792                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
104793                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
104794                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
104795                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
104796                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
104797                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
104798                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
104799                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
104800                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
104801                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
104802                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
104803                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
104804                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
104805                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
104806                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
104807                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
104808                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
104809                 
104810                ELSE null
104811               END                           object_name
104812             , CASE r
104813                 WHEN 1 THEN 'LINE' 
104814                 WHEN 2 THEN 'LINE' 
104815                 WHEN 3 THEN 'LINE' 
104816                 WHEN 4 THEN 'LINE' 
104817                 WHEN 5 THEN 'LINE' 
104818                 WHEN 6 THEN 'LINE' 
104819                 WHEN 7 THEN 'LINE' 
104820                 WHEN 8 THEN 'LINE' 
104821                 WHEN 9 THEN 'LINE' 
104822                 WHEN 10 THEN 'LINE' 
104823                 WHEN 11 THEN 'LINE' 
104824                 WHEN 12 THEN 'LINE' 
104825                 WHEN 13 THEN 'LINE' 
104826                 WHEN 14 THEN 'LINE' 
104827                 WHEN 15 THEN 'LINE' 
104828                 WHEN 16 THEN 'LINE' 
104829                 WHEN 17 THEN 'LINE' 
104830                 WHEN 18 THEN 'LINE' 
104831                 
104832                 ELSE null
104833               END                           object_type_code
104834             , CASE r
104835                 WHEN 1 THEN '275' 
104836                 WHEN 2 THEN '275' 
104837                 WHEN 3 THEN '275' 
104838                 WHEN 4 THEN '275' 
104839                 WHEN 5 THEN '275' 
104840                 WHEN 6 THEN '275' 
104841                 WHEN 7 THEN '275' 
104842                 WHEN 8 THEN '275' 
104843                 WHEN 9 THEN '275' 
104844                 WHEN 10 THEN '275' 
104845                 WHEN 11 THEN '275' 
104846                 WHEN 12 THEN '275' 
104847                 WHEN 13 THEN '275' 
104848                 WHEN 14 THEN '275' 
104852                 WHEN 18 THEN '275' 
104849                 WHEN 15 THEN '275' 
104850                 WHEN 16 THEN '275' 
104851                 WHEN 17 THEN '275' 
104853                 
104854                 ELSE null
104855               END                           source_application_id
104856             , 'S'             source_type_code
104857             , CASE r
104858                 WHEN 1 THEN 'COST_CCID' 
104859                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
104860                 WHEN 3 THEN 'ADJ_COST_CCID' 
104861                 WHEN 4 THEN 'COST_CLEARING_CCID' 
104862                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
104863                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
104864                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
104865                 WHEN 8 THEN 'ENTERED_RAW_COST' 
104866                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
104867                 WHEN 10 THEN 'ACCT_RAW_COST' 
104868                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
104869                 WHEN 12 THEN 'EXCHANGE_RATE' 
104870                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
104871                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
104872                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
104873                 WHEN 16 THEN 'LINE_NUMBER' 
104874                 WHEN 17 THEN 'LINE_TYPE' 
104875                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
104876                 
104877                 ELSE null
104878               END                           source_code
104879             , CASE r
104880                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
104881                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
104882                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
104883                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
104884                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
104885                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
104886                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
104887                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
104888                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
104889                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
104890                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
104891                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
104892                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
104893                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
104894                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
104895                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
104896                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
104897                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
104898                 
104899                 ELSE null
104900               END                           source_value
104901             , CASE r
104902                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
104903                           103371
104904                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
104905                          ,'ALLOW_OVERRIDE_CCID_FLAG'
104906                          ,'S'
104907                          ,275)
104908                 WHEN 17 THEN fvl35.meaning
104909                 
104910                 ELSE null
104911               END               source_meaning
104912          FROM  xla_events_gt     xet  
104913         , PA_XLA_CDL_LINES_V  l1
104914   , fnd_lookup_values    fvl35
104915             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
104916         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
104917           AND xet.event_class_code = C_EVENT_CLASS_CODE
104918             AND l1.event_id          = xet.event_id
104919    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
104920   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
104921   AND fvl35.view_application_id(+) = 275
104922   AND fvl35.language(+)            = USERENV('LANG')
104923   
104924 )
104925 ;
104926 --
104927 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
104928 
104929       trace
104930          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
104931          ,p_level    => C_LEVEL_STATEMENT
104932          ,p_module   => l_log_module);
104933 
104934 END IF;
104935 
104936 
104937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
104938       trace
104939          (p_msg      => 'END of insert_sources_169'
104940          ,p_level    => C_LEVEL_PROCEDURE
104941          ,p_module   => l_log_module);
104942 END IF;
104943 EXCEPTION
104944   WHEN xla_exceptions_pkg.application_exception THEN
104945       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
104946             trace
104947                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
104948                ,p_level    => C_LEVEL_EXCEPTION
104949                ,p_module   => l_log_module);
104950       END IF;
104951       RAISE;
104952   WHEN OTHERS THEN
104953       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
104954             trace
104955                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
104956                ,p_level    => C_LEVEL_EXCEPTION
104957                ,p_module   => l_log_module);
104958        END IF;
104959        xla_exceptions_pkg.raise_message
104960            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_169');
104961 END insert_sources_169;
104962 --
104963 
104964 ---------------------------------------
104965 --
104966 -- PRIVATE FUNCTION
104967 --         EventClass_169
104968 --
104969 ----------------------------------------
104970 --
104971 FUNCTION EventClass_169
104972        (p_application_id         IN NUMBER
104973        ,p_base_ledger_id         IN NUMBER
104974        ,p_target_ledger_id       IN NUMBER
104975        ,p_language               IN VARCHAR2
104976        ,p_currency_code          IN VARCHAR2
104977        ,p_sla_ledger_id          IN NUMBER
104978        ,p_pad_start_date         IN DATE
104979        ,p_pad_end_date           IN DATE
104983 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ADJ_ALL';
104980        ,p_primary_ledger_id      IN NUMBER)
104981 RETURN BOOLEAN IS
104982 --
104984 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST_ADJ';
104985 
104986 l_calculate_acctd_flag   VARCHAR2(1) :='N';
104987 l_calculate_g_l_flag     VARCHAR2(1) :='N';
104988 --
104989 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
104990 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
104991 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
104992 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
104993 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
104994 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
104995 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
104996 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
104997 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
104998 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
104999 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
105000 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
105001 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
105002 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
105003 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
105004 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
105005 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
105006 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
105007 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
105008 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
105009 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
105010 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
105011 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
105012 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
105013 
105014 l_event_id                             NUMBER;
105015 l_previous_event_id                    NUMBER;
105016 l_first_event_id                       NUMBER;
105017 l_last_event_id                        NUMBER;
105018 
105019 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
105020 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
105021 --
105022 --
105023 l_result                    BOOLEAN := TRUE;
105024 l_rows                      NUMBER  := 1000;
105025 l_event_type_name           VARCHAR2(80) := 'All';
105026 l_event_class_name          VARCHAR2(80) := 'Work in Process Cost Adjustment';
105027 l_description               VARCHAR2(4000);
105028 l_transaction_reversal      NUMBER;
105029 l_ae_header_id              NUMBER;
105030 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
105031 l_log_module                VARCHAR2(240);
105032 --
105033 l_acct_reversal_source      VARCHAR2(30);
105034 l_trx_reversal_source       VARCHAR2(30);
105035 
105036 l_continue_with_lines       BOOLEAN := TRUE;
105037 --
105038 l_acc_rev_gl_date_source    DATE;                      -- 4262811
105039 --
105040 type t_array_event_id is table of number index by binary_integer;
105041 
105042 l_rec_array_event                    t_rec_array_event;
105043 l_null_rec_array_event               t_rec_array_event;
105044 l_array_ae_header_id                 xla_number_array_type;
105045 l_actual_flag                        VARCHAR2(1) := NULL;
105046 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
105047 l_balance_type_code                  VARCHAR2(1) :=NULL;
105048 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
105049 
105050 --
105051 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
105052 --
105053 
105054 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
105055 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
105056 
105057 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
105058 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
105059 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
105060 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
105061 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
105062 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
105063 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
105064 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
105065 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
105066 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
105067 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
105068 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
105069 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
105070 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
105071 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
105072 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
105073 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
105074 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
105078 
105075 
105076 l_array_source_33              t_array_source_33;
105077 l_array_source_75              t_array_source_75;
105079 l_array_source_4      t_array_source_4;
105080 l_array_source_5      t_array_source_5;
105081 l_array_source_6      t_array_source_6;
105082 l_array_source_7      t_array_source_7;
105083 l_array_source_8      t_array_source_8;
105084 l_array_source_23      t_array_source_23;
105085 l_array_source_24      t_array_source_24;
105086 l_array_source_25      t_array_source_25;
105087 l_array_source_26      t_array_source_26;
105088 l_array_source_27      t_array_source_27;
105089 l_array_source_28      t_array_source_28;
105090 l_array_source_29      t_array_source_29;
105091 l_array_source_30      t_array_source_30;
105092 l_array_source_31      t_array_source_31;
105093 l_array_source_32      t_array_source_32;
105094 l_array_source_34      t_array_source_34;
105095 l_array_source_35      t_array_source_35;
105096 l_array_source_35_meaning      t_array_lookup_meaning;
105097 l_array_source_36      t_array_source_36;
105098 
105099 --
105100 CURSOR header_cur
105101 IS
105102 SELECT /*+ leading(xet) cardinality(xet,1) */
105103 -- Event Class Code: WIP_COST_ADJ
105104     xet.entity_id
105105    ,xet.legal_entity_id
105106    ,xet.entity_code
105107    ,xet.transaction_number
105108    ,xet.event_id
105109    ,xet.event_class_code
105110    ,xet.event_type_code
105111    ,xet.event_number
105112    ,xet.event_date
105113    ,xet.transaction_date
105114    ,xet.reference_num_1
105115    ,xet.reference_num_2
105116    ,xet.reference_num_3
105117    ,xet.reference_num_4
105118    ,xet.reference_char_1
105119    ,xet.reference_char_2
105120    ,xet.reference_char_3
105121    ,xet.reference_char_4
105122    ,xet.reference_date_1
105123    ,xet.reference_date_2
105124    ,xet.reference_date_3
105125    ,xet.reference_date_4
105126    ,xet.event_created_by
105127    ,xet.budgetary_control_flag 
105128   , h2.EXPENDITURE_ITEM_ID    source_33
105129   , h2.GL_DATE    source_75
105130   FROM xla_events_gt     xet 
105131   , PA_XLA_EXP_HEADER_V  h2
105132  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
105133    and xet.event_class_code = C_EVENT_CLASS_CODE
105134    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
105135 
105136  ORDER BY event_id
105137 ;
105138 
105139 
105140 --
105141 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
105142 IS
105143 SELECT  /*+ leading(xet) cardinality(xet,1) */
105144 -- Event Class Code: WIP_COST_ADJ
105145     xet.entity_id
105146    ,xet.legal_entity_id
105147    ,xet.entity_code
105148    ,xet.transaction_number
105149    ,xet.event_id
105150    ,xet.event_class_code
105151    ,xet.event_type_code
105152    ,xet.event_number
105153    ,xet.event_date
105154    ,xet.transaction_date
105155    ,xet.reference_num_1
105156    ,xet.reference_num_2
105157    ,xet.reference_num_3
105158    ,xet.reference_num_4
105159    ,xet.reference_char_1
105160    ,xet.reference_char_2
105161    ,xet.reference_char_3
105162    ,xet.reference_char_4
105163    ,xet.reference_date_1
105164    ,xet.reference_date_2
105165    ,xet.reference_date_3
105166    ,xet.reference_date_4
105167    ,xet.event_created_by
105168    ,xet.budgetary_control_flag
105169  , l1.LINE_NUMBER  
105170   , l1.COST_CCID    source_4
105171   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
105172   , l1.ADJ_COST_CCID    source_6
105173   , l1.COST_CLEARING_CCID    source_7
105174   , l1.ADJ_COST_CLEARING_CCID    source_8
105175   , l1.REVERSING_LINE_FLAG    source_23
105176   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
105177   , l1.ENTERED_RAW_COST    source_25
105178   , l1.ENTERED_CURRENCY_CODE    source_26
105179   , l1.ACCT_RAW_COST    source_27
105180   , l1.EXCHANGE_RATE_DATE    source_28
105181   , l1.EXCHANGE_RATE    source_29
105182   , l1.EXCHANGE_RATE_TYPE    source_30
105183   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
105184   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
105185   , l1.LINE_NUMBER    source_34
105186   , l1.LINE_TYPE    source_35
105187   , fvl35.meaning   source_35_meaning
105188   , l1.LINE_NUM_REVERSED    source_36
105189   FROM xla_events_gt     xet 
105190   , PA_XLA_CDL_LINES_V  l1
105191   , fnd_lookup_values    fvl35
105192  WHERE xet.event_id between x_first_event_id and x_last_event_id
105193    and xet.event_date between p_pad_start_date and p_pad_end_date
105194    and xet.event_class_code = C_EVENT_CLASS_CODE
105195    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
105196    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
105197   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
105198   AND fvl35.view_application_id(+) = 275
105199   AND fvl35.language(+)            = USERENV('LANG')
105200   ;
105201 
105202 --
105203 BEGIN
105204 IF g_log_enabled THEN
105205    l_log_module := C_DEFAULT_MODULE||'.EventClass_169';
105206 END IF;
105207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105208    trace
105209       (p_msg      => 'BEGIN of EventClass_169'
105210       ,p_level    => C_LEVEL_PROCEDURE
105211       ,p_module   => l_log_module);
105212 END IF;
105213 
105214 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
105215    trace
105216       (p_msg      => 'p_application_id = '||p_application_id||
105217                      ' - p_base_ledger_id = '||p_base_ledger_id||
105218                      ' - p_target_ledger_id  = '||p_target_ledger_id||
105219                      ' - p_language = '||p_language||
105220                      ' - p_currency_code = '||p_currency_code||
105221                      ' - p_sla_ledger_id = '||p_sla_ledger_id
105222       ,p_level    => C_LEVEL_STATEMENT
105223       ,p_module   => l_log_module);
105224 END IF;
105225 --
105226 -- initialze arrays
105227 --
105228 g_array_event.DELETE;
105232 -- 4262811 Initialze MPA Line Number
105229 l_rec_array_event := l_null_rec_array_event;
105230 --
105231 --------------------------------------
105233 --------------------------------------
105234 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
105235 
105236 --
105237 
105238 --
105239 OPEN header_cur;
105240 --
105241 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
105242    trace
105243    (p_msg      => 'SQL - FETCH header_cur'
105244    ,p_level    => C_LEVEL_STATEMENT
105245    ,p_module   => l_log_module);
105246 END IF;
105247 --
105248 LOOP
105249 FETCH header_cur BULK COLLECT INTO
105250         l_array_entity_id
105251       , l_array_legal_entity_id
105252       , l_array_entity_code
105253       , l_array_transaction_num
105254       , l_array_event_id
105255       , l_array_class_code
105256       , l_array_event_type
105257       , l_array_event_number
105258       , l_array_event_date
105259       , l_array_transaction_date
105260       , l_array_reference_num_1
105261       , l_array_reference_num_2
105262       , l_array_reference_num_3
105263       , l_array_reference_num_4
105264       , l_array_reference_char_1
105265       , l_array_reference_char_2
105266       , l_array_reference_char_3
105267       , l_array_reference_char_4
105268       , l_array_reference_date_1
105269       , l_array_reference_date_2
105270       , l_array_reference_date_3
105271       , l_array_reference_date_4
105272       , l_array_event_created_by
105273       , l_array_budgetary_control_flag 
105274       , l_array_source_33
105275       , l_array_source_75
105276       LIMIT l_rows;
105277 --
105278 IF (C_LEVEL_EVENT >= g_log_level) THEN
105279    trace
105280    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
105281    ,p_level    => C_LEVEL_EVENT
105282    ,p_module   => l_log_module);
105283 END IF;
105284 --
105285 EXIT WHEN l_array_entity_id.COUNT = 0;
105286 
105287 -- initialize arrays
105288 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
105289 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
105290 
105291 --
105292 -- Bug 4458708
105293 --
105294 XLA_AE_LINES_PKG.g_LineNumber := 0;
105295 
105296 
105297 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
105298 g_last_hdr_idx := l_array_event_id.LAST;
105299 --
105300 -- loop for the headers. Each iteration is for each header extract row
105301 -- fetched in header cursor
105302 --
105303 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
105304 
105305 --
105306 -- set event info as cache for other routines to refer event attributes
105307 --
105308 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
105309    (p_application_id           => p_application_id
105310    ,p_primary_ledger_id        => p_primary_ledger_id
105311    ,p_base_ledger_id           => p_base_ledger_id
105312    ,p_target_ledger_id         => p_target_ledger_id
105313    ,p_entity_id                => l_array_entity_id(hdr_idx)
105314    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
105315    ,p_entity_code              => l_array_entity_code(hdr_idx)
105316    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
105317    ,p_event_id                 => l_array_event_id(hdr_idx)
105318    ,p_event_class_code         => l_array_class_code(hdr_idx)
105319    ,p_event_type_code          => l_array_event_type(hdr_idx)
105320    ,p_event_number             => l_array_event_number(hdr_idx)
105321    ,p_event_date               => l_array_event_date(hdr_idx)
105322    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
105323    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
105324    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
105325    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
105326    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
105327    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
105328    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
105329    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
105330    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
105331    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
105332    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
105333    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
105334    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
105335    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
105336    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
105337 
105338 --
105339 -- set the status of entry to C_VALID (0)
105340 --
105341 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
105342 
105343 --
105344 -- initialize a row for ae header
105345 --
105346 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
105347 
105348 l_event_id := l_array_event_id(hdr_idx);
105349 
105350 --
105351 -- storing the hdr_idx for event. May be used by line cursor.
105352 --
105353 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
105354 
105355 --
105356 -- store sources from header extract. This can be improved to
105357 -- store only those sources from header extract that may be used in lines
105358 --
105359 
105360 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
105361 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
105362 
105363 --
105364 -- initilaize the status of ae headers for diffrent balance types
105365 -- the status is initialised to C_NOT_CREATED (2)
105366 --
105367 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
105368 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
105372 -- call api to validate and store accounting attributes for header
105369 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
105370 
105371 --
105373 --
105374 
105375 ------------------------------------------------------------
105376 -- Accrual Reversal : to get date for Standard Source (NONE)
105377 ------------------------------------------------------------
105378 l_acc_rev_gl_date_source := NULL;
105379 
105380      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
105381       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
105382 
105383 
105384 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
105385 
105386 XLA_AE_HEADER_PKG.SetJeCategoryName;
105387 
105388 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
105389 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
105390 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
105391 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
105392 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
105393 
105394 
105395 -- No header level analytical criteria
105396 
105397 --
105398 --accounting attribute enhancement, bug 3612931
105399 --
105400 l_trx_reversal_source := SUBSTR(NULL, 1,30);
105401 
105402 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
105403    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
105404 
105405    xla_accounting_err_pkg.build_message
105406       (p_appli_s_name            => 'XLA'
105407       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
105408       ,p_token_1                 => 'ACCT_ATTR_NAME'
105409       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
105410       ,p_token_2                 => 'PRODUCT_NAME'
105411       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
105412       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
105413       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
105414       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
105415 
105416 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
105417    --
105418    -- following sets the accounting attributes needed to reverse
105419    -- accounting for a distributeion
105420    --
105421    xla_ae_lines_pkg.SetTrxReversalAttrs
105422       (p_event_id              => l_event_id
105423       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
105424       ,p_trx_reversal_source   => l_trx_reversal_source);
105425 
105426 END IF;
105427 
105428 
105429 ----------------------------------------------------------------
105430 -- 4262811 -  update the header statuses to invalid in need be
105431 ----------------------------------------------------------------
105432 --
105433 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
105434 
105435 
105436   -----------------------------------------------
105437   -- No accrual reversal for the event class/type
105438   -----------------------------------------------
105439 ----------------------------------------------------------------
105440 
105441 --
105442 -- this ends the header loop iteration for one bulk fetch
105443 --
105444 END LOOP;
105445 
105446 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
105447 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
105448 
105449 --
105450 -- insert dummy rows into lines gt table that were created due to
105451 -- transaction reversals
105452 --
105453 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
105454    l_result := XLA_AE_LINES_PKG.InsertLines;
105455 END IF;
105456 
105457 --
105458 -- reset the temp_line_num for each set of events fetched from header
105459 -- cursor rather than doing it for each new event in line cursor
105460 -- Bug 3939231
105461 --
105462 xla_ae_lines_pkg.g_temp_line_num := 0;
105463 
105464 
105465 
105466 --
105467 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
105468 --
105469 --
105470 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
105471 
105472       trace
105473          (p_msg      => 'SQL - FETCH line_cur'
105474          ,p_level    => C_LEVEL_STATEMENT
105475          ,p_module   => l_log_module);
105476 
105477 END IF;
105478 --
105479 --
105480 LOOP
105481   --
105482   FETCH line_cur BULK COLLECT INTO
105483         l_array_entity_id
105484       , l_array_legal_entity_id
105485       , l_array_entity_code
105486       , l_array_transaction_num
105487       , l_array_event_id
105488       , l_array_class_code
105489       , l_array_event_type
105490       , l_array_event_number
105491       , l_array_event_date
105492       , l_array_transaction_date
105493       , l_array_reference_num_1
105494       , l_array_reference_num_2
105495       , l_array_reference_num_3
105496       , l_array_reference_num_4
105497       , l_array_reference_char_1
105498       , l_array_reference_char_2
105499       , l_array_reference_char_3
105500       , l_array_reference_char_4
105501       , l_array_reference_date_1
105502       , l_array_reference_date_2
105503       , l_array_reference_date_3
105504       , l_array_reference_date_4
105505       , l_array_event_created_by
105506       , l_array_budgetary_control_flag
105507       , l_array_extract_line_num 
105508       , l_array_source_4
105509       , l_array_source_5
105510       , l_array_source_6
105511       , l_array_source_7
105512       , l_array_source_8
105513       , l_array_source_23
105517       , l_array_source_27
105514       , l_array_source_24
105515       , l_array_source_25
105516       , l_array_source_26
105518       , l_array_source_28
105519       , l_array_source_29
105520       , l_array_source_30
105521       , l_array_source_31
105522       , l_array_source_32
105523       , l_array_source_34
105524       , l_array_source_35
105525       , l_array_source_35_meaning
105526       , l_array_source_36
105527       LIMIT l_rows;
105528 
105529   --
105530   IF (C_LEVEL_EVENT >= g_log_level) THEN
105531             trace
105532                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
105533                ,p_level    => C_LEVEL_EVENT
105534                ,p_module   => l_log_module);
105535   END IF;
105536   --
105537   EXIT WHEN l_array_entity_id.count = 0;
105538 
105539   XLA_AE_LINES_PKG.g_rec_lines := null;
105540 
105541 --
105542 -- Bug 4458708
105543 --
105544 XLA_AE_LINES_PKG.g_LineNumber := 0;
105545 --
105546 --
105547 
105548 FOR Idx IN 1..l_array_event_id.count LOOP
105549    --
105550    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
105551    --
105552    l_event_id := l_array_event_id(idx);  -- 5648433
105553 
105554    --
105555    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
105556    --
105557 
105558    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
105559              (g_array_event(l_event_id).array_value_num('header_index'))
105560          ,'N'
105561          ) <> 'Y'
105562    THEN
105563       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
105564          trace
105565             (p_msg      => 'Trancaction revesal option is not Y '
105566             ,p_level    => C_LEVEL_STATEMENT
105567             ,p_module   => l_log_module);
105568       END IF;
105569 
105570 --
105571 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
105572 --
105573 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
105574 --
105575 -- set event info as cache for other routines to refer event attributes
105576 --
105577 
105578 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
105579    l_previous_event_id := l_event_id;
105580 
105581    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
105582       (p_application_id           => p_application_id
105583       ,p_primary_ledger_id        => p_primary_ledger_id
105584       ,p_base_ledger_id           => p_base_ledger_id
105585       ,p_target_ledger_id         => p_target_ledger_id
105586       ,p_entity_id                => l_array_entity_id(Idx)
105587       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
105588       ,p_entity_code              => l_array_entity_code(Idx)
105589       ,p_transaction_num          => l_array_transaction_num(Idx)
105590       ,p_event_id                 => l_array_event_id(Idx)
105591       ,p_event_class_code         => l_array_class_code(Idx)
105592       ,p_event_type_code          => l_array_event_type(Idx)
105593       ,p_event_number             => l_array_event_number(Idx)
105594       ,p_event_date               => l_array_event_date(Idx)
105595       ,p_transaction_date         => l_array_transaction_date(Idx)
105596       ,p_reference_num_1          => l_array_reference_num_1(Idx)
105597       ,p_reference_num_2          => l_array_reference_num_2(Idx)
105598       ,p_reference_num_3          => l_array_reference_num_3(Idx)
105599       ,p_reference_num_4          => l_array_reference_num_4(Idx)
105600       ,p_reference_char_1         => l_array_reference_char_1(Idx)
105601       ,p_reference_char_2         => l_array_reference_char_2(Idx)
105602       ,p_reference_char_3         => l_array_reference_char_3(Idx)
105603       ,p_reference_char_4         => l_array_reference_char_4(Idx)
105604       ,p_reference_date_1         => l_array_reference_date_1(Idx)
105605       ,p_reference_date_2         => l_array_reference_date_2(Idx)
105606       ,p_reference_date_3         => l_array_reference_date_3(Idx)
105607       ,p_reference_date_4         => l_array_reference_date_4(Idx)
105608       ,p_event_created_by         => l_array_event_created_by(Idx)
105609       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
105610        --
105611 END IF;
105612 
105613 
105614 
105615 --
105616 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
105617 
105618 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
105619 
105620 IF l_continue_with_lines THEN
105621    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
105622       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
105623 
105624       xla_accounting_err_pkg.build_message
105625          (p_appli_s_name            => 'XLA'
105626          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
105627          ,p_token_1                 => 'LINE_NUMBER'
105628          ,p_value_1                 => l_array_extract_line_num(Idx)
105629          ,p_token_2                 => 'PRODUCT_NAME'
105630          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
105631          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
105632          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
105633          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
105634 
105635    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
105636       --
105637       -- following sets the accounting attributes needed to reverse
105638       -- accounting for a distributeion
105639       --
105640 
105641       --
105642       -- 5217187
105643       --
105644       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
105645       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
105649 
105646                                        g_array_event(l_event_id).array_value_num('header_index'));
105647       --
105648       --
105650       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
105651       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
105652       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
105653       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
105654       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
105655       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
105656       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
105657       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
105658       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
105659       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
105660       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
105661       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
105662       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
105663       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
105664       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
105665       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
105666       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
105667       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
105668       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
105669       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
105670       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
105671       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
105672       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
105673       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
105674       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
105675       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
105676       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
105677       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
105678       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
105679       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
105680       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
105681       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
105682       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
105683       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
105684       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
105685       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
105686       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
105687       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
105688       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
105689       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
105690       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
105691       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
105692       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
105693       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
105694       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
105695       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
105696       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
105697       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
105698 
105699 
105700       xla_ae_lines_pkg.SetAcctReversalAttrs
105701          (p_event_id             => l_event_id
105702          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
105703          ,p_calculate_acctd_flag => l_calculate_acctd_flag
105704          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
105705    END IF;
105706 
105707    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
105708        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
105709 
105710 --
105711 AcctLineType_74 (
105712  p_application_id  => p_application_id
105713  ,p_event_id     => l_event_id
105714  ,p_calculate_acctd_flag => l_calculate_acctd_flag
105715  ,p_calculate_g_l_flag => l_calculate_g_l_flag
105716  ,p_actual_flag => l_actual_flag
105717  ,p_balance_type_code => l_balance_type_code
105718  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
105719  
105720  , p_source_4 => l_array_source_4(Idx)
105721  , p_source_5 => l_array_source_5(Idx)
105722  , p_source_6 => l_array_source_6(Idx)
105723  , p_source_7 => l_array_source_7(Idx)
105724  , p_source_23 => l_array_source_23(Idx)
105725  , p_source_24 => l_array_source_24(Idx)
105726  , p_source_25 => l_array_source_25(Idx)
105727  , p_source_26 => l_array_source_26(Idx)
105728  , p_source_27 => l_array_source_27(Idx)
105729  , p_source_28 => l_array_source_28(Idx)
105730  , p_source_29 => l_array_source_29(Idx)
105731  , p_source_30 => l_array_source_30(Idx)
105732  , p_source_31 => l_array_source_31(Idx)
105733  , p_source_32 => l_array_source_32(Idx)
105734  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
105735  , p_source_34 => l_array_source_34(Idx)
105736  , p_source_35 => l_array_source_35(Idx)
105737  , p_source_35_meaning => l_array_source_35_meaning(Idx)
105738  , p_source_36 => l_array_source_36(Idx)
105739  );
105740 If(l_balance_type_code = 'A') THEN
105741   l_actual_gain_loss_ref := l_gain_or_loss_ref;
105742 END IF;
105743 
105744 --
105745 
105746 
105747 --
105748 AcctLineType_80 (
105752  ,p_calculate_g_l_flag => l_calculate_g_l_flag
105749  p_application_id  => p_application_id
105750  ,p_event_id     => l_event_id
105751  ,p_calculate_acctd_flag => l_calculate_acctd_flag
105753  ,p_actual_flag => l_actual_flag
105754  ,p_balance_type_code => l_balance_type_code
105755  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
105756  
105757  , p_source_4 => l_array_source_4(Idx)
105758  , p_source_5 => l_array_source_5(Idx)
105759  , p_source_6 => l_array_source_6(Idx)
105760  , p_source_7 => l_array_source_7(Idx)
105761  , p_source_23 => l_array_source_23(Idx)
105762  , p_source_24 => l_array_source_24(Idx)
105763  , p_source_25 => l_array_source_25(Idx)
105764  , p_source_26 => l_array_source_26(Idx)
105765  , p_source_27 => l_array_source_27(Idx)
105766  , p_source_28 => l_array_source_28(Idx)
105767  , p_source_29 => l_array_source_29(Idx)
105768  , p_source_30 => l_array_source_30(Idx)
105769  , p_source_31 => l_array_source_31(Idx)
105770  , p_source_32 => l_array_source_32(Idx)
105771  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
105772  , p_source_34 => l_array_source_34(Idx)
105773  , p_source_35 => l_array_source_35(Idx)
105774  , p_source_35_meaning => l_array_source_35_meaning(Idx)
105775  , p_source_36 => l_array_source_36(Idx)
105776  );
105777 If(l_balance_type_code = 'A') THEN
105778   l_actual_gain_loss_ref := l_gain_or_loss_ref;
105779 END IF;
105780 
105781 --
105782 
105783 
105784 --
105785 AcctLineType_95 (
105786  p_application_id  => p_application_id
105787  ,p_event_id     => l_event_id
105788  ,p_calculate_acctd_flag => l_calculate_acctd_flag
105789  ,p_calculate_g_l_flag => l_calculate_g_l_flag
105790  ,p_actual_flag => l_actual_flag
105791  ,p_balance_type_code => l_balance_type_code
105792  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
105793  
105794  , p_source_4 => l_array_source_4(Idx)
105795  , p_source_5 => l_array_source_5(Idx)
105796  , p_source_7 => l_array_source_7(Idx)
105797  , p_source_8 => l_array_source_8(Idx)
105798  , p_source_23 => l_array_source_23(Idx)
105799  , p_source_24 => l_array_source_24(Idx)
105800  , p_source_25 => l_array_source_25(Idx)
105801  , p_source_26 => l_array_source_26(Idx)
105802  , p_source_27 => l_array_source_27(Idx)
105803  , p_source_28 => l_array_source_28(Idx)
105804  , p_source_29 => l_array_source_29(Idx)
105805  , p_source_30 => l_array_source_30(Idx)
105806  , p_source_31 => l_array_source_31(Idx)
105807  , p_source_32 => l_array_source_32(Idx)
105808  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
105809  , p_source_34 => l_array_source_34(Idx)
105810  , p_source_35 => l_array_source_35(Idx)
105811  , p_source_35_meaning => l_array_source_35_meaning(Idx)
105812  , p_source_36 => l_array_source_36(Idx)
105813  );
105814 If(l_balance_type_code = 'A') THEN
105815   l_actual_gain_loss_ref := l_gain_or_loss_ref;
105816 END IF;
105817 
105818 --
105819 
105820 
105821 --
105822 AcctLineType_100 (
105823  p_application_id  => p_application_id
105824  ,p_event_id     => l_event_id
105825  ,p_calculate_acctd_flag => l_calculate_acctd_flag
105826  ,p_calculate_g_l_flag => l_calculate_g_l_flag
105827  ,p_actual_flag => l_actual_flag
105828  ,p_balance_type_code => l_balance_type_code
105829  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
105830  
105831  , p_source_4 => l_array_source_4(Idx)
105832  , p_source_5 => l_array_source_5(Idx)
105833  , p_source_7 => l_array_source_7(Idx)
105834  , p_source_8 => l_array_source_8(Idx)
105835  , p_source_23 => l_array_source_23(Idx)
105836  , p_source_24 => l_array_source_24(Idx)
105837  , p_source_25 => l_array_source_25(Idx)
105838  , p_source_26 => l_array_source_26(Idx)
105839  , p_source_27 => l_array_source_27(Idx)
105840  , p_source_28 => l_array_source_28(Idx)
105841  , p_source_29 => l_array_source_29(Idx)
105842  , p_source_30 => l_array_source_30(Idx)
105843  , p_source_31 => l_array_source_31(Idx)
105844  , p_source_32 => l_array_source_32(Idx)
105845  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
105846  , p_source_34 => l_array_source_34(Idx)
105847  , p_source_35 => l_array_source_35(Idx)
105848  , p_source_35_meaning => l_array_source_35_meaning(Idx)
105849  , p_source_36 => l_array_source_36(Idx)
105850  );
105851 If(l_balance_type_code = 'A') THEN
105852   l_actual_gain_loss_ref := l_gain_or_loss_ref;
105853 END IF;
105854 
105855 --
105856 
105857       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
105858       -- or secondary ledger that has different currency with primary
105859       -- or alc that is calculated by sla
105860       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
105861             (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'))
105862 
105863 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
105864 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
105865           AND (l_actual_flag = 'A')) THEN
105866         XLA_AE_LINES_PKG.CreateGainOrLossLines(
105867           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
105868          ,p_application_id   => p_application_id
105869          ,p_amb_context_code => 'DEFAULT'
105870          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
105871          ,p_event_class_code => C_EVENT_CLASS_CODE
105872          ,p_event_type_code  => C_EVENT_TYPE_CODE
105873          
105874          ,p_gain_ccid        => -1
105875          ,p_loss_ccid        => -1
105876 
105877          ,p_actual_flag      => l_actual_flag
105878          ,p_enc_flag         => null
105879          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
105880          ,p_enc_g_l_ref      => null
105881          );
105882       END IF;
105883    END IF;
105884 END IF;
105885 
105889       --
105886    ELSE
105887       --
105888       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
105890       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
105891          trace
105892             (p_msg      => 'Trancaction revesal option is Y'
105893             ,p_level    => C_LEVEL_STATEMENT
105894             ,p_module   => l_log_module);
105895       END IF;
105896    END IF;
105897 
105898 END LOOP;
105899 l_result := XLA_AE_LINES_PKG.InsertLines ;
105900 end loop;
105901 close line_cur;
105902 
105903 
105904 --
105905 -- insert headers into xla_ae_headers_gt table
105906 --
105907 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
105908 
105909 -- insert into errors table here.
105910 
105911 END LOOP;
105912 
105913 --
105914 -- 4865292
105915 --
105916 -- Compare g_hdr_extract_count with event count in
105917 -- CreateHeadersAndLines.
105918 --
105919 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
105920 
105921 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
105922    trace (p_msg     => '# rows extracted from header extract objects '
105923                     || ' (running total): '
105924                     || g_hdr_extract_count
105925          ,p_level   => C_LEVEL_STATEMENT
105926          ,p_module  => l_log_module);
105927 END IF;
105928 
105929 CLOSE header_cur;
105930 --
105931 
105932 --
105933 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105934    trace
105935       (p_msg      => 'END of EventClass_169'
105936       ,p_level    => C_LEVEL_PROCEDURE
105937       ,p_module   => l_log_module);
105938 END IF;
105939 --
105940 RETURN l_result;
105941 EXCEPTION
105942 WHEN xla_exceptions_pkg.application_exception THEN
105943    
105944 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
105945 
105946    
105947 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
105948 
105949    RAISE;
105950 WHEN OTHERS THEN
105951    xla_exceptions_pkg.raise_message
105952       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_169');
105953 END EventClass_169;
105954 --
105955 
105956 ---------------------------------------
105957 --
105958 -- PRIVATE PROCEDURE
105959 --         insert_sources_170
105960 --
105961 ----------------------------------------
105962 --
105963 PROCEDURE insert_sources_170(
105964                                 p_target_ledger_id       IN NUMBER
105965                               , p_language               IN VARCHAR2
105966                               , p_sla_ledger_id          IN NUMBER
105967                               , p_pad_start_date         IN DATE
105968                               , p_pad_end_date           IN DATE
105969                          )
105970 IS
105971 
105972 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ALL';
105973 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'WIP_COST';
105974 p_apps_owner                   VARCHAR2(30);
105975 l_log_module                   VARCHAR2(240);
105976 BEGIN
105977 IF g_log_enabled THEN
105978       l_log_module := C_DEFAULT_MODULE||'.insert_sources_170';
105979 END IF;
105980 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
105981 
105982       trace
105983          (p_msg      => 'BEGIN of insert_sources_170'
105984          ,p_level    => C_LEVEL_PROCEDURE
105985          ,p_module   => l_log_module);
105986 
105987 END IF;
105988 
105989 -- select APPS owner
105990 SELECT oracle_username
105991   INTO p_apps_owner
105992   FROM fnd_oracle_userid
105993  WHERE read_only_flag = 'U'
105994 ;
105995 
105996 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
105997       trace
105998          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
105999                         ' - p_language = '||p_language||
106000                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
106001                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
106002                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
106003                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
106004          ,p_level    => C_LEVEL_STATEMENT
106005          ,p_module   => l_log_module);
106006 END IF;
106007 
106008 
106009 --
106010 INSERT INTO xla_diag_sources --hdr2
106011 (
106012         event_id
106013       , ledger_id
106014       , sla_ledger_id
106015       , description_language
106016       , object_name
106017       , object_type_code
106018       , line_number
106019       , source_application_id
106020       , source_type_code
106021       , source_code
106022       , source_value
106023       , source_meaning
106024       , created_by
106025       , creation_date
106026       , last_update_date
106027       , last_updated_by
106028       , last_update_login
106029       , program_update_date
106030       , program_application_id
106031       , program_id
106032       , request_id
106033 )
106034 SELECT
106035         event_id
106036       , p_target_ledger_id
106037       , p_sla_ledger_id
106038       , p_language
106039       , object_name
106040       , object_type_code
106041       , line_number
106042       , source_application_id
106043       , source_type_code
106044       , source_code
106045       , SUBSTR(source_value ,1,1996)
106046       , SUBSTR(source_meaning ,1,200)
106047       , xla_environment_pkg.g_Usr_Id
106048       , TRUNC(SYSDATE)
106049       , TRUNC(SYSDATE)
106050       , xla_environment_pkg.g_Usr_Id
106051       , xla_environment_pkg.g_Login_Id
106052       , TRUNC(SYSDATE)
106053       , xla_environment_pkg.g_Prog_Appl_Id
106054       , xla_environment_pkg.g_Prog_Id
106055       , xla_environment_pkg.g_Req_Id
106056   FROM (
106057        SELECT xet.event_id                  event_id
106061                 WHEN 2 THEN 'PA_XLA_EXP_HEADER_V' 
106058             , 0                          line_number
106059             , CASE r
106060                WHEN 1 THEN 'PA_XLA_EXP_HEADER_V' 
106062                 
106063                ELSE null
106064               END                           object_name
106065             , CASE r
106066                 WHEN 1 THEN 'HEADER' 
106067                 WHEN 2 THEN 'HEADER' 
106068                 
106069                 ELSE null
106070               END                           object_type_code
106071             , CASE r
106072                 WHEN 1 THEN '275' 
106073                 WHEN 2 THEN '275' 
106074                 
106075                 ELSE null
106076               END                           source_application_id
106077             , 'S'             source_type_code
106078             , CASE r
106079                 WHEN 1 THEN 'EXPENDITURE_ITEM_ID' 
106080                 WHEN 2 THEN 'GL_DATE' 
106081                 
106082                 ELSE null
106083               END                           source_code
106084             , CASE r
106085                 WHEN 1 THEN TO_CHAR(h2.EXPENDITURE_ITEM_ID)
106086                 WHEN 2 THEN TO_CHAR(h2.GL_DATE)
106087                 
106088                 ELSE null
106089               END                           source_value
106090             , null              source_meaning
106091          FROM xla_events_gt     xet  
106092       , PA_XLA_EXP_HEADER_V  h2
106093              ,(select rownum r from all_objects where rownum <= 2 and owner = p_apps_owner)
106094          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
106095            AND xet.event_class_code = C_EVENT_CLASS_CODE
106096               AND h2.event_id = xet.event_id
106097 
106098 )
106099 ;
106100 --
106101 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
106102 
106103       trace
106104          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
106105          ,p_level    => C_LEVEL_STATEMENT
106106          ,p_module   => l_log_module);
106107 
106108 END IF;
106109 --
106110 
106111 
106112 
106113 --
106114 INSERT INTO xla_diag_sources  --line2
106115 (
106116         event_id
106117       , ledger_id
106118       , sla_ledger_id
106119       , description_language
106120       , object_name
106121       , object_type_code
106122       , line_number
106123       , source_application_id
106124       , source_type_code
106125       , source_code
106126       , source_value
106127       , source_meaning
106128       , created_by
106129       , creation_date
106130       , last_update_date
106131       , last_updated_by
106132       , last_update_login
106133       , program_update_date
106134       , program_application_id
106135       , program_id
106136       , request_id
106137 )
106138 SELECT  event_id
106139       , p_target_ledger_id
106140       , p_sla_ledger_id
106141       , p_language
106142       , object_name
106143       , object_type_code
106144       , line_number
106145       , source_application_id
106146       , source_type_code
106147       , source_code
106148       , SUBSTR(source_value,1,1996)
106149       , SUBSTR(source_meaning ,1,200)
106150       , xla_environment_pkg.g_Usr_Id
106151       , TRUNC(SYSDATE)
106152       , TRUNC(SYSDATE)
106153       , xla_environment_pkg.g_Usr_Id
106154       , xla_environment_pkg.g_Login_Id
106155       , TRUNC(SYSDATE)
106156       , xla_environment_pkg.g_Prog_Appl_Id
106157       , xla_environment_pkg.g_Prog_Id
106158       , xla_environment_pkg.g_Req_Id
106159   FROM (
106160        SELECT xet.event_id                  event_id
106161             , l1.line_number                 line_number
106162             , CASE r
106163                WHEN 1 THEN 'PA_XLA_CDL_LINES_V' 
106164                 WHEN 2 THEN 'PA_XLA_CDL_LINES_V' 
106165                 WHEN 3 THEN 'PA_XLA_CDL_LINES_V' 
106166                 WHEN 4 THEN 'PA_XLA_CDL_LINES_V' 
106167                 WHEN 5 THEN 'PA_XLA_CDL_LINES_V' 
106168                 WHEN 6 THEN 'PA_XLA_CDL_LINES_V' 
106169                 WHEN 7 THEN 'PA_XLA_CDL_LINES_V' 
106170                 WHEN 8 THEN 'PA_XLA_CDL_LINES_V' 
106171                 WHEN 9 THEN 'PA_XLA_CDL_LINES_V' 
106172                 WHEN 10 THEN 'PA_XLA_CDL_LINES_V' 
106173                 WHEN 11 THEN 'PA_XLA_CDL_LINES_V' 
106174                 WHEN 12 THEN 'PA_XLA_CDL_LINES_V' 
106175                 WHEN 13 THEN 'PA_XLA_CDL_LINES_V' 
106176                 WHEN 14 THEN 'PA_XLA_CDL_LINES_V' 
106177                 WHEN 15 THEN 'PA_XLA_CDL_LINES_V' 
106178                 WHEN 16 THEN 'PA_XLA_CDL_LINES_V' 
106179                 WHEN 17 THEN 'PA_XLA_CDL_LINES_V' 
106180                 WHEN 18 THEN 'PA_XLA_CDL_LINES_V' 
106181                 
106182                ELSE null
106183               END                           object_name
106184             , CASE r
106185                 WHEN 1 THEN 'LINE' 
106186                 WHEN 2 THEN 'LINE' 
106187                 WHEN 3 THEN 'LINE' 
106188                 WHEN 4 THEN 'LINE' 
106189                 WHEN 5 THEN 'LINE' 
106190                 WHEN 6 THEN 'LINE' 
106191                 WHEN 7 THEN 'LINE' 
106192                 WHEN 8 THEN 'LINE' 
106193                 WHEN 9 THEN 'LINE' 
106194                 WHEN 10 THEN 'LINE' 
106195                 WHEN 11 THEN 'LINE' 
106196                 WHEN 12 THEN 'LINE' 
106197                 WHEN 13 THEN 'LINE' 
106198                 WHEN 14 THEN 'LINE' 
106199                 WHEN 15 THEN 'LINE' 
106200                 WHEN 16 THEN 'LINE' 
106201                 WHEN 17 THEN 'LINE' 
106202                 WHEN 18 THEN 'LINE' 
106203                 
106204                 ELSE null
106205               END                           object_type_code
106206             , CASE r
106210                 WHEN 4 THEN '275' 
106207                 WHEN 1 THEN '275' 
106208                 WHEN 2 THEN '275' 
106209                 WHEN 3 THEN '275' 
106211                 WHEN 5 THEN '275' 
106212                 WHEN 6 THEN '275' 
106213                 WHEN 7 THEN '275' 
106214                 WHEN 8 THEN '275' 
106215                 WHEN 9 THEN '275' 
106216                 WHEN 10 THEN '275' 
106217                 WHEN 11 THEN '275' 
106218                 WHEN 12 THEN '275' 
106219                 WHEN 13 THEN '275' 
106220                 WHEN 14 THEN '275' 
106221                 WHEN 15 THEN '275' 
106222                 WHEN 16 THEN '275' 
106223                 WHEN 17 THEN '275' 
106224                 WHEN 18 THEN '275' 
106225                 
106226                 ELSE null
106227               END                           source_application_id
106228             , 'S'             source_type_code
106229             , CASE r
106230                 WHEN 1 THEN 'COST_CCID' 
106231                 WHEN 2 THEN 'ALLOW_OVERRIDE_CCID_FLAG' 
106232                 WHEN 3 THEN 'ADJ_COST_CCID' 
106233                 WHEN 4 THEN 'COST_CLEARING_CCID' 
106234                 WHEN 5 THEN 'ADJ_COST_CLEARING_CCID' 
106235                 WHEN 6 THEN 'REVERSING_LINE_FLAG' 
106236                 WHEN 7 THEN 'ACTUAL_UPG_CR_ACCT_CLASS' 
106237                 WHEN 8 THEN 'ENTERED_RAW_COST' 
106238                 WHEN 9 THEN 'ENTERED_CURRENCY_CODE' 
106239                 WHEN 10 THEN 'ACCT_RAW_COST' 
106240                 WHEN 11 THEN 'EXCHANGE_RATE_DATE' 
106241                 WHEN 12 THEN 'EXCHANGE_RATE' 
106242                 WHEN 13 THEN 'EXCHANGE_RATE_TYPE' 
106243                 WHEN 14 THEN 'ACTUAL_UPG_DR_ACCT_CLASS' 
106244                 WHEN 15 THEN 'USE_ACT_UPG_ATTRIB_FLAG' 
106245                 WHEN 16 THEN 'LINE_NUMBER' 
106246                 WHEN 17 THEN 'LINE_TYPE' 
106247                 WHEN 18 THEN 'LINE_NUM_REVERSED' 
106248                 
106249                 ELSE null
106250               END                           source_code
106251             , CASE r
106252                 WHEN 1 THEN TO_CHAR(l1.COST_CCID)
106253                 WHEN 2 THEN TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
106254                 WHEN 3 THEN TO_CHAR(l1.ADJ_COST_CCID)
106255                 WHEN 4 THEN TO_CHAR(l1.COST_CLEARING_CCID)
106256                 WHEN 5 THEN TO_CHAR(l1.ADJ_COST_CLEARING_CCID)
106257                 WHEN 6 THEN TO_CHAR(l1.REVERSING_LINE_FLAG)
106258                 WHEN 7 THEN TO_CHAR(l1.ACTUAL_UPG_CR_ACCT_CLASS)
106259                 WHEN 8 THEN TO_CHAR(l1.ENTERED_RAW_COST)
106260                 WHEN 9 THEN TO_CHAR(l1.ENTERED_CURRENCY_CODE)
106261                 WHEN 10 THEN TO_CHAR(l1.ACCT_RAW_COST)
106262                 WHEN 11 THEN TO_CHAR(l1.EXCHANGE_RATE_DATE)
106263                 WHEN 12 THEN TO_CHAR(l1.EXCHANGE_RATE)
106264                 WHEN 13 THEN TO_CHAR(l1.EXCHANGE_RATE_TYPE)
106265                 WHEN 14 THEN TO_CHAR(l1.ACTUAL_UPG_DR_ACCT_CLASS)
106266                 WHEN 15 THEN TO_CHAR(l1.USE_ACT_UPG_ATTRIB_FLAG)
106267                 WHEN 16 THEN TO_CHAR(l1.LINE_NUMBER)
106268                 WHEN 17 THEN TO_CHAR(l1.LINE_TYPE)
106269                 WHEN 18 THEN TO_CHAR(l1.LINE_NUM_REVERSED)
106270                 
106271                 ELSE null
106272               END                           source_value
106273             , CASE r
106274                 WHEN 2 THEN XLA_00275_AAD_S_000015_PKG.GetMeaning(
106275                           103371
106276                          ,TO_CHAR(l1.ALLOW_OVERRIDE_CCID_FLAG)
106277                          ,'ALLOW_OVERRIDE_CCID_FLAG'
106278                          ,'S'
106279                          ,275)
106280                 WHEN 17 THEN fvl35.meaning
106281                 
106282                 ELSE null
106283               END               source_meaning
106284          FROM  xla_events_gt     xet  
106285         , PA_XLA_CDL_LINES_V  l1
106286   , fnd_lookup_values    fvl35
106287             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
106288         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
106289           AND xet.event_class_code = C_EVENT_CLASS_CODE
106290             AND l1.event_id          = xet.event_id
106291    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
106292   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
106293   AND fvl35.view_application_id(+) = 275
106294   AND fvl35.language(+)            = USERENV('LANG')
106295   
106296 )
106297 ;
106298 --
106299 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
106300 
106301       trace
106302          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
106303          ,p_level    => C_LEVEL_STATEMENT
106304          ,p_module   => l_log_module);
106305 
106306 END IF;
106307 
106308 
106309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106310       trace
106311          (p_msg      => 'END of insert_sources_170'
106312          ,p_level    => C_LEVEL_PROCEDURE
106313          ,p_module   => l_log_module);
106314 END IF;
106315 EXCEPTION
106316   WHEN xla_exceptions_pkg.application_exception THEN
106317       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
106318             trace
106319                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
106320                ,p_level    => C_LEVEL_EXCEPTION
106321                ,p_module   => l_log_module);
106322       END IF;
106323       RAISE;
106324   WHEN OTHERS THEN
106325       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
106326             trace
106327                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
106328                ,p_level    => C_LEVEL_EXCEPTION
106329                ,p_module   => l_log_module);
106330        END IF;
106331        xla_exceptions_pkg.raise_message
106332            (p_location => 'XLA_00275_AAD_S_000015_PKG.insert_sources_170');
106333 END insert_sources_170;
106334 --
106335 
106339 --         EventClass_170
106336 ---------------------------------------
106337 --
106338 -- PRIVATE FUNCTION
106340 --
106341 ----------------------------------------
106342 --
106343 FUNCTION EventClass_170
106344        (p_application_id         IN NUMBER
106345        ,p_base_ledger_id         IN NUMBER
106346        ,p_target_ledger_id       IN NUMBER
106347        ,p_language               IN VARCHAR2
106348        ,p_currency_code          IN VARCHAR2
106349        ,p_sla_ledger_id          IN NUMBER
106350        ,p_pad_start_date         IN DATE
106351        ,p_pad_end_date           IN DATE
106352        ,p_primary_ledger_id      IN NUMBER)
106353 RETURN BOOLEAN IS
106354 --
106355 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'WIP_COST_ALL';
106356 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'WIP_COST';
106357 
106358 l_calculate_acctd_flag   VARCHAR2(1) :='N';
106359 l_calculate_g_l_flag     VARCHAR2(1) :='N';
106360 --
106361 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106362 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106363 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
106364 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
106365 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106366 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
106367 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
106368 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106369 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
106370 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
106371 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106372 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106373 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106374 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
106375 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
106376 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
106377 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
106378 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
106379 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
106380 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
106381 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
106382 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
106383 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
106384 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
106385 
106386 l_event_id                             NUMBER;
106387 l_previous_event_id                    NUMBER;
106388 l_first_event_id                       NUMBER;
106389 l_last_event_id                        NUMBER;
106390 
106391 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
106392 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
106393 --
106394 --
106395 l_result                    BOOLEAN := TRUE;
106396 l_rows                      NUMBER  := 1000;
106397 l_event_type_name           VARCHAR2(80) := 'All';
106398 l_event_class_name          VARCHAR2(80) := 'Work in Process Cost';
106399 l_description               VARCHAR2(4000);
106400 l_transaction_reversal      NUMBER;
106401 l_ae_header_id              NUMBER;
106402 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
106403 l_log_module                VARCHAR2(240);
106404 --
106405 l_acct_reversal_source      VARCHAR2(30);
106406 l_trx_reversal_source       VARCHAR2(30);
106407 
106408 l_continue_with_lines       BOOLEAN := TRUE;
106409 --
106410 l_acc_rev_gl_date_source    DATE;                      -- 4262811
106411 --
106412 type t_array_event_id is table of number index by binary_integer;
106413 
106414 l_rec_array_event                    t_rec_array_event;
106415 l_null_rec_array_event               t_rec_array_event;
106416 l_array_ae_header_id                 xla_number_array_type;
106417 l_actual_flag                        VARCHAR2(1) := NULL;
106418 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
106419 l_balance_type_code                  VARCHAR2(1) :=NULL;
106420 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
106421 
106422 --
106423 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
106424 --
106425 
106426 TYPE t_array_source_33 IS TABLE OF PA_XLA_EXP_HEADER_V.EXPENDITURE_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
106427 TYPE t_array_source_75 IS TABLE OF PA_XLA_EXP_HEADER_V.GL_DATE%TYPE INDEX BY BINARY_INTEGER;
106428 
106429 TYPE t_array_source_4 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CCID%TYPE INDEX BY BINARY_INTEGER;
106430 TYPE t_array_source_5 IS TABLE OF PA_XLA_CDL_LINES_V.ALLOW_OVERRIDE_CCID_FLAG%TYPE INDEX BY BINARY_INTEGER;
106431 TYPE t_array_source_6 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CCID%TYPE INDEX BY BINARY_INTEGER;
106432 TYPE t_array_source_7 IS TABLE OF PA_XLA_CDL_LINES_V.COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
106433 TYPE t_array_source_8 IS TABLE OF PA_XLA_CDL_LINES_V.ADJ_COST_CLEARING_CCID%TYPE INDEX BY BINARY_INTEGER;
106434 TYPE t_array_source_23 IS TABLE OF PA_XLA_CDL_LINES_V.REVERSING_LINE_FLAG%TYPE INDEX BY BINARY_INTEGER;
106435 TYPE t_array_source_24 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_CR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
106436 TYPE t_array_source_25 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
106437 TYPE t_array_source_26 IS TABLE OF PA_XLA_CDL_LINES_V.ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
106438 TYPE t_array_source_27 IS TABLE OF PA_XLA_CDL_LINES_V.ACCT_RAW_COST%TYPE INDEX BY BINARY_INTEGER;
106439 TYPE t_array_source_28 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_DATE%TYPE INDEX BY BINARY_INTEGER;
106443 TYPE t_array_source_32 IS TABLE OF PA_XLA_CDL_LINES_V.USE_ACT_UPG_ATTRIB_FLAG%TYPE INDEX BY BINARY_INTEGER;
106440 TYPE t_array_source_29 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE%TYPE INDEX BY BINARY_INTEGER;
106441 TYPE t_array_source_30 IS TABLE OF PA_XLA_CDL_LINES_V.EXCHANGE_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
106442 TYPE t_array_source_31 IS TABLE OF PA_XLA_CDL_LINES_V.ACTUAL_UPG_DR_ACCT_CLASS%TYPE INDEX BY BINARY_INTEGER;
106444 TYPE t_array_source_34 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
106445 TYPE t_array_source_35 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_TYPE%TYPE INDEX BY BINARY_INTEGER;
106446 TYPE t_array_source_36 IS TABLE OF PA_XLA_CDL_LINES_V.LINE_NUM_REVERSED%TYPE INDEX BY BINARY_INTEGER;
106447 
106448 l_array_source_33              t_array_source_33;
106449 l_array_source_75              t_array_source_75;
106450 
106451 l_array_source_4      t_array_source_4;
106452 l_array_source_5      t_array_source_5;
106453 l_array_source_6      t_array_source_6;
106454 l_array_source_7      t_array_source_7;
106455 l_array_source_8      t_array_source_8;
106456 l_array_source_23      t_array_source_23;
106457 l_array_source_24      t_array_source_24;
106458 l_array_source_25      t_array_source_25;
106459 l_array_source_26      t_array_source_26;
106460 l_array_source_27      t_array_source_27;
106461 l_array_source_28      t_array_source_28;
106462 l_array_source_29      t_array_source_29;
106463 l_array_source_30      t_array_source_30;
106464 l_array_source_31      t_array_source_31;
106465 l_array_source_32      t_array_source_32;
106466 l_array_source_34      t_array_source_34;
106467 l_array_source_35      t_array_source_35;
106468 l_array_source_35_meaning      t_array_lookup_meaning;
106469 l_array_source_36      t_array_source_36;
106470 
106471 --
106472 CURSOR header_cur
106473 IS
106474 SELECT /*+ leading(xet) cardinality(xet,1) */
106475 -- Event Class Code: WIP_COST
106476     xet.entity_id
106477    ,xet.legal_entity_id
106478    ,xet.entity_code
106479    ,xet.transaction_number
106480    ,xet.event_id
106481    ,xet.event_class_code
106482    ,xet.event_type_code
106483    ,xet.event_number
106484    ,xet.event_date
106485    ,xet.transaction_date
106486    ,xet.reference_num_1
106487    ,xet.reference_num_2
106488    ,xet.reference_num_3
106489    ,xet.reference_num_4
106490    ,xet.reference_char_1
106491    ,xet.reference_char_2
106492    ,xet.reference_char_3
106493    ,xet.reference_char_4
106494    ,xet.reference_date_1
106495    ,xet.reference_date_2
106496    ,xet.reference_date_3
106497    ,xet.reference_date_4
106498    ,xet.event_created_by
106499    ,xet.budgetary_control_flag 
106500   , h2.EXPENDITURE_ITEM_ID    source_33
106501   , h2.GL_DATE    source_75
106502   FROM xla_events_gt     xet 
106503   , PA_XLA_EXP_HEADER_V  h2
106504  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
106505    and xet.event_class_code = C_EVENT_CLASS_CODE
106506    and xet.event_status_code <> 'N'  AND h2.event_id = xet.event_id
106507 
106508  ORDER BY event_id
106509 ;
106510 
106511 
106512 --
106513 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
106514 IS
106515 SELECT  /*+ leading(xet) cardinality(xet,1) */
106516 -- Event Class Code: WIP_COST
106517     xet.entity_id
106518    ,xet.legal_entity_id
106519    ,xet.entity_code
106520    ,xet.transaction_number
106521    ,xet.event_id
106522    ,xet.event_class_code
106523    ,xet.event_type_code
106524    ,xet.event_number
106525    ,xet.event_date
106526    ,xet.transaction_date
106527    ,xet.reference_num_1
106528    ,xet.reference_num_2
106529    ,xet.reference_num_3
106530    ,xet.reference_num_4
106531    ,xet.reference_char_1
106532    ,xet.reference_char_2
106533    ,xet.reference_char_3
106534    ,xet.reference_char_4
106535    ,xet.reference_date_1
106536    ,xet.reference_date_2
106537    ,xet.reference_date_3
106538    ,xet.reference_date_4
106539    ,xet.event_created_by
106540    ,xet.budgetary_control_flag
106541  , l1.LINE_NUMBER  
106542   , l1.COST_CCID    source_4
106543   , l1.ALLOW_OVERRIDE_CCID_FLAG    source_5
106544   , l1.ADJ_COST_CCID    source_6
106545   , l1.COST_CLEARING_CCID    source_7
106546   , l1.ADJ_COST_CLEARING_CCID    source_8
106547   , l1.REVERSING_LINE_FLAG    source_23
106548   , l1.ACTUAL_UPG_CR_ACCT_CLASS    source_24
106549   , l1.ENTERED_RAW_COST    source_25
106550   , l1.ENTERED_CURRENCY_CODE    source_26
106551   , l1.ACCT_RAW_COST    source_27
106552   , l1.EXCHANGE_RATE_DATE    source_28
106553   , l1.EXCHANGE_RATE    source_29
106554   , l1.EXCHANGE_RATE_TYPE    source_30
106555   , l1.ACTUAL_UPG_DR_ACCT_CLASS    source_31
106556   , l1.USE_ACT_UPG_ATTRIB_FLAG    source_32
106557   , l1.LINE_NUMBER    source_34
106558   , l1.LINE_TYPE    source_35
106559   , fvl35.meaning   source_35_meaning
106560   , l1.LINE_NUM_REVERSED    source_36
106561   FROM xla_events_gt     xet 
106562   , PA_XLA_CDL_LINES_V  l1
106563   , fnd_lookup_values    fvl35
106564  WHERE xet.event_id between x_first_event_id and x_last_event_id
106565    and xet.event_date between p_pad_start_date and p_pad_end_date
106566    and xet.event_class_code = C_EVENT_CLASS_CODE
106567    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
106568    AND fvl35.lookup_type(+)         = 'COST DISTRIBUTION LINE TYPE'
106569   AND fvl35.lookup_code(+)         = l1.LINE_TYPE
106570   AND fvl35.view_application_id(+) = 275
106571   AND fvl35.language(+)            = USERENV('LANG')
106572   ;
106573 
106574 --
106575 BEGIN
106576 IF g_log_enabled THEN
106577    l_log_module := C_DEFAULT_MODULE||'.EventClass_170';
106578 END IF;
106579 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
106580    trace
106581       (p_msg      => 'BEGIN of EventClass_170'
106582       ,p_level    => C_LEVEL_PROCEDURE
106583       ,p_module   => l_log_module);
106584 END IF;
106585 
106589                      ' - p_base_ledger_id = '||p_base_ledger_id||
106586 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
106587    trace
106588       (p_msg      => 'p_application_id = '||p_application_id||
106590                      ' - p_target_ledger_id  = '||p_target_ledger_id||
106591                      ' - p_language = '||p_language||
106592                      ' - p_currency_code = '||p_currency_code||
106593                      ' - p_sla_ledger_id = '||p_sla_ledger_id
106594       ,p_level    => C_LEVEL_STATEMENT
106595       ,p_module   => l_log_module);
106596 END IF;
106597 --
106598 -- initialze arrays
106599 --
106600 g_array_event.DELETE;
106601 l_rec_array_event := l_null_rec_array_event;
106602 --
106603 --------------------------------------
106604 -- 4262811 Initialze MPA Line Number
106605 --------------------------------------
106606 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
106607 
106608 --
106609 
106610 --
106611 OPEN header_cur;
106612 --
106613 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
106614    trace
106615    (p_msg      => 'SQL - FETCH header_cur'
106616    ,p_level    => C_LEVEL_STATEMENT
106617    ,p_module   => l_log_module);
106618 END IF;
106619 --
106620 LOOP
106621 FETCH header_cur BULK COLLECT INTO
106622         l_array_entity_id
106623       , l_array_legal_entity_id
106624       , l_array_entity_code
106625       , l_array_transaction_num
106626       , l_array_event_id
106627       , l_array_class_code
106628       , l_array_event_type
106629       , l_array_event_number
106630       , l_array_event_date
106631       , l_array_transaction_date
106632       , l_array_reference_num_1
106633       , l_array_reference_num_2
106634       , l_array_reference_num_3
106635       , l_array_reference_num_4
106636       , l_array_reference_char_1
106637       , l_array_reference_char_2
106638       , l_array_reference_char_3
106639       , l_array_reference_char_4
106640       , l_array_reference_date_1
106641       , l_array_reference_date_2
106642       , l_array_reference_date_3
106643       , l_array_reference_date_4
106644       , l_array_event_created_by
106645       , l_array_budgetary_control_flag 
106646       , l_array_source_33
106647       , l_array_source_75
106648       LIMIT l_rows;
106649 --
106650 IF (C_LEVEL_EVENT >= g_log_level) THEN
106651    trace
106652    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
106653    ,p_level    => C_LEVEL_EVENT
106654    ,p_module   => l_log_module);
106655 END IF;
106656 --
106657 EXIT WHEN l_array_entity_id.COUNT = 0;
106658 
106659 -- initialize arrays
106660 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
106661 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
106662 
106663 --
106664 -- Bug 4458708
106665 --
106666 XLA_AE_LINES_PKG.g_LineNumber := 0;
106667 
106668 
106669 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
106670 g_last_hdr_idx := l_array_event_id.LAST;
106671 --
106672 -- loop for the headers. Each iteration is for each header extract row
106673 -- fetched in header cursor
106674 --
106675 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
106676 
106677 --
106678 -- set event info as cache for other routines to refer event attributes
106679 --
106680 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
106681    (p_application_id           => p_application_id
106682    ,p_primary_ledger_id        => p_primary_ledger_id
106683    ,p_base_ledger_id           => p_base_ledger_id
106684    ,p_target_ledger_id         => p_target_ledger_id
106685    ,p_entity_id                => l_array_entity_id(hdr_idx)
106686    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
106687    ,p_entity_code              => l_array_entity_code(hdr_idx)
106688    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
106689    ,p_event_id                 => l_array_event_id(hdr_idx)
106690    ,p_event_class_code         => l_array_class_code(hdr_idx)
106691    ,p_event_type_code          => l_array_event_type(hdr_idx)
106692    ,p_event_number             => l_array_event_number(hdr_idx)
106693    ,p_event_date               => l_array_event_date(hdr_idx)
106694    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
106695    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
106696    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
106697    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
106698    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
106699    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
106700    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
106701    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
106702    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
106703    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
106704    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
106705    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
106706    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
106707    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
106708    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
106709 
106710 --
106711 -- set the status of entry to C_VALID (0)
106712 --
106713 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
106714 
106715 --
106716 -- initialize a row for ae header
106717 --
106718 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
106719 
106720 l_event_id := l_array_event_id(hdr_idx);
106721 
106722 --
106723 -- storing the hdr_idx for event. May be used by line cursor.
106724 --
106725 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
106726 
106727 --
106728 -- store sources from header extract. This can be improved to
106732 g_array_event(l_event_id).array_value_num('source_33') := l_array_source_33(hdr_idx);
106729 -- store only those sources from header extract that may be used in lines
106730 --
106731 
106733 g_array_event(l_event_id).array_value_date('source_75') := l_array_source_75(hdr_idx);
106734 
106735 --
106736 -- initilaize the status of ae headers for diffrent balance types
106737 -- the status is initialised to C_NOT_CREATED (2)
106738 --
106739 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
106740 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
106741 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
106742 
106743 --
106744 -- call api to validate and store accounting attributes for header
106745 --
106746 
106747 ------------------------------------------------------------
106748 -- Accrual Reversal : to get date for Standard Source (NONE)
106749 ------------------------------------------------------------
106750 l_acc_rev_gl_date_source := NULL;
106751 
106752      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
106753       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_75');
106754 
106755 
106756 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
106757 
106758 XLA_AE_HEADER_PKG.SetJeCategoryName;
106759 
106760 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
106761 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
106762 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
106763 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
106764 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
106765 
106766 
106767 -- No header level analytical criteria
106768 
106769 --
106770 --accounting attribute enhancement, bug 3612931
106771 --
106772 l_trx_reversal_source := SUBSTR(NULL, 1,30);
106773 
106774 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
106775    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
106776 
106777    xla_accounting_err_pkg.build_message
106778       (p_appli_s_name            => 'XLA'
106779       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
106780       ,p_token_1                 => 'ACCT_ATTR_NAME'
106781       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
106782       ,p_token_2                 => 'PRODUCT_NAME'
106783       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
106784       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
106785       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
106786       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
106787 
106788 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
106789    --
106790    -- following sets the accounting attributes needed to reverse
106791    -- accounting for a distributeion
106792    --
106793    xla_ae_lines_pkg.SetTrxReversalAttrs
106794       (p_event_id              => l_event_id
106795       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
106796       ,p_trx_reversal_source   => l_trx_reversal_source);
106797 
106798 END IF;
106799 
106800 
106801 ----------------------------------------------------------------
106802 -- 4262811 -  update the header statuses to invalid in need be
106803 ----------------------------------------------------------------
106804 --
106805 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
106806 
106807 
106808   -----------------------------------------------
106809   -- No accrual reversal for the event class/type
106810   -----------------------------------------------
106811 ----------------------------------------------------------------
106812 
106813 --
106814 -- this ends the header loop iteration for one bulk fetch
106815 --
106816 END LOOP;
106817 
106818 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
106819 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
106820 
106821 --
106822 -- insert dummy rows into lines gt table that were created due to
106823 -- transaction reversals
106824 --
106825 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
106826    l_result := XLA_AE_LINES_PKG.InsertLines;
106827 END IF;
106828 
106829 --
106830 -- reset the temp_line_num for each set of events fetched from header
106831 -- cursor rather than doing it for each new event in line cursor
106832 -- Bug 3939231
106833 --
106834 xla_ae_lines_pkg.g_temp_line_num := 0;
106835 
106836 
106837 
106838 --
106839 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
106840 --
106841 --
106842 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
106843 
106844       trace
106845          (p_msg      => 'SQL - FETCH line_cur'
106846          ,p_level    => C_LEVEL_STATEMENT
106847          ,p_module   => l_log_module);
106848 
106849 END IF;
106850 --
106851 --
106852 LOOP
106853   --
106854   FETCH line_cur BULK COLLECT INTO
106855         l_array_entity_id
106856       , l_array_legal_entity_id
106857       , l_array_entity_code
106858       , l_array_transaction_num
106859       , l_array_event_id
106860       , l_array_class_code
106861       , l_array_event_type
106862       , l_array_event_number
106863       , l_array_event_date
106864       , l_array_transaction_date
106865       , l_array_reference_num_1
106866       , l_array_reference_num_2
106867       , l_array_reference_num_3
106868       , l_array_reference_num_4
106872       , l_array_reference_char_4
106869       , l_array_reference_char_1
106870       , l_array_reference_char_2
106871       , l_array_reference_char_3
106873       , l_array_reference_date_1
106874       , l_array_reference_date_2
106875       , l_array_reference_date_3
106876       , l_array_reference_date_4
106877       , l_array_event_created_by
106878       , l_array_budgetary_control_flag
106879       , l_array_extract_line_num 
106880       , l_array_source_4
106881       , l_array_source_5
106882       , l_array_source_6
106883       , l_array_source_7
106884       , l_array_source_8
106885       , l_array_source_23
106886       , l_array_source_24
106887       , l_array_source_25
106888       , l_array_source_26
106889       , l_array_source_27
106890       , l_array_source_28
106891       , l_array_source_29
106892       , l_array_source_30
106893       , l_array_source_31
106894       , l_array_source_32
106895       , l_array_source_34
106896       , l_array_source_35
106897       , l_array_source_35_meaning
106898       , l_array_source_36
106899       LIMIT l_rows;
106900 
106901   --
106902   IF (C_LEVEL_EVENT >= g_log_level) THEN
106903             trace
106904                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
106905                ,p_level    => C_LEVEL_EVENT
106906                ,p_module   => l_log_module);
106907   END IF;
106908   --
106909   EXIT WHEN l_array_entity_id.count = 0;
106910 
106911   XLA_AE_LINES_PKG.g_rec_lines := null;
106912 
106913 --
106914 -- Bug 4458708
106915 --
106916 XLA_AE_LINES_PKG.g_LineNumber := 0;
106917 --
106918 --
106919 
106920 FOR Idx IN 1..l_array_event_id.count LOOP
106921    --
106922    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
106923    --
106924    l_event_id := l_array_event_id(idx);  -- 5648433
106925 
106926    --
106927    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
106928    --
106929 
106930    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
106931              (g_array_event(l_event_id).array_value_num('header_index'))
106932          ,'N'
106933          ) <> 'Y'
106934    THEN
106935       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
106936          trace
106937             (p_msg      => 'Trancaction revesal option is not Y '
106938             ,p_level    => C_LEVEL_STATEMENT
106939             ,p_module   => l_log_module);
106940       END IF;
106941 
106942 --
106943 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
106944 --
106945 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
106946 --
106947 -- set event info as cache for other routines to refer event attributes
106948 --
106949 
106950 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
106951    l_previous_event_id := l_event_id;
106952 
106953    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
106954       (p_application_id           => p_application_id
106955       ,p_primary_ledger_id        => p_primary_ledger_id
106956       ,p_base_ledger_id           => p_base_ledger_id
106957       ,p_target_ledger_id         => p_target_ledger_id
106958       ,p_entity_id                => l_array_entity_id(Idx)
106959       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
106960       ,p_entity_code              => l_array_entity_code(Idx)
106961       ,p_transaction_num          => l_array_transaction_num(Idx)
106962       ,p_event_id                 => l_array_event_id(Idx)
106963       ,p_event_class_code         => l_array_class_code(Idx)
106964       ,p_event_type_code          => l_array_event_type(Idx)
106965       ,p_event_number             => l_array_event_number(Idx)
106966       ,p_event_date               => l_array_event_date(Idx)
106967       ,p_transaction_date         => l_array_transaction_date(Idx)
106968       ,p_reference_num_1          => l_array_reference_num_1(Idx)
106969       ,p_reference_num_2          => l_array_reference_num_2(Idx)
106970       ,p_reference_num_3          => l_array_reference_num_3(Idx)
106971       ,p_reference_num_4          => l_array_reference_num_4(Idx)
106972       ,p_reference_char_1         => l_array_reference_char_1(Idx)
106973       ,p_reference_char_2         => l_array_reference_char_2(Idx)
106974       ,p_reference_char_3         => l_array_reference_char_3(Idx)
106975       ,p_reference_char_4         => l_array_reference_char_4(Idx)
106976       ,p_reference_date_1         => l_array_reference_date_1(Idx)
106977       ,p_reference_date_2         => l_array_reference_date_2(Idx)
106978       ,p_reference_date_3         => l_array_reference_date_3(Idx)
106979       ,p_reference_date_4         => l_array_reference_date_4(Idx)
106980       ,p_event_created_by         => l_array_event_created_by(Idx)
106981       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
106982        --
106983 END IF;
106984 
106985 
106986 
106987 --
106988 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
106989 
106990 l_acct_reversal_source := SUBSTR(l_array_source_23(Idx), 1,30);
106991 
106992 IF l_continue_with_lines THEN
106993    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
106994       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
106995 
106996       xla_accounting_err_pkg.build_message
106997          (p_appli_s_name            => 'XLA'
106998          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
106999          ,p_token_1                 => 'LINE_NUMBER'
107000          ,p_value_1                 => l_array_extract_line_num(Idx)
107001          ,p_token_2                 => 'PRODUCT_NAME'
107002          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
107003          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
107007    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
107004          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
107005          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
107006 
107008       --
107009       -- following sets the accounting attributes needed to reverse
107010       -- accounting for a distributeion
107011       --
107012 
107013       --
107014       -- 5217187
107015       --
107016       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
107017       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
107018                                        g_array_event(l_event_id).array_value_num('header_index'));
107019       --
107020       --
107021 
107022       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
107023       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_23(Idx);
107024       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'ACTUAL_UPG_CR_ACCT_CLASS';
107025       l_rec_rev_acct_attrs.array_char_value(3)  := l_array_source_24(Idx);
107026       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'ACTUAL_UPG_CR_CCID';
107027       l_rec_rev_acct_attrs.array_num_value(4)  := TO_NUMBER(l_array_source_7(Idx));
107028       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'ACTUAL_UPG_CR_ENTERED_AMT';
107029       l_rec_rev_acct_attrs.array_num_value(5)  := l_array_source_25(Idx);
107030       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'ACTUAL_UPG_CR_ENTERED_CURR';
107031       l_rec_rev_acct_attrs.array_char_value(6)  := l_array_source_26(Idx);
107032       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'ACTUAL_UPG_CR_LEDGER_AMT';
107033       l_rec_rev_acct_attrs.array_num_value(7)  := l_array_source_27(Idx);
107034       l_rec_rev_acct_attrs.array_acct_attr_code(8) := 'ACTUAL_UPG_CR_XDATE';
107035       l_rec_rev_acct_attrs.array_date_value(8)  := l_array_source_28(Idx);
107036       l_rec_rev_acct_attrs.array_acct_attr_code(9) := 'ACTUAL_UPG_CR_XRATE';
107037       l_rec_rev_acct_attrs.array_num_value(9)  := l_array_source_29(Idx);
107038       l_rec_rev_acct_attrs.array_acct_attr_code(10) := 'ACTUAL_UPG_CR_XRATE_TYPE';
107039       l_rec_rev_acct_attrs.array_char_value(10)  := l_array_source_30(Idx);
107040       l_rec_rev_acct_attrs.array_acct_attr_code(11) := 'ACTUAL_UPG_DR_ACCT_CLASS';
107041       l_rec_rev_acct_attrs.array_char_value(11)  := l_array_source_31(Idx);
107042       l_rec_rev_acct_attrs.array_acct_attr_code(12) := 'ACTUAL_UPG_DR_CCID';
107043       l_rec_rev_acct_attrs.array_num_value(12)  := TO_NUMBER(l_array_source_4(Idx));
107044       l_rec_rev_acct_attrs.array_acct_attr_code(13) := 'ACTUAL_UPG_DR_ENTERED_AMT';
107045       l_rec_rev_acct_attrs.array_num_value(13)  := l_array_source_25(Idx);
107046       l_rec_rev_acct_attrs.array_acct_attr_code(14) := 'ACTUAL_UPG_DR_ENTERED_CURR';
107047       l_rec_rev_acct_attrs.array_char_value(14)  := l_array_source_26(Idx);
107048       l_rec_rev_acct_attrs.array_acct_attr_code(15) := 'ACTUAL_UPG_DR_LEDGER_AMT';
107049       l_rec_rev_acct_attrs.array_num_value(15)  := l_array_source_27(Idx);
107050       l_rec_rev_acct_attrs.array_acct_attr_code(16) := 'ACTUAL_UPG_DR_XDATE';
107051       l_rec_rev_acct_attrs.array_date_value(16)  := l_array_source_28(Idx);
107052       l_rec_rev_acct_attrs.array_acct_attr_code(17) := 'ACTUAL_UPG_DR_XRATE';
107053       l_rec_rev_acct_attrs.array_num_value(17)  := l_array_source_29(Idx);
107054       l_rec_rev_acct_attrs.array_acct_attr_code(18) := 'ACTUAL_UPG_DR_XRATE_TYPE';
107055       l_rec_rev_acct_attrs.array_char_value(18)  := l_array_source_30(Idx);
107056       l_rec_rev_acct_attrs.array_acct_attr_code(19) := 'ACTUAL_UPG_OPTION';
107057       l_rec_rev_acct_attrs.array_char_value(19)  := l_array_source_32(Idx);
107058       l_rec_rev_acct_attrs.array_acct_attr_code(20) := 'DISTRIBUTION_IDENTIFIER_1';
107059       l_rec_rev_acct_attrs.array_num_value(20)  := g_array_event(l_event_id).array_value_num('source_33');
107060       l_rec_rev_acct_attrs.array_acct_attr_code(21) := 'DISTRIBUTION_IDENTIFIER_2';
107061       l_rec_rev_acct_attrs.array_num_value(21)  := l_array_source_34(Idx);
107062       l_rec_rev_acct_attrs.array_acct_attr_code(22) := 'DISTRIBUTION_TYPE';
107063       l_rec_rev_acct_attrs.array_char_value(22)  := l_array_source_35(Idx);
107064       l_rec_rev_acct_attrs.array_acct_attr_code(23) := 'REVERSED_DISTRIBUTION_ID1';
107065       l_rec_rev_acct_attrs.array_num_value(23)  := g_array_event(l_event_id).array_value_num('source_33');
107066       l_rec_rev_acct_attrs.array_acct_attr_code(24) := 'REVERSED_DISTRIBUTION_ID2';
107067       l_rec_rev_acct_attrs.array_num_value(24)  := l_array_source_36(Idx);
107068       l_rec_rev_acct_attrs.array_acct_attr_code(25) := 'REVERSED_DISTRIBUTION_TYPE';
107069       l_rec_rev_acct_attrs.array_char_value(25)  := l_array_source_35(Idx);
107070 
107071 
107072       xla_ae_lines_pkg.SetAcctReversalAttrs
107073          (p_event_id             => l_event_id
107074          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
107075          ,p_calculate_acctd_flag => l_calculate_acctd_flag
107076          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
107077    END IF;
107078 
107079    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
107080        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
107081 
107082 --
107083 AcctLineType_70 (
107084  p_application_id  => p_application_id
107085  ,p_event_id     => l_event_id
107086  ,p_calculate_acctd_flag => l_calculate_acctd_flag
107087  ,p_calculate_g_l_flag => l_calculate_g_l_flag
107088  ,p_actual_flag => l_actual_flag
107089  ,p_balance_type_code => l_balance_type_code
107090  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
107091  
107092  , p_source_4 => l_array_source_4(Idx)
107093  , p_source_5 => l_array_source_5(Idx)
107094  , p_source_6 => l_array_source_6(Idx)
107095  , p_source_7 => l_array_source_7(Idx)
107096  , p_source_23 => l_array_source_23(Idx)
107097  , p_source_24 => l_array_source_24(Idx)
107098  , p_source_25 => l_array_source_25(Idx)
107099  , p_source_26 => l_array_source_26(Idx)
107100  , p_source_27 => l_array_source_27(Idx)
107101  , p_source_28 => l_array_source_28(Idx)
107102  , p_source_29 => l_array_source_29(Idx)
107106  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
107103  , p_source_30 => l_array_source_30(Idx)
107104  , p_source_31 => l_array_source_31(Idx)
107105  , p_source_32 => l_array_source_32(Idx)
107107  , p_source_34 => l_array_source_34(Idx)
107108  , p_source_35 => l_array_source_35(Idx)
107109  , p_source_35_meaning => l_array_source_35_meaning(Idx)
107110  , p_source_36 => l_array_source_36(Idx)
107111  );
107112 If(l_balance_type_code = 'A') THEN
107113   l_actual_gain_loss_ref := l_gain_or_loss_ref;
107114 END IF;
107115 
107116 --
107117 
107118 
107119 --
107120 AcctLineType_85 (
107121  p_application_id  => p_application_id
107122  ,p_event_id     => l_event_id
107123  ,p_calculate_acctd_flag => l_calculate_acctd_flag
107124  ,p_calculate_g_l_flag => l_calculate_g_l_flag
107125  ,p_actual_flag => l_actual_flag
107126  ,p_balance_type_code => l_balance_type_code
107127  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
107128  
107129  , p_source_4 => l_array_source_4(Idx)
107130  , p_source_5 => l_array_source_5(Idx)
107131  , p_source_7 => l_array_source_7(Idx)
107132  , p_source_8 => l_array_source_8(Idx)
107133  , p_source_23 => l_array_source_23(Idx)
107134  , p_source_24 => l_array_source_24(Idx)
107135  , p_source_25 => l_array_source_25(Idx)
107136  , p_source_26 => l_array_source_26(Idx)
107137  , p_source_27 => l_array_source_27(Idx)
107138  , p_source_28 => l_array_source_28(Idx)
107139  , p_source_29 => l_array_source_29(Idx)
107140  , p_source_30 => l_array_source_30(Idx)
107141  , p_source_31 => l_array_source_31(Idx)
107142  , p_source_32 => l_array_source_32(Idx)
107143  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
107144  , p_source_34 => l_array_source_34(Idx)
107145  , p_source_35 => l_array_source_35(Idx)
107146  , p_source_35_meaning => l_array_source_35_meaning(Idx)
107147  , p_source_36 => l_array_source_36(Idx)
107148  );
107149 If(l_balance_type_code = 'A') THEN
107150   l_actual_gain_loss_ref := l_gain_or_loss_ref;
107151 END IF;
107152 
107153 --
107154 
107155 
107156 --
107157 AcctLineType_105 (
107158  p_application_id  => p_application_id
107159  ,p_event_id     => l_event_id
107160  ,p_calculate_acctd_flag => l_calculate_acctd_flag
107161  ,p_calculate_g_l_flag => l_calculate_g_l_flag
107162  ,p_actual_flag => l_actual_flag
107163  ,p_balance_type_code => l_balance_type_code
107164  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
107165  
107166  , p_source_4 => l_array_source_4(Idx)
107167  , p_source_5 => l_array_source_5(Idx)
107168  , p_source_7 => l_array_source_7(Idx)
107169  , p_source_8 => l_array_source_8(Idx)
107170  , p_source_23 => l_array_source_23(Idx)
107171  , p_source_24 => l_array_source_24(Idx)
107172  , p_source_25 => l_array_source_25(Idx)
107173  , p_source_26 => l_array_source_26(Idx)
107174  , p_source_27 => l_array_source_27(Idx)
107175  , p_source_28 => l_array_source_28(Idx)
107176  , p_source_29 => l_array_source_29(Idx)
107177  , p_source_30 => l_array_source_30(Idx)
107178  , p_source_31 => l_array_source_31(Idx)
107179  , p_source_32 => l_array_source_32(Idx)
107180  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
107181  , p_source_34 => l_array_source_34(Idx)
107182  , p_source_35 => l_array_source_35(Idx)
107183  , p_source_35_meaning => l_array_source_35_meaning(Idx)
107184  , p_source_36 => l_array_source_36(Idx)
107185  );
107186 If(l_balance_type_code = 'A') THEN
107187   l_actual_gain_loss_ref := l_gain_or_loss_ref;
107188 END IF;
107189 
107190 --
107191 
107192 
107193 --
107194 AcctLineType_111 (
107195  p_application_id  => p_application_id
107196  ,p_event_id     => l_event_id
107197  ,p_calculate_acctd_flag => l_calculate_acctd_flag
107198  ,p_calculate_g_l_flag => l_calculate_g_l_flag
107199  ,p_actual_flag => l_actual_flag
107200  ,p_balance_type_code => l_balance_type_code
107201  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
107202  
107203  , p_source_4 => l_array_source_4(Idx)
107204  , p_source_5 => l_array_source_5(Idx)
107205  , p_source_6 => l_array_source_6(Idx)
107206  , p_source_7 => l_array_source_7(Idx)
107207  , p_source_23 => l_array_source_23(Idx)
107208  , p_source_24 => l_array_source_24(Idx)
107209  , p_source_25 => l_array_source_25(Idx)
107210  , p_source_26 => l_array_source_26(Idx)
107211  , p_source_27 => l_array_source_27(Idx)
107212  , p_source_28 => l_array_source_28(Idx)
107213  , p_source_29 => l_array_source_29(Idx)
107214  , p_source_30 => l_array_source_30(Idx)
107215  , p_source_31 => l_array_source_31(Idx)
107216  , p_source_32 => l_array_source_32(Idx)
107217  , p_source_33 => g_array_event(l_event_id).array_value_num('source_33')
107218  , p_source_34 => l_array_source_34(Idx)
107219  , p_source_35 => l_array_source_35(Idx)
107220  , p_source_35_meaning => l_array_source_35_meaning(Idx)
107221  , p_source_36 => l_array_source_36(Idx)
107222  );
107223 If(l_balance_type_code = 'A') THEN
107224   l_actual_gain_loss_ref := l_gain_or_loss_ref;
107225 END IF;
107226 
107227 --
107228 
107229       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
107230       -- or secondary ledger that has different currency with primary
107231       -- or alc that is calculated by sla
107232       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
107233             (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'))
107234 
107235 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
107236 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
107237           AND (l_actual_flag = 'A')) THEN
107238         XLA_AE_LINES_PKG.CreateGainOrLossLines(
107239           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
107240          ,p_application_id   => p_application_id
107244          ,p_event_type_code  => C_EVENT_TYPE_CODE
107241          ,p_amb_context_code => 'DEFAULT'
107242          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
107243          ,p_event_class_code => C_EVENT_CLASS_CODE
107245          
107246          ,p_gain_ccid        => -1
107247          ,p_loss_ccid        => -1
107248 
107249          ,p_actual_flag      => l_actual_flag
107250          ,p_enc_flag         => null
107251          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
107252          ,p_enc_g_l_ref      => null
107253          );
107254       END IF;
107255    END IF;
107256 END IF;
107257 
107258    ELSE
107259       --
107260       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
107261       --
107262       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107263          trace
107264             (p_msg      => 'Trancaction revesal option is Y'
107265             ,p_level    => C_LEVEL_STATEMENT
107266             ,p_module   => l_log_module);
107267       END IF;
107268    END IF;
107269 
107270 END LOOP;
107271 l_result := XLA_AE_LINES_PKG.InsertLines ;
107272 end loop;
107273 close line_cur;
107274 
107275 
107276 --
107277 -- insert headers into xla_ae_headers_gt table
107278 --
107279 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
107280 
107281 -- insert into errors table here.
107282 
107283 END LOOP;
107284 
107285 --
107286 -- 4865292
107287 --
107288 -- Compare g_hdr_extract_count with event count in
107289 -- CreateHeadersAndLines.
107290 --
107291 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
107292 
107293 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107294    trace (p_msg     => '# rows extracted from header extract objects '
107295                     || ' (running total): '
107296                     || g_hdr_extract_count
107297          ,p_level   => C_LEVEL_STATEMENT
107298          ,p_module  => l_log_module);
107299 END IF;
107300 
107301 CLOSE header_cur;
107302 --
107303 
107304 --
107305 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107306    trace
107307       (p_msg      => 'END of EventClass_170'
107308       ,p_level    => C_LEVEL_PROCEDURE
107309       ,p_module   => l_log_module);
107310 END IF;
107311 --
107312 RETURN l_result;
107313 EXCEPTION
107314 WHEN xla_exceptions_pkg.application_exception THEN
107315    
107316 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
107317 
107318    
107319 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
107320 
107321    RAISE;
107322 WHEN OTHERS THEN
107323    xla_exceptions_pkg.raise_message
107324       (p_location => 'XLA_00275_AAD_S_000015_PKG.EventClass_170');
107325 END EventClass_170;
107326 --
107327 
107328 --
107329 --+============================================+
107330 --|                                            |
107331 --|  PRIVATE FUNCTION                          |
107332 --|                                            |
107333 --+============================================+
107334 --
107335 FUNCTION CreateHeadersAndLines
107336        (p_application_id         IN NUMBER
107337        ,p_base_ledger_id         IN NUMBER
107338        ,p_target_ledger_id       IN NUMBER
107339        ,p_pad_start_date         IN DATE
107340        ,p_pad_end_date           IN DATE
107341        ,p_primary_ledger_id      IN NUMBER)
107342 RETURN BOOLEAN IS
107343 l_created                   BOOLEAN:=FALSE;
107344 l_event_id                  NUMBER;
107345 l_event_date                DATE;
107346 l_language                  VARCHAR2(30);
107347 l_currency_code             VARCHAR2(30);
107348 l_sla_ledger_id             NUMBER;
107349 l_log_module                VARCHAR2(240);
107350 
107351 BEGIN
107352 --
107353 IF g_log_enabled THEN
107354    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
107355 END IF;
107356 --
107357 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
107358    trace
107359       (p_msg      => 'BEGIN of CreateHeadersAndLines'
107360       ,p_level    => C_LEVEL_PROCEDURE
107361       ,p_module   => l_log_module);
107362 END IF;
107363 
107364 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
107365 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
107366 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
107367 
107368 --
107369 -- initialize array of lines with NULL
107370 --
107371 xla_ae_lines_pkg.SetNullLine;
107372 
107373 --
107374 -- initialize header extract count -- Bug 4865292
107375 --
107376 g_hdr_extract_count:= 0;
107377 
107378 
107379 l_created := EventClass_148(
107380    p_application_id         => p_application_id
107381  , p_base_ledger_id         => p_base_ledger_id
107382  , p_target_ledger_id       => p_target_ledger_id
107383  , p_language               => l_language
107384  , p_currency_code          => l_currency_code
107385  , p_sla_ledger_id          => l_sla_ledger_id
107386  , p_pad_start_date         => p_pad_start_date
107387  , p_pad_end_date           => p_pad_end_date
107388  , p_primary_ledger_id      => p_primary_ledger_id
107389 );
107390 
107391 
107392 
107393      IF ( g_diagnostics_mode ='Y' ) THEN
107394 
107395          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107396           trace
107397               (p_msg      => 'CALL Transaction Objects Diagnostics'
107398               ,p_level    => C_LEVEL_STATEMENT
107399               ,p_module   => l_log_module);
107400 
107401          END IF;
107402 
107403          insert_sources_148(
107404                           p_target_ledger_id => p_target_ledger_id
107405                         , p_language         => l_language
107406                         , p_sla_ledger_id    => l_sla_ledger_id
107410 
107407                         , p_pad_start_date   => p_pad_start_date
107408                         , p_pad_end_date     => p_pad_end_date
107409                           );
107411      END IF;
107412 
107413 l_created := EventClass_149(
107414    p_application_id         => p_application_id
107415  , p_base_ledger_id         => p_base_ledger_id
107416  , p_target_ledger_id       => p_target_ledger_id
107417  , p_language               => l_language
107418  , p_currency_code          => l_currency_code
107419  , p_sla_ledger_id          => l_sla_ledger_id
107420  , p_pad_start_date         => p_pad_start_date
107421  , p_pad_end_date           => p_pad_end_date
107422  , p_primary_ledger_id      => p_primary_ledger_id
107423 );
107424 
107425 
107426 
107427      IF ( g_diagnostics_mode ='Y' ) THEN
107428 
107429          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107430           trace
107431               (p_msg      => 'CALL Transaction Objects Diagnostics'
107432               ,p_level    => C_LEVEL_STATEMENT
107433               ,p_module   => l_log_module);
107434 
107435          END IF;
107436 
107437          insert_sources_149(
107438                           p_target_ledger_id => p_target_ledger_id
107439                         , p_language         => l_language
107440                         , p_sla_ledger_id    => l_sla_ledger_id
107441                         , p_pad_start_date   => p_pad_start_date
107442                         , p_pad_end_date     => p_pad_end_date
107443                           );
107444 
107445      END IF;
107446 
107447 l_created := EventClass_150(
107448    p_application_id         => p_application_id
107449  , p_base_ledger_id         => p_base_ledger_id
107450  , p_target_ledger_id       => p_target_ledger_id
107451  , p_language               => l_language
107452  , p_currency_code          => l_currency_code
107453  , p_sla_ledger_id          => l_sla_ledger_id
107454  , p_pad_start_date         => p_pad_start_date
107455  , p_pad_end_date           => p_pad_end_date
107456  , p_primary_ledger_id      => p_primary_ledger_id
107457 );
107458 
107459 
107460 
107461      IF ( g_diagnostics_mode ='Y' ) THEN
107462 
107463          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107464           trace
107465               (p_msg      => 'CALL Transaction Objects Diagnostics'
107466               ,p_level    => C_LEVEL_STATEMENT
107467               ,p_module   => l_log_module);
107468 
107469          END IF;
107470 
107471          insert_sources_150(
107472                           p_target_ledger_id => p_target_ledger_id
107473                         , p_language         => l_language
107474                         , p_sla_ledger_id    => l_sla_ledger_id
107475                         , p_pad_start_date   => p_pad_start_date
107476                         , p_pad_end_date     => p_pad_end_date
107477                           );
107478 
107479      END IF;
107480 
107481 l_created := EventClass_151(
107482    p_application_id         => p_application_id
107483  , p_base_ledger_id         => p_base_ledger_id
107484  , p_target_ledger_id       => p_target_ledger_id
107485  , p_language               => l_language
107486  , p_currency_code          => l_currency_code
107487  , p_sla_ledger_id          => l_sla_ledger_id
107488  , p_pad_start_date         => p_pad_start_date
107489  , p_pad_end_date           => p_pad_end_date
107490  , p_primary_ledger_id      => p_primary_ledger_id
107491 );
107492 
107493 
107494 
107495      IF ( g_diagnostics_mode ='Y' ) THEN
107496 
107497          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107498           trace
107499               (p_msg      => 'CALL Transaction Objects Diagnostics'
107500               ,p_level    => C_LEVEL_STATEMENT
107501               ,p_module   => l_log_module);
107502 
107503          END IF;
107504 
107505          insert_sources_151(
107506                           p_target_ledger_id => p_target_ledger_id
107507                         , p_language         => l_language
107508                         , p_sla_ledger_id    => l_sla_ledger_id
107509                         , p_pad_start_date   => p_pad_start_date
107510                         , p_pad_end_date     => p_pad_end_date
107511                           );
107512 
107513      END IF;
107514 
107515 l_created := EventClass_152(
107516    p_application_id         => p_application_id
107517  , p_base_ledger_id         => p_base_ledger_id
107518  , p_target_ledger_id       => p_target_ledger_id
107519  , p_language               => l_language
107520  , p_currency_code          => l_currency_code
107521  , p_sla_ledger_id          => l_sla_ledger_id
107522  , p_pad_start_date         => p_pad_start_date
107523  , p_pad_end_date           => p_pad_end_date
107524  , p_primary_ledger_id      => p_primary_ledger_id
107525 );
107526 
107527 
107528 
107529      IF ( g_diagnostics_mode ='Y' ) THEN
107530 
107531          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107532           trace
107533               (p_msg      => 'CALL Transaction Objects Diagnostics'
107534               ,p_level    => C_LEVEL_STATEMENT
107535               ,p_module   => l_log_module);
107536 
107537          END IF;
107538 
107539          insert_sources_152(
107540                           p_target_ledger_id => p_target_ledger_id
107541                         , p_language         => l_language
107542                         , p_sla_ledger_id    => l_sla_ledger_id
107543                         , p_pad_start_date   => p_pad_start_date
107544                         , p_pad_end_date     => p_pad_end_date
107545                           );
107546 
107547      END IF;
107548 
107549 l_created := EventClass_153(
107550    p_application_id         => p_application_id
107551  , p_base_ledger_id         => p_base_ledger_id
107552  , p_target_ledger_id       => p_target_ledger_id
107556  , p_pad_start_date         => p_pad_start_date
107553  , p_language               => l_language
107554  , p_currency_code          => l_currency_code
107555  , p_sla_ledger_id          => l_sla_ledger_id
107557  , p_pad_end_date           => p_pad_end_date
107558  , p_primary_ledger_id      => p_primary_ledger_id
107559 );
107560 
107561 
107562 
107563      IF ( g_diagnostics_mode ='Y' ) THEN
107564 
107565          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107566           trace
107567               (p_msg      => 'CALL Transaction Objects Diagnostics'
107568               ,p_level    => C_LEVEL_STATEMENT
107569               ,p_module   => l_log_module);
107570 
107571          END IF;
107572 
107573          insert_sources_153(
107574                           p_target_ledger_id => p_target_ledger_id
107575                         , p_language         => l_language
107576                         , p_sla_ledger_id    => l_sla_ledger_id
107577                         , p_pad_start_date   => p_pad_start_date
107578                         , p_pad_end_date     => p_pad_end_date
107579                           );
107580 
107581      END IF;
107582 
107583 l_created := EventClass_154(
107584    p_application_id         => p_application_id
107585  , p_base_ledger_id         => p_base_ledger_id
107586  , p_target_ledger_id       => p_target_ledger_id
107587  , p_language               => l_language
107588  , p_currency_code          => l_currency_code
107589  , p_sla_ledger_id          => l_sla_ledger_id
107590  , p_pad_start_date         => p_pad_start_date
107591  , p_pad_end_date           => p_pad_end_date
107592  , p_primary_ledger_id      => p_primary_ledger_id
107593 );
107594 
107595 
107596 
107597      IF ( g_diagnostics_mode ='Y' ) THEN
107598 
107599          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107600           trace
107601               (p_msg      => 'CALL Transaction Objects Diagnostics'
107602               ,p_level    => C_LEVEL_STATEMENT
107603               ,p_module   => l_log_module);
107604 
107605          END IF;
107606 
107607          insert_sources_154(
107608                           p_target_ledger_id => p_target_ledger_id
107609                         , p_language         => l_language
107610                         , p_sla_ledger_id    => l_sla_ledger_id
107611                         , p_pad_start_date   => p_pad_start_date
107612                         , p_pad_end_date     => p_pad_end_date
107613                           );
107614 
107615      END IF;
107616 
107617 l_created := EventClass_155(
107618    p_application_id         => p_application_id
107619  , p_base_ledger_id         => p_base_ledger_id
107620  , p_target_ledger_id       => p_target_ledger_id
107621  , p_language               => l_language
107622  , p_currency_code          => l_currency_code
107623  , p_sla_ledger_id          => l_sla_ledger_id
107624  , p_pad_start_date         => p_pad_start_date
107625  , p_pad_end_date           => p_pad_end_date
107626  , p_primary_ledger_id      => p_primary_ledger_id
107627 );
107628 
107629 
107630 
107631      IF ( g_diagnostics_mode ='Y' ) THEN
107632 
107633          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107634           trace
107635               (p_msg      => 'CALL Transaction Objects Diagnostics'
107636               ,p_level    => C_LEVEL_STATEMENT
107637               ,p_module   => l_log_module);
107638 
107639          END IF;
107640 
107641          insert_sources_155(
107642                           p_target_ledger_id => p_target_ledger_id
107643                         , p_language         => l_language
107644                         , p_sla_ledger_id    => l_sla_ledger_id
107645                         , p_pad_start_date   => p_pad_start_date
107646                         , p_pad_end_date     => p_pad_end_date
107647                           );
107648 
107649      END IF;
107650 
107651 l_created := EventClass_156(
107652    p_application_id         => p_application_id
107653  , p_base_ledger_id         => p_base_ledger_id
107654  , p_target_ledger_id       => p_target_ledger_id
107655  , p_language               => l_language
107656  , p_currency_code          => l_currency_code
107657  , p_sla_ledger_id          => l_sla_ledger_id
107658  , p_pad_start_date         => p_pad_start_date
107659  , p_pad_end_date           => p_pad_end_date
107660  , p_primary_ledger_id      => p_primary_ledger_id
107661 );
107662 
107663 
107664 
107665      IF ( g_diagnostics_mode ='Y' ) THEN
107666 
107667          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107668           trace
107669               (p_msg      => 'CALL Transaction Objects Diagnostics'
107670               ,p_level    => C_LEVEL_STATEMENT
107671               ,p_module   => l_log_module);
107672 
107673          END IF;
107674 
107675          insert_sources_156(
107676                           p_target_ledger_id => p_target_ledger_id
107677                         , p_language         => l_language
107678                         , p_sla_ledger_id    => l_sla_ledger_id
107679                         , p_pad_start_date   => p_pad_start_date
107680                         , p_pad_end_date     => p_pad_end_date
107681                           );
107682 
107683      END IF;
107684 
107685 l_created := EventClass_157(
107686    p_application_id         => p_application_id
107687  , p_base_ledger_id         => p_base_ledger_id
107688  , p_target_ledger_id       => p_target_ledger_id
107689  , p_language               => l_language
107690  , p_currency_code          => l_currency_code
107691  , p_sla_ledger_id          => l_sla_ledger_id
107692  , p_pad_start_date         => p_pad_start_date
107693  , p_pad_end_date           => p_pad_end_date
107694  , p_primary_ledger_id      => p_primary_ledger_id
107695 );
107696 
107697 
107698 
107699      IF ( g_diagnostics_mode ='Y' ) THEN
107700 
107704               ,p_level    => C_LEVEL_STATEMENT
107701          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107702           trace
107703               (p_msg      => 'CALL Transaction Objects Diagnostics'
107705               ,p_module   => l_log_module);
107706 
107707          END IF;
107708 
107709          insert_sources_157(
107710                           p_target_ledger_id => p_target_ledger_id
107711                         , p_language         => l_language
107712                         , p_sla_ledger_id    => l_sla_ledger_id
107713                         , p_pad_start_date   => p_pad_start_date
107714                         , p_pad_end_date     => p_pad_end_date
107715                           );
107716 
107717      END IF;
107718 
107719 l_created := EventClass_158(
107720    p_application_id         => p_application_id
107721  , p_base_ledger_id         => p_base_ledger_id
107722  , p_target_ledger_id       => p_target_ledger_id
107723  , p_language               => l_language
107724  , p_currency_code          => l_currency_code
107725  , p_sla_ledger_id          => l_sla_ledger_id
107726  , p_pad_start_date         => p_pad_start_date
107727  , p_pad_end_date           => p_pad_end_date
107728  , p_primary_ledger_id      => p_primary_ledger_id
107729 );
107730 
107731 
107732 
107733      IF ( g_diagnostics_mode ='Y' ) THEN
107734 
107735          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107736           trace
107737               (p_msg      => 'CALL Transaction Objects Diagnostics'
107738               ,p_level    => C_LEVEL_STATEMENT
107739               ,p_module   => l_log_module);
107740 
107741          END IF;
107742 
107743          insert_sources_158(
107744                           p_target_ledger_id => p_target_ledger_id
107745                         , p_language         => l_language
107746                         , p_sla_ledger_id    => l_sla_ledger_id
107747                         , p_pad_start_date   => p_pad_start_date
107748                         , p_pad_end_date     => p_pad_end_date
107749                           );
107750 
107751      END IF;
107752 
107753 l_created := EventClass_159(
107754    p_application_id         => p_application_id
107755  , p_base_ledger_id         => p_base_ledger_id
107756  , p_target_ledger_id       => p_target_ledger_id
107757  , p_language               => l_language
107758  , p_currency_code          => l_currency_code
107759  , p_sla_ledger_id          => l_sla_ledger_id
107760  , p_pad_start_date         => p_pad_start_date
107761  , p_pad_end_date           => p_pad_end_date
107762  , p_primary_ledger_id      => p_primary_ledger_id
107763 );
107764 
107765 
107766 
107767      IF ( g_diagnostics_mode ='Y' ) THEN
107768 
107769          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107770           trace
107771               (p_msg      => 'CALL Transaction Objects Diagnostics'
107772               ,p_level    => C_LEVEL_STATEMENT
107773               ,p_module   => l_log_module);
107774 
107775          END IF;
107776 
107777          insert_sources_159(
107778                           p_target_ledger_id => p_target_ledger_id
107779                         , p_language         => l_language
107780                         , p_sla_ledger_id    => l_sla_ledger_id
107781                         , p_pad_start_date   => p_pad_start_date
107782                         , p_pad_end_date     => p_pad_end_date
107783                           );
107784 
107785      END IF;
107786 
107787 l_created := EventClass_160(
107788    p_application_id         => p_application_id
107789  , p_base_ledger_id         => p_base_ledger_id
107790  , p_target_ledger_id       => p_target_ledger_id
107791  , p_language               => l_language
107792  , p_currency_code          => l_currency_code
107793  , p_sla_ledger_id          => l_sla_ledger_id
107794  , p_pad_start_date         => p_pad_start_date
107795  , p_pad_end_date           => p_pad_end_date
107796  , p_primary_ledger_id      => p_primary_ledger_id
107797 );
107798 
107799 
107800 
107801      IF ( g_diagnostics_mode ='Y' ) THEN
107802 
107803          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107804           trace
107805               (p_msg      => 'CALL Transaction Objects Diagnostics'
107806               ,p_level    => C_LEVEL_STATEMENT
107807               ,p_module   => l_log_module);
107808 
107809          END IF;
107810 
107811          insert_sources_160(
107812                           p_target_ledger_id => p_target_ledger_id
107813                         , p_language         => l_language
107814                         , p_sla_ledger_id    => l_sla_ledger_id
107815                         , p_pad_start_date   => p_pad_start_date
107816                         , p_pad_end_date     => p_pad_end_date
107817                           );
107818 
107819      END IF;
107820 
107821 l_created := EventClass_161(
107822    p_application_id         => p_application_id
107823  , p_base_ledger_id         => p_base_ledger_id
107824  , p_target_ledger_id       => p_target_ledger_id
107825  , p_language               => l_language
107826  , p_currency_code          => l_currency_code
107827  , p_sla_ledger_id          => l_sla_ledger_id
107828  , p_pad_start_date         => p_pad_start_date
107829  , p_pad_end_date           => p_pad_end_date
107830  , p_primary_ledger_id      => p_primary_ledger_id
107831 );
107832 
107833 
107834 
107835      IF ( g_diagnostics_mode ='Y' ) THEN
107836 
107837          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107838           trace
107839               (p_msg      => 'CALL Transaction Objects Diagnostics'
107840               ,p_level    => C_LEVEL_STATEMENT
107841               ,p_module   => l_log_module);
107842 
107843          END IF;
107844 
107845          insert_sources_161(
107846                           p_target_ledger_id => p_target_ledger_id
107850                         , p_pad_end_date     => p_pad_end_date
107847                         , p_language         => l_language
107848                         , p_sla_ledger_id    => l_sla_ledger_id
107849                         , p_pad_start_date   => p_pad_start_date
107851                           );
107852 
107853      END IF;
107854 
107855 l_created := EventClass_162(
107856    p_application_id         => p_application_id
107857  , p_base_ledger_id         => p_base_ledger_id
107858  , p_target_ledger_id       => p_target_ledger_id
107859  , p_language               => l_language
107860  , p_currency_code          => l_currency_code
107861  , p_sla_ledger_id          => l_sla_ledger_id
107862  , p_pad_start_date         => p_pad_start_date
107863  , p_pad_end_date           => p_pad_end_date
107864  , p_primary_ledger_id      => p_primary_ledger_id
107865 );
107866 
107867 
107868 
107869      IF ( g_diagnostics_mode ='Y' ) THEN
107870 
107871          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107872           trace
107873               (p_msg      => 'CALL Transaction Objects Diagnostics'
107874               ,p_level    => C_LEVEL_STATEMENT
107875               ,p_module   => l_log_module);
107876 
107877          END IF;
107878 
107879          insert_sources_162(
107880                           p_target_ledger_id => p_target_ledger_id
107881                         , p_language         => l_language
107882                         , p_sla_ledger_id    => l_sla_ledger_id
107883                         , p_pad_start_date   => p_pad_start_date
107884                         , p_pad_end_date     => p_pad_end_date
107885                           );
107886 
107887      END IF;
107888 
107889 l_created := EventClass_163(
107890    p_application_id         => p_application_id
107891  , p_base_ledger_id         => p_base_ledger_id
107892  , p_target_ledger_id       => p_target_ledger_id
107893  , p_language               => l_language
107894  , p_currency_code          => l_currency_code
107895  , p_sla_ledger_id          => l_sla_ledger_id
107896  , p_pad_start_date         => p_pad_start_date
107897  , p_pad_end_date           => p_pad_end_date
107898  , p_primary_ledger_id      => p_primary_ledger_id
107899 );
107900 
107901 
107902 
107903      IF ( g_diagnostics_mode ='Y' ) THEN
107904 
107905          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107906           trace
107907               (p_msg      => 'CALL Transaction Objects Diagnostics'
107908               ,p_level    => C_LEVEL_STATEMENT
107909               ,p_module   => l_log_module);
107910 
107911          END IF;
107912 
107913          insert_sources_163(
107914                           p_target_ledger_id => p_target_ledger_id
107915                         , p_language         => l_language
107916                         , p_sla_ledger_id    => l_sla_ledger_id
107917                         , p_pad_start_date   => p_pad_start_date
107918                         , p_pad_end_date     => p_pad_end_date
107919                           );
107920 
107921      END IF;
107922 
107923 l_created := EventClass_164(
107924    p_application_id         => p_application_id
107925  , p_base_ledger_id         => p_base_ledger_id
107926  , p_target_ledger_id       => p_target_ledger_id
107927  , p_language               => l_language
107928  , p_currency_code          => l_currency_code
107929  , p_sla_ledger_id          => l_sla_ledger_id
107930  , p_pad_start_date         => p_pad_start_date
107931  , p_pad_end_date           => p_pad_end_date
107932  , p_primary_ledger_id      => p_primary_ledger_id
107933 );
107934 
107935 
107936 
107937      IF ( g_diagnostics_mode ='Y' ) THEN
107938 
107939          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107940           trace
107941               (p_msg      => 'CALL Transaction Objects Diagnostics'
107942               ,p_level    => C_LEVEL_STATEMENT
107943               ,p_module   => l_log_module);
107944 
107945          END IF;
107946 
107947          insert_sources_164(
107948                           p_target_ledger_id => p_target_ledger_id
107949                         , p_language         => l_language
107950                         , p_sla_ledger_id    => l_sla_ledger_id
107951                         , p_pad_start_date   => p_pad_start_date
107952                         , p_pad_end_date     => p_pad_end_date
107953                           );
107954 
107955      END IF;
107956 
107957 l_created := EventClass_165(
107958    p_application_id         => p_application_id
107959  , p_base_ledger_id         => p_base_ledger_id
107960  , p_target_ledger_id       => p_target_ledger_id
107961  , p_language               => l_language
107962  , p_currency_code          => l_currency_code
107963  , p_sla_ledger_id          => l_sla_ledger_id
107964  , p_pad_start_date         => p_pad_start_date
107965  , p_pad_end_date           => p_pad_end_date
107966  , p_primary_ledger_id      => p_primary_ledger_id
107967 );
107968 
107969 
107970 
107971      IF ( g_diagnostics_mode ='Y' ) THEN
107972 
107973          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
107974           trace
107975               (p_msg      => 'CALL Transaction Objects Diagnostics'
107976               ,p_level    => C_LEVEL_STATEMENT
107977               ,p_module   => l_log_module);
107978 
107979          END IF;
107980 
107981          insert_sources_165(
107982                           p_target_ledger_id => p_target_ledger_id
107983                         , p_language         => l_language
107984                         , p_sla_ledger_id    => l_sla_ledger_id
107985                         , p_pad_start_date   => p_pad_start_date
107986                         , p_pad_end_date     => p_pad_end_date
107987                           );
107988 
107989      END IF;
107990 
107991 l_created := EventClass_166(
107992    p_application_id         => p_application_id
107996  , p_currency_code          => l_currency_code
107993  , p_base_ledger_id         => p_base_ledger_id
107994  , p_target_ledger_id       => p_target_ledger_id
107995  , p_language               => l_language
107997  , p_sla_ledger_id          => l_sla_ledger_id
107998  , p_pad_start_date         => p_pad_start_date
107999  , p_pad_end_date           => p_pad_end_date
108000  , p_primary_ledger_id      => p_primary_ledger_id
108001 );
108002 
108003 
108004 
108005      IF ( g_diagnostics_mode ='Y' ) THEN
108006 
108007          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108008           trace
108009               (p_msg      => 'CALL Transaction Objects Diagnostics'
108010               ,p_level    => C_LEVEL_STATEMENT
108011               ,p_module   => l_log_module);
108012 
108013          END IF;
108014 
108015          insert_sources_166(
108016                           p_target_ledger_id => p_target_ledger_id
108017                         , p_language         => l_language
108018                         , p_sla_ledger_id    => l_sla_ledger_id
108019                         , p_pad_start_date   => p_pad_start_date
108020                         , p_pad_end_date     => p_pad_end_date
108021                           );
108022 
108023      END IF;
108024 
108025 l_created := EventClass_167(
108026    p_application_id         => p_application_id
108027  , p_base_ledger_id         => p_base_ledger_id
108028  , p_target_ledger_id       => p_target_ledger_id
108029  , p_language               => l_language
108030  , p_currency_code          => l_currency_code
108031  , p_sla_ledger_id          => l_sla_ledger_id
108032  , p_pad_start_date         => p_pad_start_date
108033  , p_pad_end_date           => p_pad_end_date
108034  , p_primary_ledger_id      => p_primary_ledger_id
108035 );
108036 
108037 
108038 
108039      IF ( g_diagnostics_mode ='Y' ) THEN
108040 
108041          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108042           trace
108043               (p_msg      => 'CALL Transaction Objects Diagnostics'
108044               ,p_level    => C_LEVEL_STATEMENT
108045               ,p_module   => l_log_module);
108046 
108047          END IF;
108048 
108049          insert_sources_167(
108050                           p_target_ledger_id => p_target_ledger_id
108051                         , p_language         => l_language
108052                         , p_sla_ledger_id    => l_sla_ledger_id
108053                         , p_pad_start_date   => p_pad_start_date
108054                         , p_pad_end_date     => p_pad_end_date
108055                           );
108056 
108057      END IF;
108058 
108059 l_created := EventClass_168(
108060    p_application_id         => p_application_id
108061  , p_base_ledger_id         => p_base_ledger_id
108062  , p_target_ledger_id       => p_target_ledger_id
108063  , p_language               => l_language
108064  , p_currency_code          => l_currency_code
108065  , p_sla_ledger_id          => l_sla_ledger_id
108066  , p_pad_start_date         => p_pad_start_date
108067  , p_pad_end_date           => p_pad_end_date
108068  , p_primary_ledger_id      => p_primary_ledger_id
108069 );
108070 
108071 
108072 
108073      IF ( g_diagnostics_mode ='Y' ) THEN
108074 
108075          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108076           trace
108077               (p_msg      => 'CALL Transaction Objects Diagnostics'
108078               ,p_level    => C_LEVEL_STATEMENT
108079               ,p_module   => l_log_module);
108080 
108081          END IF;
108082 
108083          insert_sources_168(
108084                           p_target_ledger_id => p_target_ledger_id
108085                         , p_language         => l_language
108086                         , p_sla_ledger_id    => l_sla_ledger_id
108087                         , p_pad_start_date   => p_pad_start_date
108088                         , p_pad_end_date     => p_pad_end_date
108089                           );
108090 
108091      END IF;
108092 
108093 l_created := EventClass_169(
108094    p_application_id         => p_application_id
108095  , p_base_ledger_id         => p_base_ledger_id
108096  , p_target_ledger_id       => p_target_ledger_id
108097  , p_language               => l_language
108098  , p_currency_code          => l_currency_code
108099  , p_sla_ledger_id          => l_sla_ledger_id
108100  , p_pad_start_date         => p_pad_start_date
108101  , p_pad_end_date           => p_pad_end_date
108102  , p_primary_ledger_id      => p_primary_ledger_id
108103 );
108104 
108105 
108106 
108107      IF ( g_diagnostics_mode ='Y' ) THEN
108108 
108109          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108110           trace
108111               (p_msg      => 'CALL Transaction Objects Diagnostics'
108112               ,p_level    => C_LEVEL_STATEMENT
108113               ,p_module   => l_log_module);
108114 
108115          END IF;
108116 
108117          insert_sources_169(
108118                           p_target_ledger_id => p_target_ledger_id
108119                         , p_language         => l_language
108120                         , p_sla_ledger_id    => l_sla_ledger_id
108121                         , p_pad_start_date   => p_pad_start_date
108122                         , p_pad_end_date     => p_pad_end_date
108123                           );
108124 
108125      END IF;
108126 
108127 l_created := EventClass_170(
108128    p_application_id         => p_application_id
108129  , p_base_ledger_id         => p_base_ledger_id
108130  , p_target_ledger_id       => p_target_ledger_id
108131  , p_language               => l_language
108132  , p_currency_code          => l_currency_code
108133  , p_sla_ledger_id          => l_sla_ledger_id
108134  , p_pad_start_date         => p_pad_start_date
108135  , p_pad_end_date           => p_pad_end_date
108136  , p_primary_ledger_id      => p_primary_ledger_id
108137 );
108138 
108142 
108139 
108140 
108141      IF ( g_diagnostics_mode ='Y' ) THEN
108143          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108144           trace
108145               (p_msg      => 'CALL Transaction Objects Diagnostics'
108146               ,p_level    => C_LEVEL_STATEMENT
108147               ,p_module   => l_log_module);
108148 
108149          END IF;
108150 
108151          insert_sources_170(
108152                           p_target_ledger_id => p_target_ledger_id
108153                         , p_language         => l_language
108154                         , p_sla_ledger_id    => l_sla_ledger_id
108155                         , p_pad_start_date   => p_pad_start_date
108156                         , p_pad_end_date     => p_pad_end_date
108157                           );
108158 
108159      END IF;
108160 
108161 
108162  --
108163  -- Bug 4865292
108164  -- When the number of events and that of header extract do not match,
108165  -- set the no header extract flag to indicate there are some issues
108166  -- in header extract.
108167  --
108168  -- Event count context is set in xla_accounting_pkg.unit_processor.
108169  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
108170  -- to report it as a general error.
108171  --
108172  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
108173  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
108174 
108175      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108176         trace
108177           (p_msg      => '# of extracted headers and events does not match'
108178           ,p_level    => C_LEVEL_STATEMENT
108179           ,p_module   => l_log_module);
108180 
108181         trace
108182           (p_msg      => '# of extracted headers: '
108183                          ||g_hdr_extract_count
108184           ,p_level    => C_LEVEL_STATEMENT
108185           ,p_module   => l_log_module);
108186 
108187         trace
108188           (p_msg      => '# of events in xla_events_gt: '
108189                          ||xla_context_pkg.get_event_count_context
108190           ,p_level    => C_LEVEL_STATEMENT
108191           ,p_module   => l_log_module);
108192 
108193         trace
108194           (p_msg      => 'Event No Header Extract Context: '
108195                          ||xla_context_pkg.get_event_nohdr_context
108196           ,p_level    => C_LEVEL_STATEMENT
108197           ,p_module   => l_log_module);
108198 
108199      END IF;
108200 
108201 
108202      xla_context_pkg.set_event_nohdr_context
108203        (p_nohdr_extract_flag => 'Y'
108204        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
108205 
108206      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108207         trace
108208           (p_msg      => 'No Header Extract Flag is set to Y'
108209           ,p_level    => C_LEVEL_STATEMENT
108210           ,p_module   => l_log_module);
108211      END IF;
108212 
108213  END IF;
108214 
108215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108216    trace
108217       (p_msg      => 'END of CreateHeadersAndLines'
108218       ,p_level    => C_LEVEL_PROCEDURE
108219       ,p_module   => l_log_module);
108220 END IF;
108221 
108222 RETURN l_created;
108223 EXCEPTION
108224 WHEN xla_exceptions_pkg.application_exception THEN
108225    RAISE;
108226 WHEN OTHERS THEN
108227    xla_exceptions_pkg.raise_message
108228       (p_location => 'XLA_00275_AAD_S_000015_PKG.CreateHeadersAndLines');
108229 END CreateHeadersAndLines;
108230 --
108231 --
108232 
108233 --
108234 --+============================================+
108235 --|                                            |
108236 --|  PUBLIC FUNCTION                           |
108237 --|                                            |
108238 --+============================================+
108239 --
108240 FUNCTION CreateJournalEntries
108241        (p_application_id         IN NUMBER
108242        ,p_base_ledger_id         IN NUMBER
108243        ,p_pad_start_date         IN DATE
108244        ,p_pad_end_date           IN DATE
108245        ,p_primary_ledger_id      IN NUMBER)
108246 RETURN NUMBER IS
108247 l_log_module                   VARCHAR2(240);
108248 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
108249 l_temp_result                  BOOLEAN;
108250 l_result                       NUMBER;
108251 BEGIN
108252 --
108253 IF g_log_enabled THEN
108254    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
108255 END IF;
108256 --
108257 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108258    trace
108259       (p_msg      => 'BEGIN of CreateJournalEntries'||
108260                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
108261       ,p_level    => C_LEVEL_PROCEDURE
108262       ,p_module   => l_log_module);
108263 
108264 END IF;
108265 
108266 --
108267 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
108268 
108269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
108270    trace
108271       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
108272       ,p_level    => C_LEVEL_STATEMENT
108273       ,p_module   => l_log_module);
108274 END IF;
108275 --
108276 xla_ae_journal_entry_pkg.SetProductAcctDefinition
108277    (p_product_rule_code      => 'FV_PROJECTS_AAD'
108278    ,p_product_rule_type_code => 'S'
108279    ,p_product_rule_version   => ''
108280    ,p_product_rule_name      => 'Federal Projects AAD'
108281    ,p_amb_context_code       => 'DEFAULT'
108282    );
108283 
108284 l_array_ledgers :=
108285    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
108286       (p_base_ledger_id  => p_base_ledger_id);
108287 
108288 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
108289    l_temp_result :=
108290       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
108291          (p_application_id           => p_application_id
108295          ,p_pad_start_date           => p_pad_start_date
108292          ,p_base_ledger_id           => p_base_ledger_id
108293          ,p_target_ledger_id         => l_array_ledgers(Idx)
108294          ,p_primary_ledger_id        => p_primary_ledger_id
108296          ,p_pad_end_date             => p_pad_end_date);
108297 
108298    l_temp_result :=
108299       l_temp_result AND
108300       CreateHeadersAndLines
108301          (p_application_id             => p_application_id
108302          ,p_base_ledger_id             => p_base_ledger_id
108303          ,p_target_ledger_id           => l_array_ledgers(Idx)
108304          ,p_pad_start_date             => p_pad_start_date
108305          ,p_pad_end_date               => p_pad_end_date
108306          ,p_primary_ledger_id          => p_primary_ledger_id
108307          );
108308 END LOOP;
108309 
108310 
108311 IF (g_diagnostics_mode = 'Y' AND
108312     C_LEVEL_UNEXPECTED >= g_log_level AND
108313     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
108314 
108315    xla_accounting_dump_pkg.acctg_event_extract_log(
108316     p_application_id  => p_application_id
108317     ,p_request_id     => xla_environment_pkg.g_Req_Id
108318    );
108319 
108320 END IF;
108321 
108322 CASE l_temp_result
108323   WHEN TRUE THEN l_result := 0;
108324   ELSE l_result := 2;
108325 END CASE;
108326 
108327 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108328    trace
108329       (p_msg      => 'return value. = '||TO_CHAR(l_result)
108330       ,p_level    => C_LEVEL_PROCEDURE
108331       ,p_module   => l_log_module);
108332    trace
108333       (p_msg      => 'END of CreateJournalEntries '
108334       ,p_level    => C_LEVEL_PROCEDURE
108335       ,p_module   => l_log_module);
108336 END IF;
108337 
108338 RETURN l_result;
108339 EXCEPTION
108340 WHEN xla_exceptions_pkg.application_exception THEN
108341    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108342    trace
108343       (p_msg      => 'ERROR. = '||sqlerrm
108344       ,p_level    => C_LEVEL_PROCEDURE
108345       ,p_module   => l_log_module);
108346    END IF;
108347    RAISE;
108348 WHEN OTHERS THEN
108349    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
108350    trace
108351       (p_msg      => 'ERROR. = '||sqlerrm
108352       ,p_level    => C_LEVEL_PROCEDURE
108353       ,p_module   => l_log_module);
108354    END IF;
108355    xla_exceptions_pkg.raise_message
108356       (p_location => 'XLA_00275_AAD_S_000015_PKG.CreateJournalEntries');
108357 END CreateJournalEntries;
108358 --
108359 --=============================================================================
108360 --
108361 --
108362 --
108363 --
108364 --
108365 --
108366 --
108367 --
108368 --
108369 --
108370 --
108371 --
108372 --
108373 --
108374 --
108375 --
108376 --
108377 --
108378 --
108379 --
108380 --
108381 --
108382 --=============================================================================
108383 --=============================================================================
108384 --          *********** Initialization routine **********
108385 --=============================================================================
108386 
108387 BEGIN
108388    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
108389    g_log_enabled    := fnd_log.test
108390                           (log_level  => g_log_level
108391                           ,module     => C_DEFAULT_MODULE);
108392 
108393    IF NOT g_log_enabled  THEN
108394       g_log_level := C_LEVEL_LOG_DISABLED;
108395    END IF;
108396 --
108397 END XLA_00275_AAD_S_000015_PKG;
108398 --